2015-10-12 36 views
2

我一直在嘗試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服務器之間可以互換?

我確實要求確認這應該工作,然後再進一步調試以確保令牌正確傳遞和接收。

回答

2

據推測這兩個身份的服務器將有不同的發行人的名稱和不同的簽名證書 - 所以沒有 - 除非你添加一個驗證的中間件每個identityserver網絡API不會同時接受。

這是罕見的一個API信任多個發行者,但技術上是可行的。

+0

感謝您的及時答覆。是的,這兩個id服務器會有不同的頒發者名稱和證書。我在想這種情況就像谷歌,Facebook等的外部認證,但在這種情況下,外部提供者只是另一個IdentityServer3?您是否有時間詳細說明您爲每個身份服務器添加驗證中間件的建議? –

+0

繼我最後的評論,這將是有意義的或允許在API的Startup.cs文件app.UseIdentityServerBearerTokenAuthentication(多次調用),每一個指定不同管理局(所有由API信任)?如果是這樣,app.UseResourceAuthorization(...)是否仍然有效? –

+0

外部提供者方法僅適用於基於Web瀏覽器的流程。如果這就是你使用的 - 這是推薦的架構。 – leastprivilege

相關問題