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