项目认证需求分析
?
上圖的接入方對應OAuth2.0的客戶端,無論是P2P自身的應用還是第三方接入都通過統一的機制接入平臺,
用戶對應OAuth2.0的資源擁有者。
流程描述:
(1)用戶登錄通過接入方(目前指前端)在P2P平臺登錄,接入方采取OAuth2.0 密碼模式請求認證服務(UAA)。
(2)認證服務(UAA)調用統一賬號服務去驗證該用戶,并獲取用戶權限信息。
(3)認證服務(UAA)獲取接入方權限信息,并驗證接入方是否合法,。
(4)若登錄用戶以及接入方都合法,生成jwt令牌返回給接入方,其中jwt中包含了用戶權限及接入方權限。
(5)后續,接入方攜帶jwt令牌對P2P平臺的微服務資源進行訪問。
(6)API網關對令牌解析、并驗證接入方的權限是否能夠訪問本次請求的微服務。
(7)如果接入方的權限沒問題,API網關會將請求轉發至微服務,并將原請求附加上解析后的明文用戶信息jsonToken,微服務用jsonToken來識別本次請求的用戶會話。
流程所涉及到統一賬號服務、UAA服務、API網關這三個組件,因此下面介紹三個組件的職責。
1.統一賬號服務
? 提供B端用戶和C端用戶的登錄賬號、密碼、角色、權限、資源等系統級信息的管理,不包含用戶業務信息。
2.UAA服務
? 它承載了OAuth2.0接入方認證、登入用戶的認證、授權以及生成令牌的職責,并連接“統一賬號服務”,完成實際的用戶認證、授權功能。
3.API網關
? 作為系統的唯一入口,API網關封裝了系統內部架構,為接入方提供定制的API集合。它可能還具有其它職責,如身份驗證、監控、負載均衡、緩存、請求分片與管理、靜態響應處理。API網關方式的核心要點是,所有的接入方和消費端都通過統一的網關接入微服務,在網關層處理所有的非業務功能。
? 網關整合 OAuth2.0 有兩種思路,一種是授權服務器采用 jwt, 統一在網關層驗證,判斷權限等操作;另一種是讓資源端處理,網關只做路由轉發。
? 通過前面的流程描述,顯然我們使用了第一種。我們把API網關作為OAuth2.0的資源服務器角色,實現接入客戶端權限攔截、令牌解析并轉發當前登錄用戶信息(jsonToken)給微服務,這樣下游微服務就不需要關心令牌格式解析以及OAuth2.0相關機制了。
總結
- 上一篇: 引入OAuth2的主要目的
- 下一篇: UAA服务简介