我正在使用Azure AD B2C并添加了登录/注册自定义模板和策略。我在前端使用msal.js。
当任何用户尝试登录我们的应用程序时,我们有进程知道该域是否已与Microsoft B2C联合。一旦我们识别出用户,我们希望通过传递login_hint将用户定向到Microsoft公共登录端点,这样他们就会被迫使用工作帐户并获得id_token。
我试图让端点工作(需要传递login_hint,不知道如何)
directauthority ="https://login.microsoftonline.com/common/oauth2/authorize?"+ this.Config.signUpSignInPolicy;
clientApplication = new Msal.UserAgentApplication(
this.tenantConfig.clientID, this.directauthority,
);
我收到错误“endpoints_resolution_error:无法解析端点”
我该如何解决这个问题?
请建议
谢谢,
您可以将“domain_hint”和“login_hint”参数添加到Azure AD B2C请求:
https://login.microsoftonline.com/<tenant>/oauth2/v2.0/authorize?p=<policy>&...&domain_hint=onmicrosoft.com&[email protected]
如果将“domain_hint”参数设置为Azure AD技术配置文件的<Domain />
值,则Azure AD B2C将重定向到Azure AD端点,而不向最终用户显示注册或登录页面。
要将“login_hint”参数从Azure AD B2C传递到Azure AD端点:
1)创建“loginHint”声明类型:
<BuildingBlocks>
<ClaimsSchema>
<ClaimType Id="loginHint">
<DisplayName>Login Hint</DisplayName>
<DataType>string</DataType>
</ClaimType>
</ClaimsSchema>
</BuildingBlocks>
2)将“loginHint”输入声明添加到Azure AD技术配置文件:
<ClaimsProviders>
<ClaimsProvider>
<Domain>onmicrosoft.com</Domain>
<DisplayName>Work Account</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="WorkProfile">
<DisplayName>Work Profile</DisplayName>
<Protocol Name="OpenIdConnect"/>
<OutputTokenFormat>JWT</OutputTokenFormat>
<Metadata>
...
</Metadata>
<CryptographicKeys>
...
</CryptographicKeys>
<InputClaims>
<InputClaim ClaimTypeReferenceId="loginHint" PartnerClaimType="login_hint" DefaultValue="{OIDC:LoginHint}" />
</InputClaims>
<OutputClaims>
...
</OutputClaims>
<OutputClaimsTransformations>
...
</OutputClaimsTransformations>
<UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
</ClaimsProviders>
“loginHint”输入声明引用声明解析程序,该声明解析程序将此输入声明值设置为Azure AD B2C请求的“login_hint”参数。