错误:AADSTS50058:发送了无提示登录请求,但没有用户登录-移动浏览器中的Angular ADAL身份验证问题

问题描述 投票:0回答:2

我们有一个使用Angular 7开发的网站,它使用Adal-Angular4库进行Azure Active Directoty身份验证。当在iPhone上的野生动物园中浏览该网站时,它会遇到以下错误。

Error: AADSTS50058: A silent sign-in request was sent but no user is signed in. The cookies used to represent the user's session were not sent in the request to Azure AD. This can happen if the user is using Internet Explorer or Edge, and the web app sending the silent sign-in request is in different IE security zone than the Azure AD endpoint (login.microsoftonline.com).
Safari浏览器的

Prevent Cross-Site Scripting选项关闭时,身份验证通过。我们还观察到,在其中一部Samsung Galaxy S8 +手机的Chrome浏览器中,会发生此问题。不知道发生此问题的确切原因是什么,并且有什么补救方法。

angular safari adal cross-site
2个回答
1
投票

原因:发生错误是因为将无提示登录发送到login.microsoftonline.com端点,但是未检测到AAD SSO cookie。该cookie确定用户是否已登录。仅当已知用户已登录或具有刷新令牌以交换新的访问令牌时,才使用静默登录。

可能的解决方案#1主动检查是否过期您可以通过检查您是否具有有效的ID令牌来尝试避免发生此错误。如果您的ID令牌无效,您将要求用户再次登录。

可能的解决方案#2捕获错误并要求用户再次登录要解决此错误,您将需要在回调中捕获该错误,您可以将该回调传递给Acquisitiontoken ADAL JS函数。如果发生AADSTS50058错误,您将要求用户再次登录。

可能的解决方案#3禁用了浏览器扩展Cookie阻止程序和第三方Cookie由于浏览器扩展会阻止cookie进行跟踪,因此某些用户可能会遇到此问题。这将导致发生AADSTS50058错误,您需要在浏览器扩展程序中将login.microsoftonline.com端点列入白名单,以避免再次收到此错误。

如果已在浏览器中禁用了第三方cookie,也会发生此错误。在浏览器中重新启用第三方cookie,以防止发生此错误。

请参阅此link


0
投票

除了在他的答案(可能的解决方案#2)中提到的“ Raghavendra- MSFT身份”之上,我们设法捕获了acquireToken调用的错误,然后使用acquireTokenRedirect调用获取了令牌,从而使其能够正常工作。它增加了一个重定向,但可以完成工作。请注意,无论使用ADAL还是MSAL v1,这都是我能做的任何研究中发现的唯一选择。 MSAL v2,即@ azure / msal-browser软件包,该软件包特别基于带有PKCE的OAuth 2.0授权代码流,因此无需第三方Cookie,因此可以作为适当的选择;但是,它目前处于Beta版,因此需要更多时间才能用于生产代码。

© www.soinside.com 2019 - 2024. All rights reserved.