2017-08-23 24 views
1

我們有一個新的web項目,我們已決定將身份服務器用作集中身份管理服務。這個想法是長期的,我們可以將其他項目遷移到此並在一個地方維護用戶。如何管理受保護的身份服務器的站點特定配置文件數據受保護的API

該網站本身由一個角度SPA(客戶端),一個web api後端(api資源)和一個單獨的aspnet核心MVC網站運行身份服務器組成。

用戶遵循openid連接流程,從前端重定向到身份服務器以登錄,然後使用生成的訪問令牌連接到API。

所有這一切工作正常,並且我們可以從訪問令牌中的API中如主題,電子郵件,姓名等基本消耗用戶數據

到目前爲止,罰款。

問題是,我們有一些額外的配置文件數據是特定於應用程序的 - 在原始設計中(沒有身份服務器),這些都包含在單個JWT中,因此從前端非常容易使用,後端或者通過內置的中間件如ASP.net身份。

我們的解決方法是,客戶端必須在登錄後調用API以從包含特定於此問題域的配置文件數據的API中檢索單獨的令牌 - 例如用戶在此係統中擁有的權限和角色。

這最後一步對我來說有點笨拙。例如,我們現在不能在API中使用ASPNET身份來獲取角色,因爲他們位於第二個令牌而不是訪問令牌。

有沒有最佳實踐或方法來處理這種情況?

例如我們是否應該在登錄時使身份服務器向API請求配置文件數據,或者這是不好的,因爲身份服務器不應該瞭解客戶端的機制?

回答

1

有趣的問題。我相信在這種情況下我會使用「單一責任負責人」。我會質疑誰有能力提供配置文件數據的「響應能力」。如果它是你的應用程序,那麼你是從正確的方向獲取API本身的配置文件信息。如果身份提供者具備身份提供者的能力,而不是繼續實施身份提供者。架構是關於決策的,一個好的架構將允許您輕鬆地更改這些決策,因此如果配置文件僅用於該應用程序,那麼將其保存在該應用程序中。希望它是有道理的。

+0

謝謝是的,它確實有意義 - 我懷疑它最終只是我們設計的選擇,但希望有人可能有一個具體的例子來解決這個問題。 –

+0

最後,我將它放在身份服務器中,因爲我們認爲更重要的是,Web應用程序不必擔心用戶界面的配置文件數據。我們還使用以下內容將配置文件數據放入令牌中:https://stackoverflow.com/questions/41687659/how-to-add-additional-claims-to-be-included-in-the-access-token-using -Asp-NET-ID –

相關問題