如何使用自定义策略让 login_hint 与社交 IDP 一起工作

how to get login_hint working with social IDP using custom policy

我们正在使用自定义 SignIn/SigUp 策略,将 Facebook、LinkedIn、Twitter、Google+ 配置为社交 IDP。

我们已经构建了一个自定义页面,我们在其中询问用户他们的电子邮件,然后使用 domain_hint 将他们重定向到特定的 IDP 页面(我们有围绕此构建的逻辑),例如:domain_hint=facebook.com.

我想在 login_hint 中将用户在第一步中输入的电子邮件地址与 domain_hint 一起传递,以便用户在重定向到时不必再次输入电子邮件IDP 页面 (Facebook.com).

我从 IDP 的 AD B2C 文档中获取代码,并在 Facebook、Linkedin、Twitter 等的声明提供程序中添加如下代码,但它不起作用

<InputClaims>
    <InputClaim ClaimTypeReferenceId="logonIdentifier" PartnerClaimType="login_hint" DefaultValue="{OIDC:LoginHint}" />
</InputClaims>
<OutputClaims>
    <OutputClaim ClaimTypeReferenceId="logonIdentifier" Required="true" />
</OutputClaims>

是否有 way/option 实现此目的?

查看此 PDF:使用登录定位 sign-in 用户或域名 和域提示

Using Login hint in custom policy.

To prepopulate the sign-in name, in your custom policy, override the SelfAsserted-LocalAccountSignin-Email technical profile. In the section, you set the signInName's claim's DefaultValue to {OIDC:LoginHint}. The {OIDC:LoginHint} variable contains the value of the login_hint parameter. Azure AD B2C reads the signInName input claim's value, and pre-populates the signInName textbox

对于上述身份提供者,Google 是唯一支持登录提示的身份提供者,因此如果将 domain_hintlogin_hint 参数添加到 Azure AD B2C 请求:

https://login.microsoftonline.com/te/<tenant>/<policy>/oauth2/v2.0/authorize?...&domain_hint=google.com&login_hint=someone@somewhere.com

然后您可以将 "login_hint" 参数从 Azure AD B2C 传递到 Google 端点,如下所示:

1) 创建一个 "loginHint" 声明类型:

<ClaimType Id="loginHint">
  <DisplayName>Login Hint</DisplayName>
  <DataType>string</DataType>
</ClaimType>

2) 将 "loginHint" 输入声明添加到 Google 技术配置文件中:

<ClaimsProvider>
  <Domain>google.com</Domain>
  <DisplayName>Google Account</DisplayName>
  <TechnicalProfiles>
    <TechnicalProfile Id="GoogleAccount-OAuth2">
      <DisplayName>Google Account</DisplayName>
      <Protocol Name="OAuth2" />
      ...
      <InputClaims>
        <InputClaim ClaimTypeReferenceId="loginHint" PartnerClaimType="login_hint" DefaultValue="{OIDC:LoginHint}" />
      </InputClaims>
      ...
    </TechnicalProfile>
  </TechnicalProfiles>
</ClaimsProvider>