2016-02-09 102 views
10

我試圖從一個相當標準的用戶管理的現有應用程序設計微服務:有認證和授權,並存儲用戶數據。授權和用戶微服務設計

我的深化發展授權服務器來管理用戶使用OAuth2作爲授權認證授權。另一方面,我必須存儲用戶的信息/配置文件。

問:應該授權服務器管理:

  • 授權和用戶API?因此,其他微服務可以聯繫授權服務器/me獲得當前用戶,但也/users獲得用戶的完整列表。
  • 或者只有授權和我必須創建用戶微服務因此授權服務器只公開/me與用戶相關的API和用戶微服務將公開/users

第一個解決方案是簡單一點但授權服務器會變少通用的(可重複使用的少),因爲用戶應用數據模式將它(User表的數據庫中的數據模型)的一部分。


另一項要求是授權服務器如果用戶授權它之前就存在應檢查。

沒有用戶自動創建,必須由管理員邀請用戶訪問。 關於該要求,第一個解決方法很簡單,因爲授權服務器訪問用戶數據庫,但第二個解決方案授權服務器意味着:

  1. 共享數據庫用戶服務(哼哼不喜歡這樣)
  2. 呼叫用戶服務使用授權REST API(例如)前
  3. 授權服務器應mainta在最小User表(可以改名Account)和管理員將無法創建用戶在用戶服務授權服務器

我覺得解決方案是出在只有用戶帳戶,但有關任何建議2。3.

3.在首位似乎是最好的,但如果我想切換到另一個授權服務器,例如一公共(OAuth2用戶)如谷歌,Github上,臉譜等..安能妥協,因爲我們無法控制用戶帳戶的創建。

有沒有反饋意見?

+0

您如何管理身份驗證? –

+0

外部服務(基於CAS)負責認證。但我不是這項服務的擁有者。但是,您可以簡單地通過使用基於數據庫用戶信息的基本表單身份驗證 – Kakawait

回答

-1

這裏有多個選項,請提供更多詳細信息。例如你能夠使用現成的授權服務器實現(開源)嗎?你基於什麼技術?

我能夠輕鬆地集成IdentityServer(https://github.com/IdentityServer/IdentityServer3),並將其插入到自己的「用戶」服務中,只需簡單地實現一些接口即可。它也可能爲您處理數據庫硬件(存儲OAuth 2.0的所有數據,如祕密的客戶端,授權碼等)。 IdentityServer允許您提供自己的鏈接,以便爲用戶提供「註冊」操作,您還可以讓管理員接受或拒絕註冊,因此只有已接受的用戶才能登錄。

一般來說 - 按照OAuth2.0的RFC要求實施授權服務(詳情請參閱https://tools.ietf.org/html/rfc6749)絕不是小菜一碟。而需要時使用經過驗證的解決方案。

問候!