3

有時,當從Angular調用Azure Active Directory圖形API時,我收到錯誤AADSTS50058。AADSTS50058在調用AAD時導致刷新循環

我的設置:

  • 阿達爾棱角1.0.13
  • 角v1.5.8
  • 谷歌瀏覽器上沒有標誌 '阻止第三方Cookie'
  • 試圖與KMSI國旗
  • 沒有任何擴展程序可阻止Chrome上的Cookie(最新版)
  • 更新:route package「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鏈接是沒有空間,我設置計算器因的。

這是我無法解析的錯誤: 錯誤AADSTS50058:已發送靜默登錄請求,但沒有用戶登錄。用於表示用戶會話的Cookie未在請求中發送到Azure AD 。如果用戶使用Internet Explorer或Edge,並且發送靜默登錄請求的Web應用程序與Azure AD終端節點(login.microsoftonline.com)處於不同的IE安全區域,則可能會發生這種情況。

嘗試斷開並重新登錄,但沒有成功

尷尬的事我想不通的是,它經常作品,那麼有時它引發此錯誤,保持頁面重載循環。 如果我擦除AAD調用它按預期工作。

這是因爲我必須管理2個令牌,一個帶有API,另一個帶有AAD GraphAPI?

如果是的話,我該如何管理?

任何幫助,高度讚賞

+0

我不知道你是否可以解決這個問題。我在Azure門戶中重定向到Application Insights Analytics時遇到過這種情況。原因是公司IT已將login.microsoftonline.com配置爲Internet Explorer中的受信任站點,而AppInsights站點則不是。這顯然阻止IE允許無聲登錄。我的電腦上的修復方法是將其他網站添加到受信任的網站列表中。 – RasmusW

回答

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); 
    } 
}; 

此外,你可以看到所有包括SEESION存儲錯誤描述利用Chrome開發者工具的信息:

enter image description here