2017-06-21 54 views
0

我正在開發一個JS應用程序,該應用程序使用OIDC與Azure AD應用程序對話。這裏是認證和驗證的流程 -Azure AD元數據和用戶信息不支持CORS

  1. 重定向用戶到普通登錄終點
  2. 獲得訪問令牌,id_token等回調URL
  3. 與智威湯遜密鑰驗證響應從已發現的網址檢索 - https://login.microsoftonline.com/common/discovery/keys
  4. 從發現的獲取用戶信息userinfo url - https://login.microsoftonline.com/common/openid/userinfo
  5. 根據設置將信息存儲在本地/會話存儲中。

Azure AD的問題是,我們無法完成第3步和第4步。這兩個網址都不支持CORS。我們無法驗證我們獲得的令牌並且無法檢索用戶信息。

有沒有更好的方法在微軟的OpenID for Azure AD實現中獲取userinfo?

回答

1

你是對的,Azure AD不支持CORS的元數據URL或密鑰URL

一般指導是不驗證id_token,因爲您只應將這些聲明用於顯示目的而不驅動任何核心功能。

對於核心功能(也稱爲API調用),您應該使用access_tokens,這應該由您的後端進行驗證,該後端不需要啓用CORS的端點。

你會看到這些校長在Azure AD SPA sample中的行動authContext.getCachedUser()adal.js是用來獲取讀取用戶和它的聲明沒有任何驗證。

如果您想獲得更多驗證的用戶信息,則指導將通過Microsoft Graph's /me endpoint調用圖表以獲取用戶信息。您可以在Azure AD Xamarin Sample中看到此模式。

您可以爲Azure AD反饋論壇中的請求投票:Add CORS support for discovery and json web key set endpoints