关于 keycloak-administration
面向运维人员和 IAM 管理员的 KeyCloak 管理指南,涵盖部署、身份配置、安全、扩展和故障排查,并按任务提供参考文档。
主要功能
- 01安装与部署指导
- 02Realm、用户和客户端管理
- 03SSO、身份验证与授权
- 04LDAP 和 AD 联合
- 05安全加固与运维
适用场景
- 01规划新的 KeyCloak 部署
- 02配置 Realm、用户或应用客户端
- 03设置 SSO、MFA 或 LDAP 同步
- 04加固或扩展生产集群
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ dauquangthanh/ hanoi-rainbow --skill keycloak-administration安装后在 Claude Code 中输入/keycloak-administration确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/authentication-sso.mdauthorization-rbac.mdclient-configuration.mdha-scalability.mdintegration-examples.mdrealm-management.mdsecurity-hardening.mdtroubleshooting.mduser-federation.md详细介绍
KeyCloak 管理
概述
提供系统化的 KeyCloak 管理指南,涵盖安装、配置、域管理、安全加固和运维最佳实践。支持独立部署和集群部署,打造安全、可扩展的身份和访问管理(IAM)解决方案。
快速入门指南
选择任务并加载相应的参考资料:
- 全新安装 → 继续阅读安装与设置
- 域与用户管理 → 加载 realm-management.md
- 客户端配置 → 加载 client-configuration.md
- 身份验证与 SSO → 加载 authentication-sso.md
- 授权与 RBAC → 加载 authorization-rbac.md
- 用户联合(LDAP/AD) → 加载 user-federation.md
- 安全加固 → 加载 security-hardening.md
- 高可用与扩展 → 加载 ha-scalability.md
- 故障排查 → 加载 troubleshooting.md
- 集成示例 → 加载 integration-examples.md
安装与设置
部署选项
1. 独立模式(开发/测试)
# Download and start KeyCloak
wget https://github.com/keycloak/keycloak/releases/download/[VERSION]/keycloak-[VERSION].tar.gz
tar -xvzf keycloak-[VERSION].tar.gz
cd keycloak-[VERSION]
bin/kc.sh start-dev
# Access: http://localhost:8080
# Create initial admin user on first access
2. 使用数据库的生产模式
# Configure and build
bin/kc.sh build --db=postgres
# Set environment variables
export KC_DB=postgres
export KC_DB_URL=jdbc:postgresql://localhost/keycloak
export KC_DB_USERNAME=keycloak
export KC_DB_PASSWORD=password
export KC_HOSTNAME=keycloak.example.com
# Start production mode
bin/kc.sh start --optimized
3. Docker 部署
docker run -d \
--name keycloak \
-p 8080:8080 \
-e KEYCLOAK_ADMIN=admin \
-e KEYCLOAK_ADMIN_PASSWORD=admin \
quay.io/keycloak/keycloak:latest \
start-dev
4. Kubernetes - 使用 KeyCloak Operator 或 Helm chart
初始配置步骤
- 管理员账户:首次访问时创建,并设置强密码(至少 12 个字符)
- 主机名:为生产环境配置
KC_HOSTNAME - SSL/TLS:设置证书(生产环境必需)
- 数据库:配置 PostgreSQL 连接
- 电子邮件:配置用于发送通知的 SMTP
# Email settings
KC_SMTP_HOST=smtp.example.com
KC_SMTP_PORT=587
[email protected]
KC_SMTP_STARTTLS=true
核心概念
域
- Master 域:管理域(不要用于应用)
- 应用域:为每个应用/环境创建独立的域
- 创建:管理控制台 → 创建域
用户与组
- 用户:拥有凭据的个人账户
- 组:按层级组织用户
- 属性:自定义键值对
- 联合:从 LDAP/AD 同步(参见 user-federation.md)
客户端
- OIDC 客户端:现代 OAuth 2.0/OIDC 应用
- SAML 客户端:传统企业应用
- 类型:机密型(服务端)或公共型(SPA/移动应用)
- 详情:参见 client-configuration.md
角色与权限
- 域角色:适用于所有客户端的全局角色
- 客户端角色:仅适用于单个客户端
- 复合角色:继承多个角色
- 详情:参见 authorization-rbac.md
常见任务
为应用配置 SSO
-
为应用创建 OIDC 客户端
-
设置重定向 URI(必须是精确 URL,不支持通配符)
-
配置客户端类型:
- 机密型:服务端应用(需要客户端密钥)
- 公共型:SPA/移动应用(使用 PKCE)
-
从域端点获取配置:
https://keycloak.example.com/realms/{realm}/.well-known/openid-configuration -
将其集成到应用中(参见 integration-examples.md)
启用多因素身份验证
- 身份验证 → 流
- 复制 Browser 流
- 添加 OTP 或 WebAuthn 身份验证器
- 设置为必需或有条件
- 绑定到域
- 用户在下次登录时配置 MFA
详情:参见 authentication-sso.md
连接到 LDAP/Active Directory
- 用户联合 → 添加 LDAP 提供程序
- 配置连接(URL、绑定 DN、凭据)
- 设置搜索基准:
ou=users,dc=example,dc=com - 配置属性映射器
- 测试连接并同步用户
详情:参见 user-federation.md
安全的生产部署
基本安全措施:
- SSL/TLS:所有生产流量都必须使用
- 密码策略:至少 12 个字符,并满足复杂度要求
- 防暴力破解:启用并设置锁定机制
- 令牌有效期:使用较短的访问令牌有效期(5-15 分钟)
- 管理员 MFA:为所有管理员账户启用
- 事件日志:监控身份验证事件
完整清单:参见 security-hardening.md
设置高可用性
- 共享数据库:所有节点使用 PostgreSQL/MySQL
- 分布式缓存:配置 Infinispan
- 负载均衡器:使用带有粘性会话的 HAProxy/NGINX
- 健康检查:使用
/health/ready和/health/live - 监控:通过
/metrics获取 Prometheus 指标
详情:参见 ha-scalability.md
故障排除速查
用户无法登录
- 检查用户是否已启用
- 确认重定向 URI 完全匹配
- 查看必需操作
- 检查 Events → Login Events
令牌验证失败
- 确认 Realm 公钥
- 检查令牌是否过期
- 验证签发者 URL
- 确认受众声明
LDAP 同步问题
- 测试 LDAP 连接
- 确认绑定凭据
- 检查用户 DN 路径
- 手动运行同步
完整故障排除指南:参见 troubleshooting.md
基本命令
# Start modes
bin/kc.sh start-dev # Development
bin/kc.sh start --optimized # Production
# Build for database
bin/kc.sh build --db=postgres
# Export/Import realm
bin/kc.sh export --dir /backup --realm my-realm
bin/kc.sh import --dir /backup
# Admin CLI
bin/kcadm.sh config credentials --server http://localhost:8080 --realm master --user admin
bin/kcadm.sh create realms -s realm=my-realm -s enabled=true
bin/kcadm.sh create users -r my-realm -s username=john -s enabled=true
bin/kcadm.sh set-password -r my-realm --username john --new-password secret
最佳实践总结
架构
- 为每个应用程序/环境单独设置 Realm
- 使用组组织结构,使用角色管理权限
- 根据安全需求规划令牌有效期
- 在集群中启用会话复制
安全
- 在生产环境中始终使用 SSL/TLS
- 为特权账户启用 MFA
- 实施防暴力破解措施
- 定期进行安全审计
- 遵循最小权限原则
运维
- 自动执行备份并测试恢复
- 监控指标并设置警报
- 记录配置
- 定期更新和修补
- 进行容量规划
开发
- 为公共客户端使用 PKCE
- 正确实现令牌刷新
- 妥善处理令牌过期
- 正确验证令牌
- 使用适当的授权类型
参考文档
如需详细指南,请加载相应的参考文件:
- realm-management.md - Realm 配置、用户、组
- client-configuration.md - OIDC/SAML 客户端、作用域、映射器
- authentication-sso.md - 身份验证流程、MFA、社交登录、IdP
- authorization-rbac.md - 角色、权限、细粒度授权
- user-federation.md - LDAP/AD 集成、自定义提供程序
- security-hardening.md - 安全策略、监控、审计
- ha-scalability.md - 集群、性能、备份、灾难恢复
- troubleshooting.md - 常见问题、日志记录、诊断
- integration-examples.md - Spring Boot、Node.js、React、Python、Docker、K8s
其他资源
- 官方文档:https://www.keycloak.org/documentation
- 用于自动化的 Admin CLI 参考
- 框架的客户端适配器文档
- 可获取支持的社区论坛
评论
支持 Markdown