Definování vlastního technického profilu chyb OAuth2 ve vlastních zásadách Azure Active Directory B2C

Tento článek popisuje, jak zpracovat vlastní chybu OAuth2 v Azure Active Directory B2C (Azure AD B2C). Tento technický profil použijte, pokud se v rámci zásad něco pokazí. Technický profil vrátí chybu do vaší aplikace předávající strany OAuth2 nebo OpenId Connect. Podívejte se na živou ukázku vlastního technického profilu chyb OAuth2.

Zpracování vlastní chybové zprávy OAuth2:

  1. Definujte technický profil chyby OAuth2.
  2. Nastavte kód chyby a deklarace chybových zpráv.
  3. Z cesty uživatele zavolejte technický profil chyby OAuth2.

Chyba OAuth2

Chyba se vrátí s následujícími daty:

  • Chyba - access_denied
  • error_description – chybová zpráva používající konvenci AAD_Custom_<errorCode>: <errorMessage>.
  • ID korelace – ID korelace Azure AD B2C.
  • Timestamp – časové razítko chyby.

Následující příklad ukazuje návrat vlastní chybové zprávy do https://jwt.ms aplikace:

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

Atribut Name elementu Protocol musí být nastavený na OAuth2. Nastavte element OutputTokenFormat na OAuth2Error.

Následující příklad ukazuje technický profil pro 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> -->

Vstupní deklarace identity

Element InputClaims obsahuje seznam deklarací identity vyžadovaných k vrácení chyby OAuth2.

Id deklarace identity Povinné Popis
Errorcode Yes Kód chyby
Errormessage Yes Chybová zpráva

Kryptografické klíče

Element CryptographicKeys obsahuje následující klíč:

Atribut Povinné Popis
issuer_secret Yes Certifikát X509 (sada klíčů RSA). Použijte klíč, B2C_1A_TokenSigningKeyContainer který nakonfigurujete v tématu Začínáme s vlastními zásadami.

Vyvolání technického profilu

Technický profil chyby OAuth2 můžete volat z cesty uživatele nebo dílčí cesty (typ transfer). Nastavte typ kroku orchestrace na s SendClaims odkazem na technický profil chyby OAuth2.

Pokud vaše uživatelská cesta nebo dílčí cesta již mají jiný SendClaims krok orchestrace, nastavte DefaultCpimIssuerTechnicalProfileReferenceId atribut na technický profil vystavitele tokenu.

V následujícím příkladu:

  • Cesta SignUpOrSignIn-Custom uživatele nastaví DefaultCpimIssuerTechnicalProfileReferenceId na technický profil JwtIssuervystavitele tokenu .
  • Osmý krok orchestrace zkontroluje errorCode , jestli existuje. Pokud ano, zavolejte ReturnOAuth2Error technický profil, aby se chyba vrátila.
  • Pokud errorCode neexistuje, devátý krok orchestrace vydá 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>

Další kroky

Další informace o userJourneys