0

我正在从我的网站向 B2C 传递 login_hint 中潜在成员的电子邮件。在我的自定义策略中,我将“注册”技术配置文件的电子邮件声明设置为 {OIDC:LoginHint}

           <TechnicalProfile Id="CustomLocalAccountSignUpWithLogonEmail">
                <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>
                </Metadata>
                <CryptographicKeys>
                    <Key Id="issuer_secret" StorageReferenceId="B2C_1A_TokenSigningKeyContainer" />
                </CryptographicKeys>
                <InputClaims>
                    <InputClaim ClaimTypeReferenceId="email" DefaultValue="{OIDC:LoginHint}" />
                </InputClaims>
                <OutputClaims>

但是,字符串 {OIDC:LoginHint} 以如下形式显示,而不是查看用户的电子邮件:

在此处输入图像描述

2018 年有一个类似的问题,建议使用 JavaScript 填充注册表单上的电子邮件字段。但是,我不使用自定义模板,所以 JavaScript 解决方法对我不起作用。

我只需要使用 {OIDC:LoginHint} 中传递的值填充电子邮件声明。有没有办法在策略 XML 中解决这个问题?

谢谢

4

1 回答 1

2

在 selfAsserted 技术配置文件中,您必须:

  • IncludeClaimResolvingInClaimsHandling 元数据必须设置为 true。
  • 输入或输出声明属性 AlwaysUseDefaultValue 必须设置为 true。

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

使用这两种设置的示例在这里 https://docs.microsoft.com/en-us/azure/active-directory-b2c/claim-resolver-overview#restful-technical-profile

于 2022-01-05T22:14:18.927 回答