Delen via


Een aangepast OAuth2-fout technisch profiel definiëren in een aangepast Azure Active Directory B2C-beleid

In dit artikel wordt beschreven hoe u een aangepaste OAuth2-fout verwerkt met Azure Active Directory B2C (Azure AD B2C). Gebruik dit technische profiel als er iets misgaat binnen uw beleid. Het technische profiel retourneert een fout in uw OAuth2- of OpenId Connect Relying Party-toepassing. Bekijk de Live-demo van het technische profiel voor aangepaste OAuth2-fouten.

Een aangepast OAuth2-foutbericht afhandelen:

  1. Definieer een technisch OAuth2-foutprofiel.
  2. Stel de foutcode en claims voor foutberichten in.
  3. Roep vanuit het gebruikerstraject het technische profiel voor OAuth2-fouten aan.

OAuth2-fout

De fout wordt geretourneerd met de volgende gegevens:

  • fout - access_denied
  • error_description : het foutbericht met behulp van de conventieAAD_Custom_<errorCode>: <errorMessage>.
  • Correlatie-id : de Azure AD B2C-correlatie-id.
  • Tijdstempel: de tijdstempel van de fout.

In het volgende voorbeeld ziet u een aangepast foutbericht dat wordt geretourneerd naar de https://jwt.ms app:

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

Protocol

Het kenmerk Naam van het element Protocol moet worden ingesteld op OAuth2. Stel het element OutputTokenFormat in op OAuth2Error.

In het volgende voorbeeld ziet u een technisch profiel voor 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> -->

Claimtransformatie definiëren om aangepaste waarden van foutcode en foutbericht te genereren

Gebruik deze stappen om aangepaste waarden van foutcode en foutbericht te genereren:

  1. Zoek het ClaimsTransformations element en voeg vervolgens de volgende code erin toe

    <!--
     <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. Voeg de twee claimtransformaties toe aan het OutputClaimsTransformations element van een technisch profiel voordat U OAuth2-technisch definieert:

        <OutputClaimsTransformations>
          <OutputClaimsTransformation ReferenceId="generateErrorCode" />
          <OutputClaimsTransformation ReferenceId="generateErrorMessage" />
        </OutputClaimsTransformations>
    

Invoerclaims

Het element InputClaims bevat een lijst met claims die nodig zijn om een OAuth2-fout te retourneren.

ClaimReferenceId Vereist Omschrijving
errorCode Ja De foutcode.
errorMessage Ja Het foutbericht.

Cryptografische sleutels

Het element CryptographicKeys bevat de volgende sleutel:

Kenmerk Vereist Beschrijving
issuer_secret Ja Een X509-certificaat (RSA-sleutelset). Gebruik de sleutel die u configureert in Aan de B2C_1A_TokenSigningKeyContainer slag met aangepaste beleidsregels.

Het technische profiel aanroepen

U kunt het technische OAuth2-foutprofiel aanroepen vanuit een gebruikerstraject of subtraject (type transfer). Stel het type SendClaims indelingsstap in op met een verwijzing naar uw technische OAuth2-foutprofiel.

Als uw gebruikerstraject of subtraject al een andere SendClaims indelingsstap heeft, stelt u het DefaultCpimIssuerTechnicalProfileReferenceId kenmerk in op het technische profiel van de tokenverlener.

In het volgende voorbeeld:

  • Het gebruikerstraject SignUpOrSignIn-Custom stelt het DefaultCpimIssuerTechnicalProfileReferenceId technische profiel JwtIssuervan de tokenverlener in.
  • De achtste indelingsstap controleert of het errorCode bestaat. Zo ja, roept u het ReturnOAuth2Error technische profiel aan om de fout te retourneren.
  • Als errorCode dit niet bestaat, geeft de negende indelingsstap het token uit.
<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>

U kunt eventueel voorwaarden gebruiken om het technische profiel voor OAuth2-fouten te bewerken. Als er bijvoorbeeld geen e-mailclaim is, kunt u instellen dat het technische profiel voor OAuth2-fouten wordt aangeroepen:

<OrchestrationStep Order="3" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="ReturnOAuth2Error">
      <Preconditions>
        <Precondition Type="ClaimsExist" ExecuteActionsIf="false">
          <Value>email</Value>
          <Action>SkipThisOrchestrationStep</Action>
        </Precondition>
      </Preconditions>
    </OrchestrationStep>

Volgende stappen

Meer informatie over UserJourneys