我正在努力将Azure AD B2C集成到现有的购物车应用程序中,以替换现有的用户身份解决方案。
我已经创建了一个自定义策略来实施用户注册/注册,并将其集成到正常的帐户创建过程中。但是,我在结帐过程中整合注册时遇到了问题。
使用旧的IDP,结帐过程首先收集用户的姓名和电子邮件地址。收集完这些信息后,将为用户提供创建带有该信息的帐户的选项(如果尚未登录)。为了避免重复输入该电子邮件地址,我想将用户已经输入的电子邮件地址传递给B2C注册策略,然后将其填写在表格上的电子邮件地址中。
有没有办法做到这一点?我在B2C文档中没有找到类似的解决方法。
答案 0 :(得分:2)
您可以将注册策略与理赔程序一起使用。在查询参数中发送电子邮件。它将电子邮件预先填充到文本框中。
https://docs.microsoft.com/en-us/azure/active-directory-b2c/claim-resolver-overview
答案 1 :(得分:0)
基于@JasSuri链接的文档,我能够提出解决方案。
要实现此目的,请修改注册技术资料。您必须添加三件事:
IncludeClaimResolvingInClaimsHandling
的项目true
添加到元数据DefaultValue
输入声明中添加一个email
属性,并使用适当的声明解析器符号作为值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>