Definování technického profilu vlastní chyby OAuth2 ve vlastních zásadách Azure Active Directory B2C
Tento článek popisuje, jak zpracovat vlastní chybu OAuth2 pomocí Azure Active Directory B2C (Azure AD B2C). Tento technický profil použijte, pokud se v rámci zásad nepovede nějaká logika. Technický profil vrátí chybu aplikace předávající strany OAuth2 nebo OpenId Connect. Podívejte se na živou ukázku vlastního technického profilu chyby OAuth2.
Zpracování vlastní chybové zprávy OAuth2:
- Definujte technický profil chyby OAuth2.
- Nastavte kód chyby a deklarace deklarací chybových zpráv.
- Na cestě uživatele volejte technický profil chyby OAuth2.
Chyba OAuth2
Chyba se vrátí s následujícími daty:
-
chyba -
access_denied
-
error_description – chybová zpráva používající konvenci
AAD_Custom_<errorCode>: <errorMessage>
. - ID korelace – ID korelace Azure AD B2C.
- Časové razítko – časové razítko chyby.
Následující příklad ukazuje vlastní chybovou https://jwt.ms zprávu, která se vrátí do aplikace:
https://jwt.ms/#error=access_denied&error_description=AAD_Custom_1234%3a+My+custom+error+message%0d%0aCorrelation+ID%3a+233bf9bd-747a-4800-9062-6236f3f69a47%0d%0aTimestamp%3a+2021-03-25+14%3a01%3a23Z%0d%0a
Protokol
Atribut Name elementu Protocol musí být nastaven na OAuth2
.
Nastavte OutputTokenFormat element na OAuth2Error
.
Následující příklad ukazuje technický profil pro ReturnOAuth2Error
:
<!--
<ClaimsProviders> -->
<ClaimsProvider>
<DisplayName>Token Issuer</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="ReturnOAuth2Error">
<DisplayName>Return OAuth2 error</DisplayName>
<Protocol Name="OAuth2" />
<OutputTokenFormat>OAuth2Error</OutputTokenFormat>
<CryptographicKeys>
<Key Id="issuer_secret" StorageReferenceId="B2C_1A_TokenSigningKeyContainer" />
</CryptographicKeys>
<InputClaims>
<InputClaim ClaimTypeReferenceId="errorCode" />
<InputClaim ClaimTypeReferenceId="errorMessage" />
</InputClaims>
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
<!--
</ClaimsProviders> -->
Definování transformace deklarací identity pro generování vlastních hodnot kódu chyby a chybové zprávy
Pomocí těchto kroků vygenerujte vlastní hodnoty kódu chyby a chybové zprávy:
ClaimsTransformations
Vyhledejte prvek a přidejte do něj následující kód.<!-- <ClaimsTransformations> --> <ClaimsTransformation Id="GenerateErrorCode" TransformationMethod="CreateStringClaim"> <InputParameters> <InputParameter Id="value" DataType="string" Value="Error_001" /> </InputParameters> <OutputClaims> <OutputClaim ClaimTypeReferenceId="errorCode" TransformationClaimType="createdClaim" /> </OutputClaims> </ClaimsTransformation> <ClaimsTransformation Id="GenerateErrorMessage" TransformationMethod="CreateStringClaim"> <InputParameters> <InputParameter Id="value" DataType="string" Value="Insert error description." /> </InputParameters> <OutputClaims> <OutputClaim ClaimTypeReferenceId="errorMessage" TransformationClaimType="createdClaim" /> </OutputClaims> </ClaimsTransformation> <!-- </ClaimsTransformations> -->
Před definováním technického profilu OAuth2 přidejte do prvku jakéhokoli technického profilu dvě transformace deklarací
OutputClaimsTransformations
identity:<OutputClaimsTransformations> <OutputClaimsTransformation ReferenceId="generateErrorCode" /> <OutputClaimsTransformation ReferenceId="generateErrorMessage" /> </OutputClaimsTransformations>
Vstupní deklarace identity
Element InputClaims obsahuje seznam deklarací identity vyžadovaných k vrácení chyby OAuth2.
ClaimReferenceId | Požadováno | Description |
---|---|---|
errorCode | Ano | Kód chyby. |
errorMessage | Ano | Chybová zpráva |
Kryptografické klíče
Element CryptographicKeys obsahuje následující klíč:
Atribut | Požadováno | Popis |
---|---|---|
issuer_secret | Ano | Certifikát X509 (sada klíčů RSA).
B2C_1A_TokenSigningKeyContainer Použijte klíč, který nakonfigurujete v části Začínáme s vlastními zásadami. |
Vyvolání technického profilu
Technický profil chyby OAuth2 můžete volat z cesty uživatele nebo dílčí cesty (typ transfer
).
Nastavte typ kroku orchestrace na SendClaims
odkaz na technický profil chyby OAuth2.
Pokud cesta nebo dílčí cesta uživatele už má jiný SendClaims
krok orchestrace, nastavte DefaultCpimIssuerTechnicalProfileReferenceId
atribut na technický profil vystavitele tokenu.
V následujícím příkladu:
- Cesta uživatele
SignUpOrSignIn-Custom
nastavíDefaultCpimIssuerTechnicalProfileReferenceId
technický profilJwtIssuer
vystavitele tokenu . - Osmý krok orchestrace kontroluje, jestli existuje
errorCode
. Pokud ano, zavolejteReturnOAuth2Error
technický profil, aby se chyba vrátila. - Pokud
errorCode
neexistuje, devátý krok orchestrace vydá token.
<UserJourney Id="SignUpOrSignIn-Custom" DefaultCpimIssuerTechnicalProfileReferenceId="JwtIssuer">
<OrchestrationSteps>
...
<OrchestrationStep Order="8" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="ReturnOAuth2Error">
<Preconditions>
<Precondition Type="ClaimsExist" ExecuteActionsIf="false">
<Value>errorCode</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
</Preconditions>
</OrchestrationStep>
<OrchestrationStep Order="9" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="JwtIssuer" />
</OrchestrationSteps>
<ClientDefinition ReferenceId="DefaultWeb" />
</UserJourney>
Volitelně můžete k manipulaci s technickým profilem chyby OAuth2 použít předběžné podmínky. Pokud například neexistuje žádná e-mailová deklarace identity, můžete nastavit volání technického profilu chyby OAuth2:
<OrchestrationStep Order="3" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="ReturnOAuth2Error">
<Preconditions>
<Precondition Type="ClaimsExist" ExecuteActionsIf="false">
<Value>email</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
</Preconditions>
</OrchestrationStep>
Další kroky
Další informace o UserJourneys