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řidejte dvě transformace deklarací identity do
OutputClaimsTransformations
prvku libovolného technického profilu před tím, než definujete technické informace Oauth2:<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 použít předběžné podmínky pro manipulaci s technickým profilem chyby Oauth2. Pokud například neexistuje žádná deklarace identity e-mailu, 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
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro