0

我的解決方案一直在通過IdentityServer3對Azure AD進行很好的身份驗證。現在我們正在嘗試集成一些Microsoft Graph功能。可悲的是,它失敗了。IdentityServer3 Microsoft Graph的作用域和流程

通過其中一個演示(https://graph.microsoft.io/en-us/docs/get-started/aspnetmvc)項目,該文檔詳細介紹了在Microsoft應用程序註冊門戶(https://apps.dev.microsoft.com)上註冊新應用程序的情況,並明確告知應用程序允許隱式流。

確保選擇了允許隱流複選框,然後輸入 http://localhost:55065/爲重定向URI。 允許隱式流程 選項啓用OpenID Connect混合流程。在認證過程中, 這使得應用程序可以接收應用程序用於 獲取訪問令牌的登錄信息(id_token)和 工件(在此情況下,爲授權代碼)。

當然,我們已經申請註冊了我們的Azure的生產門戶網站,做我們的認證,並從我們的客戶IdentityServer3,我們有這似乎表明,我們現在是設置爲Flow = Flows.Implicit流只允許隱式流,但期望隱式流。

當我添加其他範圍 - offline_access User.Read Mail.Send - 我不再能夠成功進行身份驗證,相反,我收到一個錯誤,指出Invalid Scope

我擔心的是,「微軟應用程序註冊門戶」與現實生活中的不一樣之處在於,某些東西沒有正確設置。在生產Azure應用註冊時沒有特定的「允許隱式流」設置,那麼它是否真的接受Implicit Flow

有沒有人有過將這兩個系統整合在一起的成功經驗,並且通過使用IdentityServer3對Azure AD進行單一身份驗證,獲得完全利用Microsoft Graph的預期結果?

回答

0

在Azure AD註冊門戶中啓用隱式授權流程需要在應用清單中添加"oauth2AllowImplicitFlow":true。本文檔的部分中的「單頁應用程序啓用OAuth 2.0用戶隱性補助」有詳細的關於如何做到這一步一步的方向:

https://docs.microsoft.com/en-us/azure/active-directory/active-directory-integrating-applications

此外隱性補助流不會給你一個刷新令牌,offline_access範圍特別要求刷新令牌。我建議刪除該範圍。

下面是對AAD隱式許可的細節多讀書的好DOC:

https://docs.microsoft.com/en-us/azure/active-directory/active-directory-dev-understanding-oauth2-implicit-grant