Een aangepast OAuth2-fout technisch profiel definiëren in een aangepast Azure Active Directory B2C-beleid
In dit artikel wordt beschreven hoe u een aangepaste OAuth2-fout verwerkt met Azure Active Directory B2C (Azure AD B2C). Gebruik dit technische profiel als er iets misgaat binnen uw beleid. Het technische profiel retourneert een fout in uw OAuth2- of OpenId Connect Relying Party-toepassing. Bekijk de Live-demo van het technische profiel voor aangepaste OAuth2-fouten.
Een aangepast OAuth2-foutbericht afhandelen:
- Definieer een technisch OAuth2-foutprofiel.
- Stel de foutcode en claims voor foutberichten in.
- Roep vanuit het gebruikerstraject het technische profiel voor OAuth2-fouten aan.
OAuth2-fout
De fout wordt geretourneerd met de volgende gegevens:
- fout -
access_denied
- error_description : het foutbericht met behulp van de conventie
AAD_Custom_<errorCode>: <errorMessage>
. - Correlatie-id : de Azure AD B2C-correlatie-id.
- Tijdstempel: de tijdstempel van de fout.
In het volgende voorbeeld ziet u een aangepast foutbericht dat wordt geretourneerd naar de https://jwt.ms app:
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
Protocol
Het kenmerk Naam van het element Protocol moet worden ingesteld op OAuth2
. Stel het element OutputTokenFormat in op OAuth2Error
.
In het volgende voorbeeld ziet u een technisch profiel voor 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> -->
Claimtransformatie definiëren om aangepaste waarden van foutcode en foutbericht te genereren
Gebruik deze stappen om aangepaste waarden van foutcode en foutbericht te genereren:
Zoek het
ClaimsTransformations
element en voeg vervolgens de volgende code erin toe<!-- <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> -->
Voeg de twee claimtransformaties toe aan het
OutputClaimsTransformations
element van een technisch profiel voordat U OAuth2-technisch definieert:<OutputClaimsTransformations> <OutputClaimsTransformation ReferenceId="generateErrorCode" /> <OutputClaimsTransformation ReferenceId="generateErrorMessage" /> </OutputClaimsTransformations>
Invoerclaims
Het element InputClaims bevat een lijst met claims die nodig zijn om een OAuth2-fout te retourneren.
ClaimReferenceId | Vereist | Omschrijving |
---|---|---|
errorCode | Ja | De foutcode. |
errorMessage | Ja | Het foutbericht. |
Cryptografische sleutels
Het element CryptographicKeys bevat de volgende sleutel:
Kenmerk | Vereist | Beschrijving |
---|---|---|
issuer_secret | Ja | Een X509-certificaat (RSA-sleutelset). Gebruik de sleutel die u configureert in Aan de B2C_1A_TokenSigningKeyContainer slag met aangepaste beleidsregels. |
Het technische profiel aanroepen
U kunt het technische OAuth2-foutprofiel aanroepen vanuit een gebruikerstraject of subtraject (type transfer
). Stel het type SendClaims
indelingsstap in op met een verwijzing naar uw technische OAuth2-foutprofiel.
Als uw gebruikerstraject of subtraject al een andere SendClaims
indelingsstap heeft, stelt u het DefaultCpimIssuerTechnicalProfileReferenceId
kenmerk in op het technische profiel van de tokenverlener.
In het volgende voorbeeld:
- Het gebruikerstraject
SignUpOrSignIn-Custom
stelt hetDefaultCpimIssuerTechnicalProfileReferenceId
technische profielJwtIssuer
van de tokenverlener in. - De achtste indelingsstap controleert of het
errorCode
bestaat. Zo ja, roept u hetReturnOAuth2Error
technische profiel aan om de fout te retourneren. - Als
errorCode
dit niet bestaat, geeft de negende indelingsstap het token uit.
<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>
U kunt eventueel voorwaarden gebruiken om het technische profiel voor OAuth2-fouten te bewerken. Als er bijvoorbeeld geen e-mailclaim is, kunt u instellen dat het technische profiel voor OAuth2-fouten wordt aangeroepen:
<OrchestrationStep Order="3" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="ReturnOAuth2Error">
<Preconditions>
<Precondition Type="ClaimsExist" ExecuteActionsIf="false">
<Value>email</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
</Preconditions>
</OrchestrationStep>
Volgende stappen
Meer informatie over UserJourneys