首页 文章

调用AAD时AADSTS50058会导致刷新循环

提问于
浏览
3

有时我从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 回答

  • 0

    根据您的描述,您似乎随机面临无限循环问题 . 有多种原因可能引发这个问题 .

    首先,您可以检查是否使用 ui-router ,如果是,请检查您是否为根页"/"设置了阶段定义 . 将此添加到您的州提供商路由:

    $stateProvider.state("/", {
            url: "/",
            templateUrl: "<could be home page or default page>",
            requireADLogin: true,
        });
    

    此外,此问题可能还有其他一些原因,如 Nested iframe creationHash 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 以打开日志记录 . 根据您希望重定向日志的方式实现日志方法 .

    Logging = {
        level: 3,
        log: function (message) {
            console.log(message);
        }
    };
    

    此外,您还可以使用Chrome开发者工具查看所有信息,包括在视频存储中的错误说明:

    enter image description here

  • 2

    我想我已经找到了这个问题;在谷歌浏览器中,在压力测试中,在登录后立即将浏览器问我的“保存密码”浏览器弹出窗口设置为“从不”;在金丝雀和其他浏览器中,我设置“保存”或简单地忽略,问题从未出现过 .

    似乎在清除“从未保存”密码列表后修复了问题 .

    复选框“使用智能锁密码记住应用和网站的密码”或“提供保存您的网络密码”无关紧要,经过测试检查状态且未经检查 .

    谢谢 !

相关问题