我目前正在azure活動目錄隱式流oauth身份驗證中遇到一個奇怪的問題。我已經使用msal.js將用戶登錄到他們的微軟accont實現了一個spa webapp。Azure在隱式流程登錄期間使用錯誤的回調URL
userAgentApplication = new Msal.UserAgentApplication(client_id,null,function(errorDes,token,error,tokenType) { if(error) { console.log(JSON.stringify(error)); return; } },{ redirectUri: 'https://example.com/app/msalCallback.html' });
當他們點擊登錄執行是一段代碼:
logInPopup = function() { var uaa = userAgentApplication; return new Promise(function(resolve,reject) { uaa.loginPopup([ 'https://graph.microsoft.com/user.read' ]).then(function(token) { //signin success console.log(token); var user = uaa.getUser(); console.log(JSON.stringify(user)); resolve(user); }, function(error) { console.log(JSON.stringify(error)); reject(error); }); }) }
彈出出現和
如下所示的userAgentApplication執行用戶嘗試登錄但出現以下錯誤:
Microsoft帳戶遇到技術問題。請稍後再試。
在URL中的誤差參數字符串是:
ERROR_DESCRIPTION =對輸入參數 「REDIRECT_URI」所提供的值不是有效的預期的值是 「https://login.live.com/oauth20_desktop.srf」或它匹配 URL爲此客戶端應用程序註冊的重定向URI。
經進一步研究,我發現,雖然我配置的重定向URI是
https://example.com/app/msalCallback.html
(我的應用程序註冊頁面上證實爲真)
登錄彈出頁面中url的/oauth2/v2.0/authorise的redirect_uri爲:
redirect_uri=https://example.com/app/
這是奇怪,但上面的URI是不是隨機的。它實際上是以前註冊過的,但現在已刪除的應用程序的回調函數,它具有相同的名稱。
進一步的調查顯示,當我配置Msal使用舊的redirect_uri登錄通過。
我很新鮮的想法。它看起來像天青網絡中的一個錯誤,但想知道是否有其他人有這個問題,或者至少指出我正朝着與azure接觸的方向尋找解決方法。
在此先感謝
在UserAgentApplication,要傳遞的重定向URI的方式似乎有所不同。你可以嘗試遵循這個[模式](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/devApps/VanillaJSTestApp/index.html#L42)來配置重定向URI嗎? –
感謝Navya。通讀文檔後,我決定仔細閱讀api參考資料,並且您正確地設置了redirectUri。我應該使用'userAgentApplication.redirectUri ='https:// exampe.com/app/msalCallback.html''現在,azure平臺使用正確的回調。 – Dapo