我正在使用ADAL框架对单页面应用程序中的用户进行身份验证(Angular 1.4.8)。有时令牌不会为我配置的端点生成,如下所示(配置对象具有所有必需值)。
adalAuthenticationServiceProvider.init(
{
instance: config.Instance,
tenant: config.Tenant,
clientId: config.ClientId,
extraQueryParameter: 'nux=1',
endpoints: endpoints,
cacheLocation: 'localStorage',
frameRedirectUri: window.location.protocol + "//" + location.host + "/IFrame.html"
}, $httpProvider);
当我通过$http
请求任何api呼叫时,api呼叫未启动,因为未向相应资源生成令牌。在我的localStorage中,我收到以下错误:
错误:AADSTS50058:已发送静默登录请求但未登录任何用户。用于表示用户会话的Cookie未在请求中发送到Azure AD。如果用户使用的是Internet Explorer或Edge,并且发送静默登录请求的Web应用程序位于与Azure AD端点(login.microsoftonline.com)不同的IE安全区域中,则会发生这种情况。
我认为每当ADAL尝试获取资源的令牌时,由于cookie被删除/过期而失败。因此,不生成令牌。
我尝试过一种方法,比如每当我收到此错误时,我会重定向到登录页面(例如:authContext.login()
),但这会导致无限循环的身份验证。
我在边缘,铬,野生动物园,移动浏览中也遇到了错误。 任何人都可以告诉我如何解决这个问题吗?