Azure Active Directory B2C özel ilkesinde OAuth2 özel hata teknik profili tanımlama
Bu makalede, Azure Active Directory B2C (Azure AD B2C) ile OAuth2 özel hatasını işleme açıklanmaktadır. İlkenizde bir mantık yanlış giderse bu teknik profili kullanın. Teknik profil, OAuth2 veya OpenId Connect bağlı olan taraf uygulamanıza hata döndürür. OAuth2 özel hata teknik profilinin Canlı tanıtımını gözden geçirin.
Özel OAuth2 hata iletisini işlemek için:
- OAuth2 hata teknik profili tanımlayın.
- Hata kodunu ve hata iletisi taleplerini ayarlayın.
- Kullanıcı yolculuğundan OAuth2 hata teknik profilini çağırın.
OAuth2 hatası
Hata aşağıdaki verilerle döndürülr:
- hata -
access_denied
- error_description - kuralını
AAD_Custom_<errorCode>: <errorMessage>
kullanan hata iletisi. - Bağıntı Kimliği - Azure AD B2C bağıntı kimliği.
- Zaman damgası - Hatanın zaman damgası.
Aşağıdaki örnekte uygulamaya özel bir hata iletisi döndürülmesi gösterilmektedir https://jwt.ms :
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
Protocol öğesinin Name özniteliği olarak ayarlanmalıdırOAuth2
. OutputTokenFormat öğesini olarak OAuth2Error
ayarlayın.
Aşağıdaki örnekte için ReturnOAuth2Error
bir teknik profil gösterilmektedir:
<!--
<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> -->
Hata kodu ve hata iletisinin özel değerlerini oluşturmak için talep dönüştürmesini tanımlama
Hata kodu ve hata iletisinin özel değerlerini oluşturmak için şu adımları kullanın:
ClaimsTransformations
öğesini bulun ve içine aşağıdaki kodu ekleyin<!-- <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> -->
Tanımladığınız Oauth2 teknik profilinden önce herhangi bir teknik profilin öğesine iki talep dönüştürmesi
OutputClaimsTransformations
ekleyin:<OutputClaimsTransformations> <OutputClaimsTransformation ReferenceId="generateErrorCode" /> <OutputClaimsTransformation ReferenceId="generateErrorMessage" /> </OutputClaimsTransformations>
Giriş talepleri
InputClaims öğesi, OAuth2 hatası döndürmek için gereken taleplerin listesini içerir.
ClaimReferenceId | Zorunlu | Description |
---|---|---|
errorCode | Yes | Hata kodu. |
errorMessage | Yes | Hata iletisi. |
Şifreleme anahtarları
CryptographicKeys öğesi aşağıdaki anahtarı içerir:
Öznitelik | Zorunlu | Açıklama |
---|---|---|
issuer_secret | Yes | X509 sertifikası (RSA anahtar kümesi). B2C_1A_TokenSigningKeyContainer Özel ilkeleri kullanmaya başlama bölümünde yapılandırdığınız anahtarı kullanın. |
Teknik profili çağırma
Bir kullanıcı yolculuğundan veya alt yolculuktan (türütransfer
) OAuth2 hata teknik profilini çağırabilirsiniz. OAuth2 hata teknik profilinize bir başvuruyla düzenleme adımı türünü SendClaims
olarak ayarlayın.
Kullanıcı yolculuğunuz veya alt yolculuğunuzda zaten başka bir SendClaims
düzenleme adımı varsa özniteliğini belirteç veren teknik profili olarak ayarlayın DefaultCpimIssuerTechnicalProfileReferenceId
.
Aşağıdaki örnekte:
- Kullanıcı yolculuğu
SignUpOrSignIn-Custom
,DefaultCpimIssuerTechnicalProfileReferenceId
belirteci veren teknik profilineJwtIssuer
ayarlar. - Sekizinci düzenleme adımı, öğesinin
errorCode
mevcut olup olmadığını denetler. Evet ise, hatayı döndürmekReturnOAuth2Error
için teknik profili çağırın. - Yoksa
errorCode
, dokuzuncu düzenleme adımı belirteci düzenler.
<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>
İsteğe bağlı olarak, Oauth2 hata teknik profilini işlemek için önkoşulları kullanabilirsiniz. Örneğin, e-posta talebi yoksa Oauth2 hata teknik profilini çağırmak için ayarlayabilirsiniz:
<OrchestrationStep Order="3" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="ReturnOAuth2Error">
<Preconditions>
<Precondition Type="ClaimsExist" ExecuteActionsIf="false">
<Value>email</Value>
<Action>SkipThisOrchestrationStep</Action>
</Precondition>
</Preconditions>
</OrchestrationStep>
Sonraki adımlar
UserJourneys hakkında bilgi edinin