欢迎大家赞助一杯啤酒🍺 我们准备了下酒菜:Formal mathematics/Isabelle/ML, Formal verification/Coq/ACL2/Agda, C++/Lisp/Haskell
Keycloak
![]() |
您可以在Wikipedia上了解到此条目的英文信息 Keycloak Thanks, Wikipedia. |
Keycloak
目录[隐藏] |
简介
Keycloak 是一款开源的身份认证和访问控制管理的解决方案,使用 Java 开发,采用 Apache v2 许可证。
因为源自 WildFly Application Server (WildFly Elytron Security) 所以配置 Keycloak 的许多方面都围绕 WildFly 配置元素。
Keycloak 基于 WildFly 应用服务器及其子项目(Infinispan(用于缓存)和 Hibernate(用于持久性)之上构建,所以需要阅读它们的相关文档。
Keycloak WildFly (已废止) Distribution powered by WildFly
当前是 Keycloak Distribution powered by Quarkus
版本
- 从 26 版本开始,一些 Keycloak 客户端库将拥有独立于 Keycloak 服务器发布周期的发布周期。26.0.0 版本可能是最后一次客户端库与 Keycloak 服务器一起发布的版本。
比如:Java 管理客户端,Java 授权客户端,Java 策略执行程序
- 管理员用户都被锁定后重新访问 Keycloak 实例是一个具有挑战性和复杂的过程,参考管理员引导和恢复指南
26 版本,现在可以使用特定选项运行 start 或 start-dev 命令来创建临时管理员帐户。此外,还引入了新的专用命令,允许用户轻松地重新获得管理员访问权限
- 26 版本,java-keystore 密钥提供程序支持更多算法和保管库(Vaula)机密
java-keystore 密钥提供程序允许从外部 java 密钥库文件加载领域密钥,管理所有 Keycloak 算法。Keycloak 领域(realm)可以将任何密钥外部化为加密文件,而不会在数据库中存储敏感数据。
- 26 版本,将序列化格式从 JBoss 序列化更改为 Infinispan Protostream,序列化是将 Java 对象转换为字节以在 Keycloak 服务器之间跨网络发送它们的进程
- Keycloak 25 引入了 persistent-user-sessions 功能,在 Keycloak 26 中,此功能默认情况下处于启用状态。这意味着所有用户会话默认情况下都将持久化到数据库中,而不是以前仅将离线会话持久化到数据库中的行为。
- 25 版本,Keycloak 现在支持 OpenJDK 21,OpenJDK 17 支持已弃用
- 25 版本,管理控制台和账户控制台也已更新为使用 PatternFly 5 这是 Keycloak 用户界面基础设计系统的最新版本
- 25 版本,Argon2 现在是 Keycloak 在非 FIPS 环境中使用的默认密码哈希算法。Argon2 是2015 年密码哈希竞赛的获胜者,并且是 OWASP 推荐的哈希算法。
Argon2 不符合 FIPS 140-2。因此,如果你在 FIPS 环境中,默认算法仍然是 PBKDF2
- 25 版本,受支持和经过测试的数据库现在包括 PostgreSQL 16
- 25 版本,对客户身份和访问管理 (CIAM) 和多租户的支持的预览功能,以解决企业对企业 (B2B) 和企业对企业对客户 (B2B2C) 的用例
- Keycloak 从 17 版开始,默认的 Keycloak 发行版基于 Quarkus,而不是之前的 WildFly。
- 23 版本,Keycloak 预览支持 Passkeys
- 21 版本,正式支持 FIPS 140-2
- 21 版本,Keycloak 使用 Micrometer 进行指标,用于可观察性
- 21 版本,HashiCorp Vault 不再受支持
- 21 版本,为了增强安全性,Keycloak 容器映像现在基于 UBI9,而不是 UBI8。其次,我们已切换到 -micro,而之前使用的是 -minimal
- 20 版本,WildFly 发行版已移除
Quarkus 是框架和运行时,而 WildFly 是 Java 应用服务器。这样新的发行版更快、更精简,并且配置起来更容易
功能
- 单点登录(SSO)
- 支持的标准协议:OpenID Connect, OAuth 2.0 和 SAML 2.0
- 集中管理:对管理员和用户
- 适配器(Adapters):轻松保护各种应用和服务
- 支持 LDAP 和 Active Directory:连接已有的用户目录服务
- 社交账号:轻松启用社交登录
- 支持身份代理人(Identity Brokering):OpenID Connect or SAML 2.0 IdPs
- 高性能:轻量、快速、可伸缩
- 集群:可扩展性、可用性
- 样式:自定义外观
- 可扩展:用户可通过代码自定义
- 密码策略:用户可自定义密码策略
指南
Quarkus
$ ./kc.sh build --db=postgres $ conf/keycloak.conf db=postgres db-username=keycloak db-password=keycloak db-url=jdbc:postgresql://localhost/keycloak hostname=debian $ ./kc.sh start-dev http://debian:8080/
WildFly
$ cd keycloak-12.0.2/bin $ ./standalone.sh // 默认使用 H2 数据库 http://localhost:8080/auth/
db=mariadb db-username=keycloak db-password=keycloak db-url=jdbc:mariadb://localhost/keycloak
配置 PostgreSQL,修改 conf/keycloak.conf
db=postgres db-username=keycloak db-password=keycloak db-url=jdbc:postgresql://localhost:5432/keycloak
然后
bin/kc.[sh|bat] build bin/kc.[sh|bat] start-dev bin/kc.[sh|bat] start --optimized
项目
Keycloak 使用和依赖的一些开源软件:
- JBoss Modules
- JBoss Modular Service Container
- JBoss Threads
- WildFly Core
- WildFly Elytron
- XNIO
- Infinispan
- Hibernate
- RESTEasy
- Undertow based on XNIO, HTTP listener default listening on 127.0.0.1:8080
- JBoss Remoting
- Apache FreeMarker
- Liquibase
- quarkus angular keycloak
- Apache FreeMarker
集成
- FreeIPA services (Directory Server, Kerberos, PKI)
- WSO2 API Manager Token Revocation: WSO2 API Manager & Keycloak KM
- OpenLDAP
- Apache Directory
- OpenID Connect
Authorization
整合、集成更多的授权、策略解决方案,如:User-Managed Access (UMA), Open Policy Agent
2FA
Keycloak 支持 FreeOTP
andOTP 也是很好的 2FA 选择
Quarkus
- Introducing Keycloak.X Distribution
- Keycloak.X Design
- Introducing Keycloak.X
- Keycloak on Quarkus Quarkus
Keycloak Quarkus extensions
- keycloak-admin-client-common
- keycloak-admin-rest-client
- keycloak-admin-resteasy-client
- keycloak-authorization
Tomcat
可以考虑分发这样的版本,可以部署 Apache Tomcat, Jetty。
Jetty
API
Clojure
keycloak-clojureSaaS
Keycloak as a Service
- Keycloak Operator Go语言驱动
- Keycloak 运行在 JGroups 集群子系统,其高可用信息可参考 WildFly High Availability Guide
- Cloud IAM Keycloak Identity and Access Management as a Service
- 狗狗通行证