是否可以在Azure AD B2C自定义策略中为输入提供默认值?

时间:2020-08-27 18:08:32

标签: azure-ad-b2c

我正在努力将Azure AD B2C集成到现有的购物车应用程序中,以替换现有的用户身份解决方案。

我已经创建了一个自定义策略来实施用户注册/注册,并将其集成到正常的帐户创建过程中。但是,我在结帐过程中整合注册时遇到了问题。

使用旧的IDP,结帐过程首先收集用户的姓名和电子邮件地址。收集完这些信息后,将为用户提供创建带有该信息的帐户的选项(如果尚未登录)。为了避免重复输入该电子邮件地址,我想将用户已经输入的电子邮件地址传递给B2C注册策略,然后将其填写在表格上的电子邮件地址中。

有没有办法做到这一点?我在B2C文档中没有找到类似的解决方法。

2 个答案:

答案 0 :(得分:2)

您可以将注册策略与理赔程序一起使用。在查询参数中发送电子邮件。它将电子邮件预先填充到文本框中。

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

答案 1 :(得分:0)

基于@JasSuri链接的文档,我能够提出解决方案。

要实现此目的,请修改注册技术资料。您必须添加三件事:

  1. 将值为IncludeClaimResolvingInClaimsHandling的项目true添加到元数据
  2. DefaultValue输入声明中添加一个email属性,并使用适当的声明解析器符号作为值
  3. AlwaysUseDefaultValue作为值向email输入声明中添加true属性

我使用了Oauth2 key-value声明解析器(它支持任意查询字符串参数)和名为register_email的查询参数。

最终的技术资料如下:

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