Return 封关于自定义政策的电子邮件
Return emails on custom policies
我正在使用自定义策略,我看到内置策略中存在但自定义策略中不存在的字段 "emails"。相反,有一个名为 otherMails
的声明。
- 我想 return 在我的令牌中使用用户电子邮件列表提出
emails
声明。
- 我希望对我的 signup/sign-in 和密码重置政策提出声明。
我正在使用入门包中的自定义策略。但是我不知道我应该改变哪个TechnicalProfiles
。我尝试了一些方法,但没有用。
提前致谢!
编写本地帐户时:您必须使用 "CreateOtherMailsFromEmail" 声明转换从 "email" 声明创建 "otherMails" 声明,然后将 "otherMails" 声明保留在"AAD-UserWriteUsingLogonEmail" 技术简介:
<TechnicalProfile Id="AAD-UserWriteUsingLogonEmail">
...
<IncludeInSso>false</IncludeInSso>
<InputClaimsTransformations>
<InputClaimsTransformation ReferenceId="CreateOtherMailsFromEmail" />
</InputClaimsTransformations>
<InputClaims>
...
</InputClaims>
<PersistedClaims>
...
<PersistedClaim ClaimTypeReferenceId="otherMails" />
</PersistedClaims>
<OutputClaims>
...
<OutputClaim ClaimTypeReferenceId="otherMails" />
</OutputClaims>
...
</TechnicalProfile>
然后,您必须将 "otherMails" 声明从调用以注册本地帐户的 "LocalAccountSignUpWithLogonEmail" 技术配置文件中传递出去:
<TechnicalProfile Id="LocalAccountSignUpWithLogonEmail">
...
<OutputClaims>
...
<OutputClaim ClaimTypeReferenceId="otherMails" />
</OutputClaims>
</TechnicalProfile>
编写社交帐户时:"otherMails" 声明已根据 "email" 声明创建,然后保存在 "AAD-UserWriteUsingAlternativeSecurityId" 技术配置文件中。
然后,您必须从 "SelfAsserted-Social" 技术配置文件中传递 "otherMails" 声明,该声明用于注册社交帐户:
<TechnicalProfile Id="SelfAsserted-Social">
...
<OutputClaims>
...
<OutputClaim ClaimTypeReferenceId="otherMails" />
</OutputClaims>
</TechnicalProfile>
阅读本地或社交帐户时:"otherMails" 声明已在 "AAD-UserReadUsingObjectId"、"AAD-UserReadUsingEmailAddress" 和 "AAD-UserReadUsingAlternativeSecurityId" 技术资料中阅读。
然后您必须将 "otherMails" 声明从调用以恢复本地密码的 "LocalAccountDiscoveryUsingEmailAddress" 技术配置文件中传递出去:
<TechnicalProfile Id="LocalAccountDiscoveryUsingEmailAddress">
...
<OutputClaims>
...
<OutputClaim ClaimTypeReferenceId="otherMails" />
</OutputClaims>
</TechnicalProfile>
要从 sign-up/sign-in 和密码重置策略中以 "emails" 的形式发布 "otherMail" 声明:您必须将 "otherMails" 的声明添加为 <OutputClaim />
信赖方政策:
<RelyingParty>
...
<TechnicalProfile Id="PolicyProfile">
<OutputClaims>
...
<OutputClaim ClaimTypeReferenceId="otherMails" PartnerClaimType="emails" />
</OutputClaims>
</TechnicalProfile>
</RelyingParty>
对于 Chris Padgett 的回答,您可以在声明中添加其他电子邮件(备用电子邮件)。
如果您只想将 SignIn 名称中的电子邮件声明添加到令牌中,您只需执行以下步骤:
打开您的 SignUporSignIn.xml
文件
将<OutputClaim ClaimTypeReferenceId="email" />
替换为<OutputClaim ClaimTypeReferenceId="signInNames.emailAddress" PartnerClaimType="email" />
保存此 SignUporSignIn.xml 文件并将其上传到 Azure AD B2C 以覆盖策略。
运行 SignUporSignIn 策略来测试它。
这是我的测试结果,您可以在令牌中看到电子邮件声明:
我正在使用自定义策略,我看到内置策略中存在但自定义策略中不存在的字段 "emails"。相反,有一个名为 otherMails
的声明。
- 我想 return 在我的令牌中使用用户电子邮件列表提出
emails
声明。 - 我希望对我的 signup/sign-in 和密码重置政策提出声明。
我正在使用入门包中的自定义策略。但是我不知道我应该改变哪个TechnicalProfiles
。我尝试了一些方法,但没有用。
提前致谢!
编写本地帐户时:您必须使用 "CreateOtherMailsFromEmail" 声明转换从 "email" 声明创建 "otherMails" 声明,然后将 "otherMails" 声明保留在"AAD-UserWriteUsingLogonEmail" 技术简介:
<TechnicalProfile Id="AAD-UserWriteUsingLogonEmail">
...
<IncludeInSso>false</IncludeInSso>
<InputClaimsTransformations>
<InputClaimsTransformation ReferenceId="CreateOtherMailsFromEmail" />
</InputClaimsTransformations>
<InputClaims>
...
</InputClaims>
<PersistedClaims>
...
<PersistedClaim ClaimTypeReferenceId="otherMails" />
</PersistedClaims>
<OutputClaims>
...
<OutputClaim ClaimTypeReferenceId="otherMails" />
</OutputClaims>
...
</TechnicalProfile>
然后,您必须将 "otherMails" 声明从调用以注册本地帐户的 "LocalAccountSignUpWithLogonEmail" 技术配置文件中传递出去:
<TechnicalProfile Id="LocalAccountSignUpWithLogonEmail">
...
<OutputClaims>
...
<OutputClaim ClaimTypeReferenceId="otherMails" />
</OutputClaims>
</TechnicalProfile>
编写社交帐户时:"otherMails" 声明已根据 "email" 声明创建,然后保存在 "AAD-UserWriteUsingAlternativeSecurityId" 技术配置文件中。
然后,您必须从 "SelfAsserted-Social" 技术配置文件中传递 "otherMails" 声明,该声明用于注册社交帐户:
<TechnicalProfile Id="SelfAsserted-Social">
...
<OutputClaims>
...
<OutputClaim ClaimTypeReferenceId="otherMails" />
</OutputClaims>
</TechnicalProfile>
阅读本地或社交帐户时:"otherMails" 声明已在 "AAD-UserReadUsingObjectId"、"AAD-UserReadUsingEmailAddress" 和 "AAD-UserReadUsingAlternativeSecurityId" 技术资料中阅读。
然后您必须将 "otherMails" 声明从调用以恢复本地密码的 "LocalAccountDiscoveryUsingEmailAddress" 技术配置文件中传递出去:
<TechnicalProfile Id="LocalAccountDiscoveryUsingEmailAddress">
...
<OutputClaims>
...
<OutputClaim ClaimTypeReferenceId="otherMails" />
</OutputClaims>
</TechnicalProfile>
要从 sign-up/sign-in 和密码重置策略中以 "emails" 的形式发布 "otherMail" 声明:您必须将 "otherMails" 的声明添加为 <OutputClaim />
信赖方政策:
<RelyingParty>
...
<TechnicalProfile Id="PolicyProfile">
<OutputClaims>
...
<OutputClaim ClaimTypeReferenceId="otherMails" PartnerClaimType="emails" />
</OutputClaims>
</TechnicalProfile>
</RelyingParty>
对于 Chris Padgett 的回答,您可以在声明中添加其他电子邮件(备用电子邮件)。
如果您只想将 SignIn 名称中的电子邮件声明添加到令牌中,您只需执行以下步骤:
打开您的
SignUporSignIn.xml
文件将
<OutputClaim ClaimTypeReferenceId="email" />
替换为<OutputClaim ClaimTypeReferenceId="signInNames.emailAddress" PartnerClaimType="email" />
保存此 SignUporSignIn.xml 文件并将其上传到 Azure AD B2C 以覆盖策略。
运行 SignUporSignIn 策略来测试它。 这是我的测试结果,您可以在令牌中看到电子邮件声明: