2017-09-15 49 views
1

我目前正在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接觸的方向尋找解決方法。

在此先感謝

+0

在UserAgentApplication,要傳遞的重定向URI的方式似乎有所不同。你可以嘗試遵循這個[模式](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/devApps/VanillaJSTestApp/index.html#L42)來配置重定向URI嗎? –

+0

感謝Navya。通讀文檔後,我決定仔細閱讀api參考資料,並且您正確地設置了redirectUri。我應該使用'userAgentApplication.redirectUri ='https:// exampe.com/app/msalCallback.html''現在,azure平臺使用正確的回調。 – Dapo

回答

0

我已經找到了問題的原因在仔細閱讀msal.js文檔我發現我被錯誤地設置redirectUri。正確的方法是如下:

var userAgentApplication = new 
Msal.UserAgentApplication(client_id,null,function(errorDes,token,error,tokenType) 
{ 
     if(error) { 
     console.log(JSON.stringify(error)); 
     return; 
     } 
}); 

userAgentApplication.redirectUri = 'https://example.com/app/msalCallback.html' 

希望有所幫助。

問候

相關問題