B2C 注册屏幕显示 {OIDC:LoginHint} 而不是登录

B2C Sign-up screen shows {OIDC:LoginHint} instead of the login

我正在将 login_hint 中一位潜在会员的电子邮件从我的网站传递到 B2C。在我的自定义策略中,我将“注册”技术资料的电子邮件声明设置为 {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?

谢谢

在 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