我正在使用定制策略的入门套装,其中包括SocialAndLocalAccounts套装。
它对我来说工作得很好。
但是我面临一个问题。我需要在成功登录后将电子邮件作为声明获取。当用户已注册并立即重定向回应用程序时,我会收到电子邮件作为声明。
但是当用户仅登录时,我无法获得电子邮件。
我该怎么办?在哪里编写输出声明以获取声明中的电子邮件值?
请帮帮我,谢谢。
我正在使用定制策略的入门套装,其中包括SocialAndLocalAccounts套装。
它对我来说工作得很好。
但是我面临一个问题。我需要在成功登录后将电子邮件作为声明获取。当用户已注册并立即重定向回应用程序时,我会收到电子邮件作为声明。
但是当用户仅登录时,我无法获得电子邮件。
我该怎么办?在哪里编写输出声明以获取声明中的电子邮件值?
请帮帮我,谢谢。
对于 Chris Padgett 的回答,您可以将其他电子邮件(备用电子邮件)添加到声明中。
如果您只想将登录名的电子邮件声明添加到令牌中,只需要执行以下步骤:
打开您的 SignUporSignIn.xml
文件
将 <OutputClaim ClaimTypeReferenceId="email" />
替换为 <OutputClaim ClaimTypeReferenceId="signInNames.emailAddress" PartnerClaimType="email" />
保存此 SignUporSignIn.xml 文件并上传到 Azure AD B2C 以覆盖该策略。
希望这可以帮助您。
<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>
<TechnicalProfile Id="LocalAccountSignUpWithLogonEmail">
...
<OutputClaims>
...
<OutputClaim ClaimTypeReferenceId="otherMails" />
</OutputClaims>
</TechnicalProfile>
<TechnicalProfile Id="SelfAsserted-Social">
...
<OutputClaims>
...
<OutputClaim ClaimTypeReferenceId="otherMails" />
</OutputClaims>
</TechnicalProfile>
<TechnicalProfile Id="LocalAccountDiscoveryUsingEmailAddress">
...
<OutputClaims>
...
<OutputClaim ClaimTypeReferenceId="otherMails" />
</OutputClaims>
</TechnicalProfile>
<RelyingParty>
...
<TechnicalProfile Id="PolicyProfile">
<OutputClaims>
...
<OutputClaim ClaimTypeReferenceId="otherMails" PartnerClaimType="emails" />
</OutputClaims>
</TechnicalProfile>
</RelyingParty>
AAD-UserReadUsingObjectId
,使其将signInNames.emailAddress
声明复制到email
中。这使得登录与我们的其他整合注册、密码重置和社交登录的流程保持一致--在第一次登录/注册期间,每个流程都填充了email
。TrustFrameworkExtension.xml
(在<ClaimsProviders>
下)。 <ClaimsProvider>
<DisplayName>Azure Active Directory</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="AAD-UserReadUsingObjectId">
<OutputClaims>
<OutputClaim
ClaimTypeReferenceId="email"
PartnerClaimType="signInNames.emailAddress"
/>
</OutputClaims>
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
<TechnicalProfiles>
<TechnicalProfile Id="AAD-UserReadUsingObjectId">
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="email" PartnerClaimType="signInNames.emailAddress"/>
</OutputClaims>
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
<ClaimsTransformation Id="CreateEmailFromOtherMails" TransformationMethod="GetSingleItemFromStringCollection"> <InputClaims> <InputClaim ClaimTypeReferenceId="otherMails" TransformationClaimType="collection" /> </InputClaims> <OutputClaims>
<OutputClaim ClaimTypeReferenceId="email" TransformationClaimType="extractedItem" /> </OutputClaims </ClaimsTransformation>