Share via


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ızda 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:

  1. Bir OAuth2 hata teknik profili tanımlayın.
  2. Hata kodunu ve hata iletisi taleplerini ayarlayın.
  3. 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 OAuth2Errorayarlayın.

Aşağıdaki örnekte için ReturnOAuth2Errorbir 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> -->

Giriş talepleri

InputClaims öğesi, OAuth2 hatası döndürmek için gereken taleplerin listesini içerir.

ClaimReferenceId Gerekli Açıklama
errorCode Yes Hata kodu.
errorMessage Yes Hata iletisi.

Şifreleme anahtarları

CryptographicKeys öğesi aşağıdaki anahtarı içerir:

Öznitelik Gerekli 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ü) transferOAuth2 hata teknik profilini çağırabilirsiniz. OAuth2 hata teknik profilinize bir başvuru ile düzenleme adımı türünü SendClaims olarak ayarlayın.

Kullanıcı yolculuğunuzda veya alt yolculuğunuzda zaten başka bir SendClaims düzenleme adımı varsa, özniteliğini belirteç veren teknik profiline ayarlayın DefaultCpimIssuerTechnicalProfileReferenceId .

Aşağıdaki örnekte:

  • Kullanıcı yolculuğu SignUpOrSignIn-Custom , DefaultCpimIssuerTechnicalProfileReferenceId belirteci veren teknik profili JwtIssuerolarak ayarlar.
  • Sekizinci düzenleme adımı, öğesinin errorCode mevcut olup olmadığını denetler. Evet ise, hatayı döndürmek ReturnOAuth2Error 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>

Sonraki adımlar

UserJourneys hakkında bilgi edinin