Definiowanie niestandardowego profilu technicznego błędu OAuth2 w zasadach niestandardowych usługi Azure Active Directory B2C
W tym artykule opisano sposób obsługi niestandardowego błędu OAuth2 w usłudze Azure Active Directory B2C (Azure AD B2C). Użyj tego profilu technicznego, jeśli coś nie działa w ramach zasad. Profil techniczny zwraca błąd do aplikacji jednostki uzależnionej OAuth2 lub OpenId Connect. Zapoznaj się z pokazem na żywo niestandardowego profilu technicznego błędu OAuth2.
Aby obsłużyć niestandardowy komunikat o błędzie OAuth2:
- Zdefiniuj profil techniczny błędu OAuth2.
- Ustaw kod błędu i oświadczenia komunikatu o błędzie.
- W podróży użytkownika wywołaj profil techniczny błędu OAuth2.
Błąd OAuth2
Błąd jest zwracany z następującymi danymi:
- błąd -
access_denied
- error_description — komunikat o błędzie korzystający z konwencji
AAD_Custom_<errorCode>: <errorMessage>
. - Identyfikator korelacji — identyfikator korelacji usługi Azure AD B2C.
- Sygnatura czasowa — sygnatura czasowa błędu.
W poniższym przykładzie pokazano niestandardowy komunikat o błędzie powrotny https://jwt.ms do aplikacji:
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
Protokół
Atrybut Name elementu Protocol musi być ustawiony na OAuth2
. Ustaw element OutputTokenFormat na OAuth2Error
wartość .
W poniższym przykładzie przedstawiono profil techniczny dla elementu 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> -->
Definiowanie przekształcenia oświadczeń w celu generowania niestandardowych wartości kodu błędu i komunikatu o błędzie
Wykonaj następujące kroki, aby wygenerować niestandardowe wartości kodu błędu i komunikatu o błędzie:
ClaimsTransformations
Znajdź element, a następnie dodaj do niego następujący kod<!-- <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> -->
Dodaj dwa przekształcenia oświadczeń w
OutputClaimsTransformations
elemecie dowolnego profilu technicznego przed zdefiniowaną przez Ciebie specyfikacją OAuth2:<OutputClaimsTransformations> <OutputClaimsTransformation ReferenceId="generateErrorCode" /> <OutputClaimsTransformation ReferenceId="generateErrorMessage" /> </OutputClaimsTransformations>
Oświadczenia wejściowe
Element InputClaims zawiera listę oświadczeń wymaganych do zwrócenia błędu OAuth2.
ClaimReferenceId | Wymagania | Popis |
---|---|---|
errorCode | Tak | Kod błędu. |
komunikat o błędzie | Tak | Komunikat o błędzie. |
Klucze kryptograficzne
Element CryptographicKeys zawiera następujący klucz:
Atrybut | Wymagania | opis |
---|---|---|
issuer_secret | Tak | Certyfikat X509 (zestaw kluczy RSA). Użyj klucza skonfigurowanego B2C_1A_TokenSigningKeyContainer w temacie Wprowadzenie do zasad niestandardowych. |
Wywoływanie profilu technicznego
Możesz wywołać profil techniczny błędu OAuth2 z podróży użytkownika lub podróży podrzędnej transfer
(typu ). Ustaw typ kroku aranżacji na SendClaims
z odwołaniem do profilu technicznego błędu OAuth2.
Jeśli podróż użytkownika lub podróż podrzędna ma już inny SendClaims
krok aranżacji, ustaw DefaultCpimIssuerTechnicalProfileReferenceId
atrybut na profil techniczny wystawcy tokenu.
W poniższym przykładzie:
- Podróż
SignUpOrSignIn-Custom
użytkownika ustawiaDefaultCpimIssuerTechnicalProfileReferenceId
wartość dla profiluJwtIssuer
technicznego wystawcy tokenu . - Ósmy krok aranżacji sprawdza, czy
errorCode
istnieje. Jeśli tak, wywołajReturnOAuth2Error
profil techniczny, aby zwrócić błąd. - Jeśli
errorCode
nie istnieje, dziewiąty krok orkiestracji wystawia 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>
Opcjonalnie możesz użyć warunków wstępnych do manipulowania profilem technicznym błędu OAuth2. Jeśli na przykład nie ma oświadczenia e-mail, możesz ustawić opcję wywołania profilu technicznego błędu OAuth2:
<OrchestrationStep Order="3" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="ReturnOAuth2Error">
<Preconditions>
<Precondition Type="ClaimsExist" ExecuteActionsIf="false">
<Value>email</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
</Preconditions>
</OrchestrationStep>
Następne kroki
Dowiedz się więcej o userJourneys