我一直在嘗試IdentityServer3,並觀看了視頻,然後通過在線文檔,下載了樣本,並且我已將樣本全部正常工作。identityserver3 - 一個id服務器發出的訪問令牌可以與另一個id服務器一起使用嗎?
我已成立了兩個獨立的身份的服務器,一個用於保護Web API和一個用於固定的MVC應用程序。我這樣做,而不是有一個id服務器,因爲這兩個應用程序基本上爲兩個不同的客戶,只有少數用戶將是共同的。
但是,我確實希望能夠從mvc應用程序(mvc_B,idsvr_B)爲某些用戶(單一登錄)調用web api(api_A,idsvr_A)。
我發現如果我在兩端使用相同的idsvr,但我認爲我應該可以讓mvc_B從idsvr_B獲取一個訪問令牌,將它添加到調用api_A的請求並讓idsvr_A act對令牌中的索賠?
我發現idsvr_A不理解(?)來自idsvr_B的令牌,並且當我嘗試檢查context.Principal在api_A中的斷點處的聲明列表時,它爲空&未將主體設置爲標識從idsvr_B:
如在從ResourceAuthorizationManager,在
CheckAccessAsync(ResourceAuthorizationContext上下文)的上下文中,類導出
方法與上context.Principal一個空的聲明列表結束。
有什麼我需要做的翻譯從一個idsvr到另一個索賠?或者我沒有正確設置它?我認爲,由於訪問令牌格式是標準的,令牌在ID服務器之間可以互換?
我確實要求確認這應該工作,然後再進一步調試以確保令牌正確傳遞和接收。
感謝您的及時答覆。是的,這兩個id服務器會有不同的頒發者名稱和證書。我在想這種情況就像谷歌,Facebook等的外部認證,但在這種情況下,外部提供者只是另一個IdentityServer3?您是否有時間詳細說明您爲每個身份服務器添加驗證中間件的建議? –
繼我最後的評論,這將是有意義的或允許在API的Startup.cs文件app.UseIdentityServerBearerTokenAuthentication(多次調用),每一個指定不同管理局(所有由API信任)?如果是這樣,app.UseResourceAuthorization(...)是否仍然有效? –
外部提供者方法僅適用於基於Web瀏覽器的流程。如果這就是你使用的 - 這是推薦的架構。 – leastprivilege