单点登录 cas 设置回调地址_单点登录落地实现技术有哪些,有哪些流行的登录方案搭配?...
實(shí)現(xiàn)單點(diǎn)登錄說(shuō)到底就是要解決如何產(chǎn)生和存儲(chǔ)那個(gè)信任,再就是其他系統(tǒng)如何驗(yàn)證這個(gè)信任的有效
性,因此要點(diǎn)也就以下兩個(gè):1、存儲(chǔ)信任 ;2、服務(wù)器生產(chǎn)~驗(yàn)證信任 ; 3、拿到服務(wù)器再次驗(yàn)證。
單點(diǎn)登錄的常見(jiàn)落地實(shí)現(xiàn)技術(shù)有哪些?
身份認(rèn)證技術(shù):
1. cas(單點(diǎn)登錄)
2. Spring Security OAuth2(第三方登錄授權(quán):QQ登陸)
3. jwt (客戶(hù)端token:原生)
安全控制框架:
1. spring-security
2. shiro:
cas(單點(diǎn)登錄)
解決問(wèn)題:多個(gè)系統(tǒng)只需登錄一次,無(wú)需重復(fù)登錄
原理:授權(quán)服務(wù)器,被授權(quán)客戶(hù)端 CS架構(gòu)
1. 授權(quán)服務(wù)器(一個(gè))保存了全局的一份session,客戶(hù)端(多個(gè))各自保存自己的session
2. 客戶(hù)端登錄時(shí)判斷自己的session是否已登錄,若未登錄,則(告訴瀏覽器)重定向到授權(quán)服務(wù)器
(參數(shù)帶上自己的地址,用于回調(diào))
3. 授權(quán)服務(wù)器判斷全局的session是否已登錄,若未登錄則定向到登錄頁(yè)面,提示用戶(hù)登錄,登錄成
功后,授權(quán)服務(wù)器重定向到客戶(hù)端(參數(shù)帶上ticket【一個(gè)憑證號(hào)】)
4. 客戶(hù)端收到ticket后,請(qǐng)求服務(wù)器獲取用戶(hù)信息
5. 服務(wù)器同意客戶(hù)端授權(quán)后,服務(wù)端保存用戶(hù)信息至全局session,客戶(hù)端將用戶(hù)保存至本地session
6. 默認(rèn)不支持http請(qǐng)求, 僅支持https 。 生成證書(shū) keytools
缺點(diǎn):cas單點(diǎn)登錄技術(shù)適用于傳統(tǒng)應(yīng)用的場(chǎng)景比較多, 官方示例也是以javaWeb為準(zhǔn), 對(duì)微服務(wù)化應(yīng)
用,前后端分離應(yīng)用,支持性較差。
oauth2(第三方登錄授權(quán))
解決問(wèn)題:第三方系統(tǒng)訪問(wèn)主系統(tǒng)資源,用戶(hù)無(wú)需將在主系統(tǒng)的賬號(hào)告知第三方,只需通過(guò)主系統(tǒng)的授
權(quán),第三方就可使用主系統(tǒng)的資源
如:APP1需使用微信支付,微信支付會(huì)提示用戶(hù)是否授權(quán):取消,用戶(hù)授權(quán)后,APP1就可使用微信支
付功能了。
OAuth2是用來(lái)允許用戶(hù)授權(quán)第三方應(yīng)用訪問(wèn)他在另一個(gè)服務(wù)器上的資源的一種協(xié)議,它不是用來(lái)做單
點(diǎn)登錄的,但我們可以利用它來(lái)實(shí)現(xiàn)單點(diǎn)登錄。
原理:主系統(tǒng),授權(quán)系統(tǒng)(給主系統(tǒng)授權(quán)用的,也可以跟主系統(tǒng)是同一個(gè)系統(tǒng)),第三方系統(tǒng)。
1. 第三方系統(tǒng)需要使用主系統(tǒng)的資源,第三方重定向到授權(quán)系統(tǒng)
2. 根據(jù)不同的授權(quán)方式,授權(quán)系統(tǒng)提示用戶(hù)授權(quán)
3. 用戶(hù)授權(quán)后,授權(quán)系統(tǒng)返回一個(gè)授權(quán)憑證(accessToken)給第三方系統(tǒng)【accessToken是有有效
期的】
4. 第三方使用accessToken訪問(wèn)主系統(tǒng)資源【accessToken失效后,第三方需重新請(qǐng)求授權(quán)系統(tǒng),以
獲取新的accessToken】
Resource Server: 被授權(quán)訪問(wèn)的資源
Authotization Server:OAUTH2認(rèn)證授權(quán)中心
Resource owner : 資源擁有者
Client:使用API的客戶(hù)端(如Android 、IOS、web app)
jwt (客戶(hù)端token)
難度較大,需要你了解很多協(xié)議~
Json web token (JWT),是為了在網(wǎng)絡(luò)應(yīng)用環(huán)境間傳遞聲明而執(zhí)行的一種基于JSON的開(kāi)放標(biāo)準(zhǔn)((RFC
7519).
該token被設(shè)計(jì)為緊湊且安全的,特別適用于分布式站點(diǎn)的單點(diǎn)登錄(SSO)場(chǎng)景。JWT的聲明一般被用
來(lái)在身份提供者和服務(wù)提供者間傳遞被認(rèn)證的用戶(hù)身份信息,以便于從資源服務(wù)器獲取資源,也可以增
加一些額外的其它業(yè)務(wù)邏輯所必須的聲明信息,該token也可直接被用于認(rèn)證,也可被加密。
基于JWT認(rèn)證協(xié)議,自己開(kāi)發(fā)SSO服務(wù)和權(quán)限控制。
SpringSecurity
springSecurity 是spring家族的安全控制框架, 功能非常完善。
Spring Security是能夠?yàn)镴2EE項(xiàng)目提供綜合性的安全訪問(wèn)控制解決方案的安全框架。
它依賴(lài)于Servlet過(guò)濾器。這些過(guò)濾器攔截進(jìn)入請(qǐng)求,并且在應(yīng)用程序處理該請(qǐng)求之前進(jìn)行某些安全處
理。
Shiro
spring-boot-starter-springsecurity
特征 spring-security + oauth2 shiro + cas jwt
依賴(lài) jdk、jwt、redis redis、jdk、jwt --
自定義
權(quán)限
支持,用戶(hù)登錄后將用戶(hù)的權(quán)限列表
寫(xiě)入認(rèn)證服務(wù)器
支持 , 用戶(hù)登錄后將用戶(hù)
的權(quán)限列表寫(xiě)入客戶(hù)端 支持
認(rèn)證服
務(wù)集群 -- CAS支持 支持
共享
session
支持 支持 支持
前后端
分離 支持,參數(shù)始終攜帶access_token
支持不夠友好,需要改造
CAS服務(wù)端 支持
Apache Shiro 是一個(gè)強(qiáng)大而靈活的開(kāi)源安全框架,它干凈利落地處理身份認(rèn)證,授權(quán),企業(yè)會(huì)話(huà)管理
和加密。
以下是 Apache Shiro 可以做的事情:
1. 驗(yàn)證用戶(hù)來(lái)核實(shí)他們的身份
2. 對(duì)用戶(hù)執(zhí)行訪問(wèn)控制
3. 判斷用戶(hù)是否被分配了一個(gè)確定的安全角色
4. 判斷用戶(hù)是否被允許做某事
5. 在任何環(huán)境下使用 Session API,即使沒(méi)有 Web 或 EJB 容器。
6. 在身份驗(yàn)證,訪問(wèn)控制期間或在會(huì)話(huà)的生命周期,對(duì)事件作出反應(yīng)。
7. 聚集一個(gè)或多個(gè)用戶(hù)安全數(shù)據(jù)的數(shù)據(jù)源,并作為一個(gè)單一的復(fù)合用戶(hù)“視圖”。
8. 啟用單點(diǎn)登錄(SSO)功能。內(nèi)置了jasig-cas
9. 為沒(méi)有關(guān)聯(lián)到登錄的用戶(hù)啟用"Remember Me"服務(wù)。
市面主流的技術(shù)搭配
搭配方案一
搭配方案二
技術(shù)人員態(tài)度: 通吃才對(duì)!大家覺(jué)得這個(gè)課程對(duì)大家有幫助嗎?敬請(qǐng)關(guān)注,下一個(gè)文章告訴大家具體的代碼實(shí)現(xiàn)方案!
總結(jié)
以上是生活随笔為你收集整理的单点登录 cas 设置回调地址_单点登录落地实现技术有哪些,有哪些流行的登录方案搭配?...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 未来的科学计算机作文800字,未来的高科
- 下一篇: java使用的页面静态化技术_java秒