簡體   English   中英

IdentityServer3 Microsoft Graph范圍和流程

[英]IdentityServer3 Microsoft Graph scopes and flow

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

通過一個示例項目( https://graph.microsoft.io/en-us/docs/get-started/aspnetmvc )運行,該文檔詳細介紹了在Microsoft App Registration Portal( 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

我擔心的是,“ Microsoft應用程序注冊門戶”與現實生活完全不同,未正確設置某些內容。 生產Azure應用注冊上沒有特定的“允許隱式流程”設置,因此它真的接受Implicit Flow嗎?

是否有人能將這兩個系統集成在一起並從使用IdentityServer3針對Azure AD的單個身份驗證中獲得Microsoft Graph的完全利用所期望的結果?

要在Azure AD注冊門戶中啟用隱式授予流,需要在應用清單中添加"oauth2AllowImplicitFlow":true 本文檔的“為單頁應用程序啟用OAuth 2.0隱式授予”部分詳細說明了如何執行此操作的分步說明:

https://docs.microsoft.com/zh-cn/azure/active-directory/active-directory-integrating-applications

另外,隱式授予流不會提供刷新令牌, offline_access范圍專門要求刷新令牌。 我建議刪除該范圍。

這是一個很好的文檔,可以進一步閱讀有關AAD隱式授予的詳細信息:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM