Definiera en anpassad teknisk profil för OAuth2-fel i en anpassad Azure Active Directory B2C-princip
I den här artikeln beskrivs hur du hanterar ett anpassat OAuth2-fel med Azure Active Directory B2C (Azure AD B2C). Använd den här tekniska profilen om något går fel i din princip. Den tekniska profilen returnerar fel till ditt OAuth2- eller OpenId Connect-förlitande partprogram. Kolla in livedemon för den tekniska profilen för anpassade OAuth2-fel.
Så här hanterar du ett anpassat OAuth2-felmeddelande:
- Definiera en teknisk OAuth2-felprofil.
- Ange felkoden och anspråk på felmeddelanden.
- Från användarresan anropar du den tekniska OAuth2-felprofilen.
OAuth2-fel
Felet returneras med följande data:
- fel -
access_denied
- error_description – Felmeddelandet med hjälp av konventionen
AAD_Custom_<errorCode>: <errorMessage>
. - Korrelations-ID – Korrelations-ID:t för Azure AD B2C.
- Tidsstämpel – tidsstämpeln för felet.
I följande exempel visas ett anpassat felmeddelande som returneras till https://jwt.ms appen:
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
Protokoll
Attributet Namn för protokollelementet måste anges till OAuth2
. Ange elementet OutputTokenFormat till OAuth2Error
.
I följande exempel visas en teknisk profil för 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> -->
Definiera anspråkstransformering för att generera anpassade värden för felkod och felmeddelande
Använd de här stegen för att generera anpassade värden för felkod och felmeddelande:
Leta upp elementet
ClaimsTransformations
och lägg sedan till följande kod i det<!-- <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> -->
Lägg till de två anspråkstransformeringarna i elementet
OutputClaimsTransformations
i en teknisk profil före Oauth2 technical som du definierar:<OutputClaimsTransformations> <OutputClaimsTransformation ReferenceId="generateErrorCode" /> <OutputClaimsTransformation ReferenceId="generateErrorMessage" /> </OutputClaimsTransformations>
Indataanspråk
Elementet InputClaims innehåller en lista över anspråk som krävs för att returnera OAuth2-fel.
ClaimReferenceId | Obligatoriskt | Description |
---|---|---|
errorCode | Ja | Felkoden. |
errorMessage | Ja | Felmeddelandet. |
Krypteringsnycklar
CryptographicKeys-elementet innehåller följande nyckel:
Attribut | Obligatoriskt | Beskrivning |
---|---|---|
issuer_secret | Ja | Ett X509-certifikat (RSA-nyckeluppsättning). Använd nyckeln B2C_1A_TokenSigningKeyContainer som du konfigurerar i Kom igång med anpassade principer. |
Anropa den tekniska profilen
Du kan anropa den tekniska OAuth2-felprofilen från en användarresa eller underresa (typ av transfer
). Ange orkestreringsstegtypen till SendClaims
med en referens till din tekniska OAuth2-felprofil.
Om din användarresa eller underresa redan har ett annat SendClaims
orkestreringssteg anger du DefaultCpimIssuerTechnicalProfileReferenceId
attributet till den tekniska profilen för token utfärdare.
I följande exempel:
- Användarens resa
SignUpOrSignIn-Custom
angerDefaultCpimIssuerTechnicalProfileReferenceId
till den tekniska profilen för token utfärdarenJwtIssuer
. - Det åttonde orkestreringssteget kontrollerar om det
errorCode
finns. Om ja anropar du denReturnOAuth2Error
tekniska profilen för att returnera felet. - Om
errorCode
det inte finns utfärdar det nionde orkestreringssteget 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>
Du kan också använda förhandsvillkor för att ändra den tekniska Oauth2-felprofilen. Om det till exempel inte finns något e-postanspråk kan du ange att anropa teknisk profil för Oauth2-fel:
<OrchestrationStep Order="3" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="ReturnOAuth2Error">
<Preconditions>
<Precondition Type="ClaimsExist" ExecuteActionsIf="false">
<Value>email</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
</Preconditions>
</OrchestrationStep>
Nästa steg
Läs mer om UserJourneys