Partager via


Définir un profil technique de transformation de revendications dans une stratégie personnalisée Azure Active Directory B2C

Important

À compter du 1er mai 2025, Azure AD B2C ne sera plus disponible pour les nouveaux clients. Pour plus d’informations, consultez notre FAQ.

Remarque

Dans Active Directory B2C, les stratégies personnalisées sont principalement conçues pour gérer des scénarios complexes. Pour la plupart des scénarios, nous vous recommandons de recourir à des flux d’utilisateurs intégrés. Si vous ne l’avez pas fait, découvrez le Pack de démarrage de stratégie personnalisée dans Prise en main des stratégies personnalisées dans Active Directory B2C.

Un profil technique de transformation de revendications vous permet d’appeler des transformations de revendications de sortie pour manipuler des valeurs de revendications, valider des revendications ou définir des valeurs par défaut pour un ensemble de revendications de sortie.

Protocole

L’attribut Name de l’élément Protocol doit être défini sur Proprietary. L’attribut du gestionnaire doit contenir le nom complet de l’assembly de gestionnaire de protocole utilisé par Azure AD B2C : Web.TPEngine.Providers.ClaimsTransformationProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.

L’exemple suivant montre un profil technique de transformation de revendications :

<TechnicalProfile Id="Facebook-OAUTH-UnLink">
    <DisplayName>Unlink Facebook</DisplayName>
    <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.ClaimsTransformationProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  ...

Revendications de sortie

L’élément OutputClaims est obligatoire. Fournissez au moins une revendication de sortie retournée par le profil technique. L’exemple suivant montre comment définir des valeurs par défaut dans les revendications de sortie :

<OutputClaims>
  <OutputClaim ClaimTypeReferenceId="ageGroup" DefaultValue="Undefined" />
  <OutputClaim ClaimTypeReferenceId="ageGroupValueChanged" DefaultValue="false" />
</OutputClaims>

Transformations de revendications de sortie

L’élément OutputClaimsTransformations peut contenir une collection d’éléments OutputClaimsTransformation utilisés pour modifier des revendications ou en générer de nouvelles. Le profil technique suivant appelle la transformation de revendications RemoveAlternativeSecurityIdByIdentityProvider . Cette transformation de revendications supprime une identification sociale de la collection d’AlternativeSecurityIds. Les revendications de sortie de ce profil technique sont identityProvider2, qui est définie facebook.comsur , et AlternativeSecurityIds, qui contient la liste des identités sociales associées à cet utilisateur après facebook.com identité est supprimée.

<ClaimsTransformations>
  <ClaimsTransformation Id="RemoveAlternativeSecurityIdByIdentityProvider"
TransformationMethod="RemoveAlternativeSecurityIdByIdentityProvider">
    <InputClaims>
      <InputClaim ClaimTypeReferenceId="IdentityProvider2"
TransformationClaimType="identityProvider" />
      <InputClaim ClaimTypeReferenceId="AlternativeSecurityIds"
TransformationClaimType="collection" />
    </InputClaims>
    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="AlternativeSecurityIds"
TransformationClaimType="collection" />
    </OutputClaims>
  </ClaimsTransformation>
</ClaimsTransformations>
...
<TechnicalProfile Id="Facebook-OAUTH-UnLink">
    <DisplayName>Unlink Facebook</DisplayName>
    <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.ClaimsTransformationProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
    <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="identityProvider2" DefaultValue="facebook.com" AlwaysUseDefaultValue="true" />
    </OutputClaims>
    <OutputClaimsTransformations>
        <OutputClaimsTransformation ReferenceId="RemoveAlternativeSecurityIdByIdentityProvider" />
    </OutputClaimsTransformations>
    <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>

Le profil technique de transformation des revendications vous permet d’exécuter une transformation de revendications à partir de l’étape d’orchestration de tout parcours utilisateur. Dans l’exemple suivant, l’étape d’orchestration appelle l’un des profils techniques de dissociation, tels que UnLink-Facebook-OAUTH. Ce profil technique appelle la transformation de revendications de sortie RemoveAlternativeSecurityIdByIdentityProvider, qui génère une nouvelle revendication AlternativeSecurityIds2 . La revendication de sortie contient la liste des identités sociales de l’utilisateur, tout en supprimant l’identité Facebook des collections.

