如何解决带有msal loginPopup的Google Access令牌?
我正在尝试将Azure Active Directory B2C用于具有Node JS API的SPA的身份验证流。我使用的是官方教程(https://github.com/Azure-Samples/active-directory-b2c-javascript-msal-singlepageapp和https://github.com/Azure-Samples/active-directory-b2c-javascript-nodejs-webapi)中提供的代码示例。据我所知,我已经正确设置了所有内容,并且根据提供的文档创建了Facebook和Google IDP注册。我已经使用默认的SignUpSignIn用户流设置了b2cPolicies
,因此除了指定我使用的是电子邮件,Google和Facebook之外,实际上没有什么可配置的。我可以通过Google和Facebook身份验证到Azure的示例SPA,而不会出现问题,id_tokens很好。当我单击该按钮以从示例API访问/ hello端点时,只有电子邮件和Facebook流会从myMSALObj.aquireTokenSilent
调用中生成正确的access_token,但是,在使用Google时,“选择帐户”弹出窗口会显示一个第二次。当我仅登录一个帐户时,它会短暂出现并再次消失,但是登录多个帐户时,我必须再次选择一个。这是一种糟糕的用户体验,有没有解决的办法?
解决方法
在acquireTokenSilent()
调用中,在MSAL配置对象内传递一个参数:login_hint=emailaddress
。然后使用Custom Policy将此值传递回Google IdP,以便Google跳过其帐户选择页面。
您可以通过向Google technical profile添加输入声明来做到这一点:
<InputClaims>
<InputClaim ClaimTypeReferenceId="login_hint" DefaultValue="{OIDC:LoginHint}" />
</InputClaims>
以上内容将使用OIDC claims resolver从login_hint
查询参数中提取值,并将该值作为名为login_hint的查询参数发送给Google。
https://developers.google.com/identity/protocols/oauth2/openid-connect
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。