Je travaille sur l'intégration d'Azure AD B2C dans une application de panier d'achat existante, en remplacement d'une solution d'identité utilisateur existante.

J'ai déjà créé une politique personnalisée pour implémenter l'enregistrement / l'inscription des utilisateurs et je l'ai intégrée dans le processus normal de création de compte. Cependant, je rencontre un problème avec l'intégration de l'inscription lors du processus de paiement.

Avec l'ancien IDP, le processus de paiement collecte d'abord le nom et l'adresse e-mail de l'utilisateur. Une fois que cela a été collecté, l'utilisateur a la possibilité de créer un compte avec ces informations (s'il n'est pas déjà connecté). Afin d'éviter de confondre la double saisie de l'adresse e-mail, je voudrais transmettre l'adresse e-mail que l'utilisateur a déjà saisie à la politique d'inscription B2C et la faire remplir dans l'adresse e-mail saisie sur le formulaire.

Y a-t-il un moyen de faire ça? Je ne trouve rien de tel traité dans la documentation B2C.

0
Jack A. 27 août 2020 à 21:08

2 réponses

Meilleure réponse

Sur la base de la documentation liée par @JasSuri, j'ai pu trouver une solution.

Pour implémenter cela, vous modifiez le profil technique d'inscription. Vous devez ajouter trois choses:

  1. Ajouter l'élément IncludeClaimResolvingInClaimsHandling avec la valeur true aux métadonnées
  2. Ajoutez un attribut DefaultValue à la revendication d'entrée email avec une notation de résolveur de revendications appropriée comme valeur
  3. Ajoutez un attribut AlwaysUseDefaultValue à la revendication d'entrée email avec true comme valeur

J'ai utilisé un Le résolveur de réclamations Oauth2 clé-valeur (qui prend en charge les paramètres de chaîne de requête arbitraires) et un paramètre de requête nommé register_email.

Le profil technique résultant ressemble à ceci:

<TechnicalProfile Id="LocalAccountSignUpWithLogonEmail">
  <DisplayName>Email signup</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    <Item Key="IpAddressClaimReferenceId">IpAddress</Item>
    <Item Key="ContentDefinitionReferenceId">api.localaccountsignup</Item>
    <Item Key="language.button_continue">Create</Item>
    <Item Key="IncludeClaimResolvingInClaimsHandling">true</Item> <!-- ADD THIS -->
  </Metadata>
  <CryptographicKeys>
    <Key Id="issuer_secret" StorageReferenceId="B2C_1A_TokenSigningKeyContainer" />
  </CryptographicKeys>
  <InputClaims>
    <!-- ADD DefaultValue AND AlwaysUseDefaultValue ATTRIBUTES BELOW -->
    <InputClaim ClaimTypeReferenceId="email"
        DefaultValue="{OAUTH-KV:register_email}"
        AlwaysUseDefaultValue="true" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="objectId" />
    <OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="Verified.Email" Required="true" />
    <OutputClaim ClaimTypeReferenceId="newPassword" Required="true" />
    <OutputClaim ClaimTypeReferenceId="reenterPassword" Required="true" />
    <OutputClaim ClaimTypeReferenceId="executed-SelfAsserted-Input" DefaultValue="true" />
    <OutputClaim ClaimTypeReferenceId="authenticationSource" />
    <OutputClaim ClaimTypeReferenceId="newUser" />
  </OutputClaims>
  <ValidationTechnicalProfiles>
    <ValidationTechnicalProfile ReferenceId="AAD-UserWriteUsingLogonEmail" />
  </ValidationTechnicalProfiles>
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-AAD" />
</TechnicalProfile>
0
Jack A. 29 août 2020 à 18:00

Vous pouvez utiliser une politique d'inscription avec un résolveur de revendications. Envoyez l'e-mail dans le paramètre de requête. Il pré-remplira l'e-mail dans la zone de texte.

https://docs.microsoft.com/en-us/azure/active-directory-b2c/claim-resolver-overview

2
Jas Suri - MSFT 28 août 2020 à 00:58