<UserJourney Id="AccountUnLink">
  <OrchestrationSteps>
    ...
    <OrchestrationStep Order="8" Type="ClaimsExchange">
      <ClaimsExchanges>
        <ClaimsExchange Id="UnLinkFacebookExchange" TechnicalProfileReferenceId="UnLink-Facebook-OAUTH" />
        <ClaimsExchange Id="UnLinkMicrosoftExchange" TechnicalProfileReferenceId="UnLink-Microsoft-OAUTH" />
        <ClaimsExchange Id="UnLinkGitHubExchange" TechnicalProfileReferenceId="UnLink-GitHub-OAUTH" />
      </ClaimsExchanges>
    </OrchestrationStep>
    ...
  </OrchestrationSteps>
</UserJourney>

Métadonnées

Caractéristique Obligatoire Descriptif
InclureRéclamationRésoudreInClaimsHandling Non Pour les revendications d’entrée et de sortie, spécifie si la résolution des revendications est incluse dans le profil technique. Valeurs possibles : true ou false (par défaut). Si vous souhaitez utiliser un programme de résolution de revendications dans le profil technique, définissez ces métadonnées truesur .
ContentDefinitionReferenceId Non Identificateur de la définition de contenu associée à ce profil technique. Les métadonnées de définition de contenu sont requises pour les transformations de revendications FormatLocalizedStringsTransformation, GetLocalizedStringsTransformation et GetMappedValueFromLocalizedCollection .

Utiliser un profil technique de validation

Un profil technique de transformation de revendications peut être utilisé pour valider les informations. Dans l’exemple suivant, le profil technique autodéclaré nommé LocalAccountSignUpWithLogonEmail demande à l’utilisateur d’entrer l’e-mail deux fois, puis appelle le profil technique de validation nommé Validate-Email pour valider les e-mails . Le profil technique Validate-Email appelle la transformation de revendications AssertEmailAreEqual pour comparer les deux e-mails de revendications et emailRepeat et lever une exception si elles ne sont pas égales en fonction de la comparaison spécifiée.

<ClaimsTransformations>
  <ClaimsTransformation Id="AssertEmailAreEqual" TransformationMethod="AssertStringClaimsAreEqual">
    <InputClaims>
      <InputClaim ClaimTypeReferenceId="email" TransformationClaimType="inputClaim1" />
      <InputClaim ClaimTypeReferenceId="emailRepeat" TransformationClaimType="inputClaim2" />
    </InputClaims>
    <InputParameters>
      <InputParameter Id="stringComparison" DataType="string" Value="ordinalIgnoreCase" />
    </InputParameters>
  </ClaimsTransformation>
</ClaimsTransformations>

Le profil technique de transformation de revendications appelle la transformation de revendications AssertEmailAreEqual , qui affirme que les e-mails fournis par l’utilisateur sont identiques.

<TechnicalProfile Id="Validate-Email">
  <DisplayName>Unlink Facebook</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.ClaimsTransformationProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="emailRepeat" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="email" />
  </OutputClaims>
  <OutputClaimsTransformations>
    <OutputClaimsTransformation ReferenceId="AssertEmailAreEqual" />
  </OutputClaimsTransformations>
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>

Un profil technique autodéclaré peut appeler le profil technique de validation et afficher le message d’erreur spécifié dans les métadonnées UserMessageIfClaimsTransformationStringsAreNotEqual .

<TechnicalProfile Id="LocalAccountSignUpWithLogonEmail">
  <DisplayName>User ID signup</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    ...
    <Item Key="UserMessageIfClaimsTransformationStringsAreNotEqual">The email addresses you provided are not the same</Item>
  </Metadata>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="email" />
    <OutputClaim ClaimTypeReferenceId="emailRepeat" />
    ...
  </OutputClaims>
  <ValidationTechnicalProfiles>
    <ValidationTechnicalProfile ReferenceId="Validate-Email" />
  </ValidationTechnicalProfiles>
</TechnicalProfile>