有时我从Angular调用Azure Active Directory图谱API时会收到错误AADSTS50058。
我的设置:
这是代码:
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端点(login.microsoftonline.com)不同的IE安全区域中,则会发生这种情况。
试图断开连接并重新登录但没有成功
我能解决的尴尬是它经常有效,然后有时会引发这个错误,使页面保持重载循环。 如果我删除AAD调用它会按预期工作。
这是因为我必须管理2个令牌,一个使用API,一个使用AAD GraphAPI?
如果是,我该如何管理呢?
任何帮助都非常感谢
答案 0 :(得分:2)
根据您的描述,您似乎随机面临无限循环问题。可能有多种原因引发这个问题。
首先,您可以检查是否使用ui-router
,如果是,请检查您是否为根页" /"设置了阶段定义。将此添加到您的州提供商路由:
$stateProvider.state("/", {
url: "/",
templateUrl: "<could be home page or default page>",
requireADLogin: true,
});
此外,此问题可能还有其他一些原因,例如嵌套iframe创建,哈希重置。您可以参考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
以打开日志记录。根据您希望重定向日志的方式实现日志方法。
Logging = {
level: 3,
log: function (message) {
console.log(message);
}
};
此外,您还可以使用Chrome开发者工具查看所有信息,包括在视觉存储中的错误说明:
答案 1 :(得分:0)
我想我已经找到了这个问题; 在谷歌浏览器中,在压力测试中,在登录后立即将浏览器问我的“保存密码”浏览器弹出窗口设置为“从不”; 在金丝雀和其他浏览器中,我设置“保存”或简单地忽略,问题从未出现过。
似乎在清除“从未保存”密码列表后修复了问题。
复选框“使用智能锁密码记住应用和网站的密码”或“提供保存您的网络密码”无关紧要,经过测试检查状态且未经过检查。
谢谢你!