如何使用自定义策略让 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_hint
和 login_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>
我们正在使用自定义 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_hint
和 login_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>