我有一个 Angular 应用程序,它使用 @azure/msal-Angular 包进行身份验证。我在从其他站点创建 sso 到我的站点时遇到问题。例如: 如果我登录微软学习网站,然后尝试登录我的网站,它会显示我可以用来继续的帐户列表。 有什么办法可以让它直接使用当前 session 中登录的帐户继续。
我尝试手动更新 url 并将提示变量设置为 none,然后它就可以工作了。但我面临着通过代码自动设置它的问题。我尝试在额外的查询参数中传递提示,但它显示重复条目。
constructor(public router: Router,private
appservice:appService,private msl:MsalService) {}
canActivate():boolean {
//debugger;
if(!this.appservice.isAuthenticated()){
this.msl.loginRedirect();
return true;
}
return true; }
最佳答案
acquireTokenSilent
使用隐藏的 iframe prompt=none
这意味着不会提示用户输入凭据。该API依赖于浏览器和AAD之间建立的 session cookie来获取新的access_token。如果您的 session 已过期,此 API 调用将失败,您将必须通过调用 acquireTokenPopup
进行交互式 token 更新。或acquireTokenRedirect
系统将要求您再次输入您的凭据。
您的浏览器可能会删除 cookie (x-ms-cpim-transdoes)
。
此外,我们在 Mac 用户的 Safari 浏览器中也看到了此问题,问题与 Safari Preferences -> Privacy -> Prevent cross-site tracking
的设置有关。
您可以检查以下线程是否有类似问题。
https://github.com/AzureAD/microsoft-authentication-library-for-js/issues/349
关于angular - 登录重定向时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55952585/