Definieren eines technischen Profils für benutzerdefinierte OAuth2-Fehler in einer benutzerdefinierten Azure Active Directory B2C-Richtlinie
In diesem Artikel wird beschrieben, wie Sie einen benutzerdefinierten OAuth2-Fehler mit Azure Active Directory B2C (Azure AD B2C) behandeln. Verwenden Sie dieses technische Profil, wenn innerhalb Ihrer Richtlinie ein Logikfehler auftritt. Das technische Profil gibt einen Fehler an Ihre OAuth2- oder OpenId Connect-Anwendung der vertrauenden Seite zurück. Sehen Sie sich die Livedemo des benutzerdefinierten technischen Fehlerprofils für OAuth2 an.
So behandeln Sie eine Meldung zu einem benutzerdefinierten OAuth2-Fehler:
- Definieren Sie ein technisches Profil für OAuth2-Fehler.
- Legen Sie den Fehlercode und die Fehlermeldungsansprüche fest.
- Rufen Sie in der User Journey das technische Profil für OAuth2-Fehler auf.
OAuth2-Fehler
Der Fehler wird mit den folgenden Daten zurückgegeben:
- error -
access_denied
- error_description: Die Fehlermeldung gemäß der Konvention
AAD_Custom_<errorCode>: <errorMessage>
- Correlation ID: Die Korrelations-ID von Azure AD B2C
- Timestamp: Der Zeitstempel des Fehlers
Im folgenden Beispiel wird eine benutzerdefinierte Fehlermeldung veranschaulicht, die an die App https://jwt.ms zurückgegeben wird:
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
Das Name-Attribut des Protocol-Elements muss auf OAuth2
festgelegt werden. Legen Sie das OutputTokenFormat-Element auf OAuth2Error
fest.
Das folgende Beispiel zeigt ein technisches 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> -->
Definieren der Anspruchstransformation zum Generieren benutzerdefinierter Werte von Fehlercode und Fehlermeldung
Führen Sie die folgenden Schritte aus, um benutzerdefinierte Werte von Fehlercode und Fehlermeldung zu generieren:
Suchen Sie das
ClaimsTransformations
Element, und fügen Sie dann den folgenden Code darin hinzu.<!-- <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> -->
Fügen Sie die beiden Anspruchstransformationen im
OutputClaimsTransformations
Element eines beliebigen technischen Profils vor dem von Ihnen definierten Oauth2-Technischen hinzu:<OutputClaimsTransformations> <OutputClaimsTransformation ReferenceId="generateErrorCode" /> <OutputClaimsTransformation ReferenceId="generateErrorMessage" /> </OutputClaimsTransformations>
Eingabeansprüche
Das Element InputClaims enthält eine Liste der Ansprüche, die zum Zurückgeben des OAuth2-Fehlers erforderlich sind.
ClaimReferenceId | Erforderlich | Description |
---|---|---|
errorCode | Ja | Der Fehlercode. |
errorMessage | Ja | Die Fehlermeldung. |
Kryptografische Schlüssel
Das CryptographicKeys-Element enthält den folgenden Schlüssel:
attribute | Erforderlich | BESCHREIBUNG |
---|---|---|
issuer_secret | Ja | Ein X509-Zertifikat (RSA-Schlüsselsatz). Verwenden Sie den B2C_1A_TokenSigningKeyContainer -Schlüssel, den Sie unter Tutorial: Erstellen von Benutzerflows und benutzerdefinierten Richtlinien in Azure Active Directory B2C konfigurieren. |
Aufrufen des technischen Profils
Sie können das technischen Fehlerprofil für OAuth2 über eine User Journey oder untergeordnete Journey (mit dem Typ transfer
) aufrufen. Legen Sie den Typ OrchestrationStep mit einem Verweis auf Ihr technisches Profil für OAuth2-Fehler auf SendClaims
fest.
Wenn Ihre User Journey oder untergeordnete Journey bereits über einen anderen SendClaims
-Orchestrierungsschritt verfügt, legen Sie das Attribut DefaultCpimIssuerTechnicalProfileReferenceId
auf das technische Profil des Tokenausstellers fest.
Im folgenden Beispiel:
- Die User Journey
SignUpOrSignIn-Custom
legtDefaultCpimIssuerTechnicalProfileReferenceId
auf das technische Profil des Tokenausstellers (JwtIssuer
) fest. - Der achte Orchestrierungsschritt überprüft, ob
errorCode
vorhanden ist. Wenn ja, rufen Sie das technische ProfilReturnOAuth2Error
auf, um den Fehler zurückzugeben. - Ist
errorCode
nicht vorhanden, wird im neunten Orchestrierungsschritt das Token ausgegeben.
<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>
Optional können Sie Die Voraussetzungen verwenden, um das technische Oauth2-Fehlerprofil zu bearbeiten. Wenn z. B. kein E-Mail-Anspruch vorhanden ist, können Sie festlegen, dass das technische Profil des Oauth2-Fehlers aufgerufen wird:
<OrchestrationStep Order="3" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="ReturnOAuth2Error">
<Preconditions>
<Precondition Type="ClaimsExist" ExecuteActionsIf="false">
<Value>email</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
</Preconditions>
</OrchestrationStep>
Nächste Schritte
Weitere Informationen zu UserJourneys.