單點登陸實現方案設計
整體流程:
設計思路:
單點登錄涉及 sso 認證中心與眾子系統,子系統與 sso 認證中心需要通信以交換令牌、校驗令牌及發起注銷請求,因而子系統必須集成 sso 的客戶端,sso 認證中心則是 sso 服務端,整個單點登錄過程實質是 sso 客戶端與服務端通信的過程,可用下部署圖描述:
sso 認證中心與 sso 客戶端通信方式有多種,HttpClient,WebService、rpc、restful
api 都可以,考慮各系統采用B/S架構,這里我們應用普遍的httpClient即可。
實現原理:
SSO Client
-
攔截子系統未登錄用戶請求,跳轉至 sso 認證中心
-
接收並存儲 sso 認證中心發送的令牌
-
與 SSO Server 通信,校驗令牌的有效性
-
建立局部會話
-
攔截用戶注銷請求,向 sso 認證中心發送注銷請求
-
接收 sso 認證中心發出的注銷請求,銷毀局部會話
SSO Server
-
驗證用戶的登錄信息
-
創建全局會話
-
創建授權令牌
-
與 SSO Client 通信發送令牌
-
校驗 SSO Client 令牌有效性
-
系統注冊
-
接收 SSO Client 注銷請求,注銷所有會話
實現方案:
主系統(認證中心):
- 主系統集成認證中心服務sso server,由主系統確認用戶的登錄操作。
子系統:
- 子系統可通過集成sso
client服務(可通過http請求方式)確定用戶是否登錄以及用戶對應的響應角色信息,用戶登錄后通過主系統重定向到各個子系統服務。
無狀態交互:
- 無狀態的注冊,受權等操作可直接由主系統通過httpclient方式直接向自服務發送請求,具體參見文檔:針對第三方系統登錄方案設計說明文檔.doc。