我有一个使用@ azure / msal-angular软件包进行身份验证的角度应用程序。我在从其他站点到我的站点创建sso时遇到问题。对于考试: 如果我登录到Microsoft学习站点,然后尝试登录到我的站点,它将显示我可以用来继续的帐户列表。 有什么办法可以使它直接继续使用当前会话中的登录帐户。
我尝试手动更新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; }
答案 0 :(得分:0)
acquireTokenSilent
使用带有prompt=none
的隐藏iframe,这意味着不会提示用户输入凭据。此API依靠在浏览器和AAD之间建立的会话cookie来获取新的access_token。如果您的会话已过期,则此API调用将失败,并且您将不得不通过调用acquireTokenPopup
或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