單點登陸落地實現技術有哪些,有哪些流行的登陸方案搭配?

實現單點登陸說到底就是要解決如何產生和存儲那個信任,再就是其餘系統如何驗證這個信任的有效java

性,所以要點也就如下兩個:一、存儲信任 ;二、服務器生產~驗證信任 ; 三、拿到服務器再次驗證。web

 

 

單點登陸的常見落地實現技術有哪些?redis

身份認證技術:

 

 

1. cas(單點登陸)spring

2. Spring Security OAuth2(第三方登陸受權:QQ登錄)後端

3. jwt (客戶端token:原生)瀏覽器

安全控制框架:安全

1. spring-security服務器

2. shiro:微信

cas(單點登陸)

 

 

解決問題:多個系統只需登陸一次,無需重複登陸網絡

原理:受權服務器,被受權客戶端 CS架構

1. 受權服務器(一個)保存了全局的一份session,客戶端(多個)各自保存本身的session

2. 客戶端登陸時判斷本身的session是否已登陸,若未登陸,則(告訴瀏覽器)重定向到受權服務器

(參數帶上本身的地址,用於回調)

3. 受權服務器判斷全局的session是否已登陸,若未登陸則定向到登陸頁面,提示用戶登陸,登陸成

功後,受權服務器重定向到客戶端(參數帶上ticket【一個憑證號】)

4. 客戶端收到ticket後,請求服務器獲取用戶信息

5. 服務器贊成客戶端受權後,服務端保存用戶信息至全局session,客戶端將用戶保存至本地session

6. 默認不支持http請求, 僅支持https 。 生成證書 keytools

缺點:cas單點登陸技術適用於傳統應用的場景比較多, 官方示例也是以javaWeb爲準, 對微服務化應

用,先後端分離應用,支持性較差。

oauth2(第三方登陸受權)

 

 

 

解決問題:第三方系統訪問主系統資源,用戶無需將在主系統的帳號告知第三方,只需經過主系統的授

權,第三方就可以使用主系統的資源

如:APP1需使用微信支付,微信支付會提示用戶是否受權:取消,用戶受權後,APP1就可以使用微信支

付功能了。

OAuth2是用來容許用戶受權第三方應用訪問他在另外一個服務器上的資源的一種協議,它不是用來作單

點登陸的,但咱們能夠利用它來實現單點登陸。

原理:主系統,受權系統(給主系統受權用的,也能夠跟主系統是同一個系統),第三方系統。

1. 第三方系統須要使用主系統的資源,第三方重定向到受權系統

2. 根據不一樣的受權方式,受權系統提示用戶受權

3. 用戶受權後,受權系統返回一個受權憑證(accessToken)給第三方系統【accessToken是有有效

期的】

4. 第三方使用accessToken訪問主系統資源【accessToken失效後,第三方需從新請求受權系統,以

獲取新的accessToken】

Resource Server: 被受權訪問的資源

Authotization Server:OAUTH2認證受權中心

Resource owner : 資源擁有者

Client:使用API的客戶端(如Android 、IOS、web app)

 

jwt (客戶端token)

難度較大,須要你瞭解不少協議~

Json web token (JWT),是爲了在網絡應用環境間傳遞聲明而執行的一種基於JSON的開放標準((RFC

7519).

該token被設計爲緊湊且安全的,特別適用於分佈式站點的單點登陸(SSO)場景。JWT的聲明通常被用

來在身份提供者和服務提供者間傳遞被認證的用戶身份信息,以便於從資源服務器獲取資源,也能夠增

加一些額外的其它業務邏輯所必須的聲明信息,該token也可直接被用於認證,也可被加密。

基於JWT認證協議,本身開發SSO服務和權限控制。

SpringSecurity

 

 

springSecurity 是spring家族的安全控制框架, 功能很是完善。

Spring Security是可以爲J2EE項目提供綜合性的安全訪問控制解決方案的安全框架。

它依賴於Servlet過濾器。這些過濾器攔截進入請求,而且在應用程序處理該請求以前進行某些安全處

理。

Shiro

 

 

spring-boot-starter-springsecurity

特徵 spring-security + oauth2 shiro + cas jwt

依賴 jdk、jwt、redis redis、jdk、jwt --

自定義

權限

支持,用戶登陸後將用戶的權限列表

寫入認證服務器

支持 , 用戶登陸後將用戶

的權限列表寫入客戶端 支持

認證服

務集羣 -- CAS支持 支持

共享

session

支持 支持 支持

先後端

分離 支持,參數始終攜帶access_token

支持不夠友好,須要改造

CAS服務端 支持

Apache Shiro 是一個強大而靈活的開源安全框架,它乾淨利落地處理身份認證,受權,企業會話管理

和加密。

如下是 Apache Shiro 能夠作的事情:

 

 

1. 驗證用戶來覈實他們的身份

2. 對用戶執行訪問控制

3. 判斷用戶是否被分配了一個肯定的安全角色

4. 判斷用戶是否被容許作某事

5. 在任何環境下使用 Session API,即便沒有 Web 或 EJB 容器。

6. 在身份驗證,訪問控制期間或在會話的生命週期,對事件做出反應。

7. 彙集一個或多個用戶安全數據的數據源,並做爲一個單一的複合用戶「視圖」。

8. 啓用單點登陸(SSO)功能。內置了jasig-cas

9. 爲沒有關聯到登陸的用戶啓用"Remember Me"服務。

 

市面主流的技術搭配

 

搭配方案一

 

搭配方案二

 

技術人員態度: 通吃纔對!你們以爲這個課程對你們有幫助嗎?敬請關注,下一個文章告訴你們具體的代碼實現方案!

相關文章
相關標籤/搜索