我的解決方案一直在通過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的預期結果?