Aracılığıyla paylaş


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:

  1. 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> -->

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:

  1. 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> -->
    
  2. 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 profiline JwtIssuerayarlar.
  • 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>

İ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