單點登錄落地實現(xiàn)技術(shù)有哪些,有哪些流行的登錄方案搭配?

實現(xiàn)單點登錄說到底就是要解決如何產(chǎn)生和存儲那個信任,再就是其他系統(tǒng)如何驗證這個信任的有效性,因此要點也就以下兩個:1、存儲信任 ;2、服務(wù)器生產(chǎn)~驗證信任 ; 3、拿到服務(wù)器再次驗證。

單點登錄的常見落地實現(xiàn)技術(shù)有哪些?

身份認證技術(shù):

1. cas(單點登錄)

2. Spring Security OAuth2(第三方登錄授權(quán):QQ登陸)

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

安全控制框架:

1. spring-security

2. shiro:

cas(單點登錄)

解決問題:多個系統(tǒng)只需登錄一次,無需重復登錄

原理:授權(quán)服務(wù)器,被授權(quán)客戶端 CS架構(gòu)

1. 授權(quán)服務(wù)器(一個)保存了全局的一份session,客戶端(多個)各自保存自己的session

2. 客戶端登錄時判斷自己的session是否已登錄,若未登錄,則(告訴瀏覽器)重定向到授權(quán)服務(wù)器

(參數(shù)帶上自己的地址,用于回調(diào))

3. 授權(quán)服務(wù)器判斷全局的session是否已登錄,若未登錄則定向到登錄頁面,提示用戶登錄,登錄成

功后,授權(quán)服務(wù)器重定向到客戶端(參數(shù)帶上ticket【一個憑證號】)

4. 客戶端收到ticket后,請求服務(wù)器獲取用戶信息

5. 服務(wù)器同意客戶端授權(quán)后,服務(wù)端保存用戶信息至全局session,客戶端將用戶保存至本地session

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

缺點:cas單點登錄技術(shù)適用于傳統(tǒng)應(yīng)用的場景比較多, 官方示例也是以javaWeb為準, 對微服務(wù)化應(yīng)

用,前后端分離應(yīng)用,支持性較差。

oauth2(第三方登錄授權(quán))

解決問題:第三方系統(tǒng)訪問主系統(tǒng)資源,用戶無需將在主系統(tǒng)的賬號告知第三方,只需通過主系統(tǒng)的授

權(quán),第三方就可使用主系統(tǒng)的資源

如:APP1需使用微信支付,微信支付會提示用戶是否授權(quán):取消,用戶授權(quán)后,APP1就可使用微信支

付功能了。

OAuth2是用來允許用戶授權(quán)第三方應(yīng)用訪問他在另一個服務(wù)器上的資源的一種協(xié)議,它不是用來做單

點登錄的,但我們可以利用它來實現(xiàn)單點登錄。

原理:主系統(tǒng),授權(quán)系統(tǒng)(給主系統(tǒng)授權(quán)用的,也可以跟主系統(tǒng)是同一個系統(tǒng)),第三方系統(tǒng)。

1. 第三方系統(tǒng)需要使用主系統(tǒng)的資源,第三方重定向到授權(quán)系統(tǒng)

2. 根據(jù)不同的授權(quán)方式,授權(quán)系統(tǒng)提示用戶授權(quán)

3. 用戶授權(quán)后,授權(quán)系統(tǒng)返回一個授權(quán)憑證(accessToken)給第三方系統(tǒng)【accessToken是有有效

期的】

4. 第三方使用accessToken訪問主系統(tǒng)資源【accessToken失效后,第三方需重新請求授權(quán)系統(tǒng),以

獲取新的accessToken】

Resource Server: 被授權(quán)訪問的資源

Authotization Server:OAUTH2認證授權(quán)中心

Resource owner : 資源擁有者

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

jwt (客戶端token)

難度較大,需要你了解很多協(xié)議~

Json web token (JWT),是為了在網(wǎng)絡(luò)應(yīng)用環(huán)境間傳遞聲明而執(zhí)行的一種基于JSON的開放標準((RFC

7519).

該token被設(shè)計為緊湊且安全的,特別適用于分布式站點的單點登錄(SSO)場景。JWT的聲明一般被用

來在身份提供者和服務(wù)提供者間傳遞被認證的用戶身份信息,以便于從資源服務(wù)器獲取資源,也可以增

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

基于JWT認證協(xié)議,自己開發(fā)SSO服務(wù)和權(quán)限控制。

SpringSecurity

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

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

它依賴于Servlet過濾器。這些過濾器攔截進入請求,并且在應(yīng)用程序處理該請求之前進行某些安全處

理。

Shiro

spring-boot-starter-springsecurity

特征 spring-security + oauth2 shiro + cas jwt

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

自定義

權(quán)限

支持,用戶登錄后將用戶的權(quán)限列表

寫入認證服務(wù)器

支持 , 用戶登錄后將用戶

的權(quán)限列表寫入客戶端 支持

認證服

務(wù)集群 -- CAS支持 支持

共享

session

支持 支持 支持

前后端

分離 支持,參數(shù)始終攜帶access_token

支持不夠友好,需要改造

CAS服務(wù)端 支持

Apache Shiro 是一個強大而靈活的開源安全框架,它干凈利落地處理身份認證,授權(quán),企業(yè)會話管理

和加密。

以下是 Apache Shiro 可以做的事情:

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

2. 對用戶執(zhí)行訪問控制

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

4. 判斷用戶是否被允許做某事

5. 在任何環(huán)境下使用 Session API,即使沒有 Web 或 EJB 容器。

6. 在身份驗證,訪問控制期間或在會話的生命周期,對事件作出反應(yīng)。

7. 聚集一個或多個用戶安全數(shù)據(jù)的數(shù)據(jù)源,并作為一個單一的復合用戶“視圖”。

8. 啟用單點登錄(SSO)功能。內(nèi)置了jasig-cas

9. 為沒有關(guān)聯(lián)到登錄的用戶啟用"Remember Me"服務(wù)。

市面主流的技術(shù)搭配

搭配方案一

搭配方案二

技術(shù)人員態(tài)度: 通吃才對!大家覺得這個課程對大家有幫助嗎?敬請關(guān)注,下一個文章告訴大家具體的代碼實現(xiàn)方案!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 寒假學習的小課題,把之前的筆記整理整理記錄一下(長文警告)因為當時看到的東西涉及很多,所以有一些地方?jīng)]有深入去探討...
    折戟塵風閱讀 2,237評論 0 7
  • 單點登錄是我比較喜歡的一個技術(shù)解決方案,一方面他能夠提高產(chǎn)品使用的便利性,另一方面他分離了各個應(yīng)用都需要的登錄服務(wù)...
    袁俊亮技術(shù)博客閱讀 1,744評論 0 15
  • JEESZ分布式框架單點登錄集成方案 第一節(jié):單點登錄簡介 第一步:了解單點登錄 SSO主要特點是: SSO應(yīng)用之...
    ITsupuerlady閱讀 754評論 0 6
  • 一、什么是單點登錄? 單點登錄SSO(Single Sign On)說得簡單點就是在一個多系統(tǒng)共存的環(huán)境下,用戶在...
    yljava閱讀 12,462評論 0 13
  • 看了很多都說三十幾歲,就步入了中年??墒撬坪跣膽B(tài)依然不那么認為!也許父母親頭發(fā)白了很多,侄子侄女由初升高了,同學們...
    妖魅的生精致的活閱讀 211評論 1 2

友情鏈接更多精彩內(nèi)容