這個(gè)安全平臺(tái)結(jié)合Spring Security逆天了,我準(zhǔn)備研究一下
最近想要打通幾個(gè)應(yīng)用程序的用戶(hù)關(guān)系,搞一個(gè)集中式的用戶(hù)管理系統(tǒng)來(lái)統(tǒng)一管理應(yīng)用的用戶(hù)體系。經(jīng)過(guò)一番調(diào)研選中了紅帽開(kāi)源的Keycloak,這是一款非常強(qiáng)大的統(tǒng)一認(rèn)證授權(quán)管理平臺(tái)。之所以選中了Keycloak是基于以下幾個(gè)原因。
易用性
Keycloak為Web應(yīng)用和Restful服務(wù)提供了一站式的單點(diǎn)登錄解決方案。它的目標(biāo)就是讓?xiě)?yīng)用的安全管理變得簡(jiǎn)單,讓開(kāi)發(fā)人員可以輕松地保護(hù)他們的應(yīng)用程序和服務(wù)。并且Keycloak為登錄、注冊(cè)、用戶(hù)管理提供了可視化管理界面,你可以借助于該界面來(lái)配置符合你需要的安全策略和進(jìn)行用戶(hù)管理。而且還可以
登錄界面
可配置的GUI管理
功能強(qiáng)大
Keycloak實(shí)現(xiàn)了業(yè)內(nèi)常見(jiàn)的認(rèn)證授權(quán)協(xié)議和通用的安全技術(shù),主要有:
- 瀏覽器應(yīng)用程序的單點(diǎn)登錄(SSO)。
- OIDC認(rèn)證授權(quán)。
- OAuth 2.0。
- SAML。
- 多租戶(hù)支持。
- 身份代理 - 使用外部 OpenID Connect 或 SAML 身份提供商進(jìn)行身份驗(yàn)證。
- 第三方登錄。
- 用戶(hù)聯(lián)盟 - 從 LDAP 和 Active Directory 服務(wù)器同步用戶(hù)。
- Kerberos 網(wǎng)橋 - 自動(dòng)驗(yàn)證登錄到 Kerberos 服務(wù)器的用戶(hù)。
- 用于集中管理用戶(hù)、角色、角色映射、客戶(hù)端和配置的管理控制臺(tái)。
- 用戶(hù)賬戶(hù)集中管理的管理控制臺(tái)。
- 自定義主題。
- 兩段身份認(rèn)證。
- 完整登錄流程 - 可選的用戶(hù)自注冊(cè)、恢復(fù)密碼、驗(yàn)證電子郵件、要求密碼更新等。
- 會(huì)話(huà)管理 - 管理員和用戶(hù)自己可以查看和管理用戶(hù)會(huì)話(huà)。
- 令牌映射 - 將用戶(hù)屬性、角色等映射到令牌和語(yǔ)句中。
- 安全策略恢復(fù)功能。
- CORS 支持 - 客戶(hù)端適配器具有對(duì) CORS 的內(nèi)置支持。
- 自定義SPI接口擴(kuò)展。
- JavaScript 應(yīng)用程序、WildFly、JBoss EAP、Fuse、Tomcat、Jetty、Spring 等客戶(hù)端適配器。
- 支持任何具有 OpenID Connect Relying Party 庫(kù)或 SAML 2.0 Service Provider 庫(kù)的平臺(tái)/語(yǔ)言。
有專(zhuān)門(mén)的Spring Boot Starter,非常容易集成到Spring Boot中。
基于實(shí)踐的開(kāi)源
“紅帽出品,必屬精品。”紅帽良好的口碑決定了Keycloak的可靠性。它遵循Apache 2.0開(kāi)源協(xié)議進(jìn)行開(kāi)源,經(jīng)過(guò)八年的持續(xù)開(kāi)源,代碼質(zhì)量很高,非常適合做定制化開(kāi)發(fā)。紅帽的商業(yè)付費(fèi)認(rèn)證授權(quán)產(chǎn)品Red Hat SSO就是基于Keycloak。為企業(yè)提供了動(dòng)態(tài)單點(diǎn)登錄的解決方案,間接證明了Keycloak的可靠性。
適配Spring Security
這個(gè)框架對(duì)Spring Security和Spring Boot做了適配,非常適合使用了這兩種體系的遷移擴(kuò)展。這也是我選擇它的重要原因之一。
缺點(diǎn)
雖然優(yōu)點(diǎn)非常多,但是缺點(diǎn)也很明顯。功能強(qiáng)大就意味著架構(gòu)比較復(fù)雜,概念比較多,學(xué)習(xí)成本比較高。
KeyClock的核心概念
中文資料也比較少,需要自己去啃官方的文檔。對(duì)于業(yè)務(wù)需要的認(rèn)證方式可能會(huì)需要自行實(shí)現(xiàn)一些接口,同樣考驗(yàn)著個(gè)人的編碼能力。
最后
胖哥對(duì)這個(gè)東西關(guān)注了很久卻沒(méi)有下手,第一是因?yàn)樗_實(shí)有挑戰(zhàn)性,第二沒(méi)有實(shí)際的開(kāi)發(fā)場(chǎng)景,現(xiàn)在機(jī)會(huì)來(lái)了,今天對(duì)這個(gè)框架進(jìn)行一個(gè)簡(jiǎn)單的介紹,讓不了解它的同學(xué)先簡(jiǎn)單了解一下。如果你對(duì)Keycloak進(jìn)行了詳細(xì)的研究和實(shí)踐,基本上能夠搞定一些大中型的應(yīng)用安全體系構(gòu)建,既有誘惑也有挑戰(zhàn)。另外這個(gè)程序適合做統(tǒng)一認(rèn)證授權(quán)門(mén)戶(hù)構(gòu)建,不太適合一些小應(yīng)用,相對(duì)比較重,不過(guò)微服務(wù)用這個(gè)應(yīng)該非常棒。在目前新的Spring認(rèn)證服務(wù)器還沒(méi)有達(dá)到生產(chǎn)可用時(shí)是一個(gè)不錯(cuò)的選擇。
本文轉(zhuǎn)載自微信公眾號(hào)「碼農(nóng)小胖哥」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系碼農(nóng)小胖哥公眾號(hào)。