有时我从Angular调用Azure Active Directory图谱API时会收到错误AADSTS50058 .
我的设置:
-
adal-angular 1.0.13
-
angular v1.5.8
-
谷歌浏览器没有标志'Block 3rd party cookies'
-
尝试使用KMSI标志
-
没有阻止Chrome上的Cookie的扩展程序(最新)
-
update :路线包"angular-route"
这是代码:
var my_endpoints = {
'https ://graph.windows.net/': 'https ://graph.windows.net/'
};
adalProvider.init({
instance: 'https ://login.microsoftonline.com/',
tenant: "common",
clientId: '[my-client-ID-here]',
extraQueryParameter: 'nux=1',
cacheLocation: 'sessionStorage',
endpoints: my_endpoints
}, $httpProvider);
n.b . :https链接没有空格,我设置这是因为stackoverflow .
这是我无法解决的错误:错误AADSTS50058:已发送静默登录请求但未登录用户 . 用于表示用户会话的cookie未在请求中发送到Azure AD . 如果用户使用的是Internet Explorer或Edge,并且发送静默登录请求的Web应用程序位于与Azure AD endpoints (login.microsoftonline.com)不同的IE安全区域中,则会发生这种情况 .
试图断开连接并重新登录,但没有成功
我无法弄清楚的尴尬是它经常有效,然后有时会引发这个错误,使页面保持重载循环 . 如果我擦除AAD调用它按预期工作 .
这是因为我必须管理2个令牌,一个使用API,一个使用AAD GraphAPI?
如果是的话,我该如何管理呢?
任何帮助都非常感谢
2 回答
根据您的描述,您似乎随机面临无限循环问题 . 有多种原因可能引发这个问题 .
首先,您可以检查是否使用
ui-router
,如果是,请检查您是否为根页"/"设置了阶段定义 . 将此添加到您的州提供商路由:此外,此问题可能还有其他一些原因,如 Nested iframe creation , Hash reset . 有关详细信息,请参阅https://github.com/AzureAD/azure-activedirectory-library-for-js/wiki/FAQs#q2-my-app-gets-into-an-infinite-loop-sometimes-leading-to-digest-iterations-error .
此外,您可以将以下代码添加到
app.js
以打开日志记录 . 根据您希望重定向日志的方式实现日志方法 .此外,您还可以使用Chrome开发者工具查看所有信息,包括在视频存储中的错误说明:
我想我已经找到了这个问题;在谷歌浏览器中,在压力测试中,在登录后立即将浏览器问我的“保存密码”浏览器弹出窗口设置为“从不”;在金丝雀和其他浏览器中,我设置“保存”或简单地忽略,问题从未出现过 .
似乎在清除“从未保存”密码列表后修复了问题 .
复选框“使用智能锁密码记住应用和网站的密码”或“提供保存您的网络密码”无关紧要,经过测试检查状态且未经检查 .
谢谢 !