SuperAPI AI 工具集

keycloak-admin

安全与审计

查看项目

更新于 10-16 03:22

技能介绍

用途

本技能用于 Keycloak 的日常管理工作,面向 keycloak-alpha 多租户 MERN 平台,采用 OAuth 2.0 授权码流程(Authorization Code Flow)。当需要搭建 Keycloak realm 与客户端、配置 OAuth 2.0 授权码流程、管理带自定义属性(org_id)的用户、部署自定义主题、排查认证问题、配置令牌有效期与会话管理时,可启用本技能。

主要能力

Keycloak Admin REST API 与认证

使用 admin-cli 客户端获取管理员访问令牌,并在后续请求中通过 Bearer 令牌调用管理接口。资料给出的获取令牌方式为向 master realm 的 token 端点发送密码授权请求,参数包括 username、password、grant_type=password、client_id=admin-cli。

常用端点包括:

  • /admin/realms(GET):列出所有 realm
  • /admin/realms/{realm}(POST):创建 realm
  • /admin/realms/{realm}/clients(GET/POST):管理客户端
  • /admin/realms/{realm}/users(GET/POST):管理用户
  • /admin/realms/{realm}/roles(GET/POST):管理角色
  • /admin/realms/{realm}/groups(GET/POST):管理分组

Realm 创建与配置

可通过 POST /admin/realms 创建 realm,配置项涵盖:enabled、displayName、sslRequired、registrationAllowed、loginWithEmailAllowed、duplicateEmailsAllowed、resetPasswordAllowed、editUsernameAllowed、暴力破解防护相关参数(bruteForceProtected、permanentLockout、maxFailureWaitSeconds、minimumQuickLoginWaitSeconds、waitIncrementSeconds、quickLoginCheckMilliSeconds、maxDeltaTimeSeconds、failureFactor)、签名算法(defaultSignatureAlgorithm)、刷新令牌策略(revokeRefreshToken、refreshTokenMaxReuse)以及各类令牌与会话有效期。资料同时给出 keycloak-alpha 中 realm-config.js 的 realmDefaults 配置示例。

OAuth 2.0 授权码流程的客户端配置

创建客户端时设置 protocol 为 openid-connect、publicClient 为 false、standardFlowEnabled 为 true、implicitFlowEnabled 与 directAccessGrantsEnabled 为 false,配置 redirectUris、webOrigins、attributes(pkce.code.challenge.method=S256)、defaultClientScopes(email、profile、roles、web-origins)与 optionalClientScopes(address、phone、offline_access)。资料还给出前端 keycloak.config.js 与 authConfig 示例,包含 flow、pkceMethod、responseType、scope、redirectUri、postLogoutRedirectUri、checkLoginIframe、onLoad、silentCheckSsoRedirectUri 等配置。客户端密钥可通过 client-secret 端点获取或重新生成。

带自定义属性的用户管理

创建用户时可设置 username、email、firstName、lastName、enabled、emailVerified、attributes(如 org_id、tenant_name)以及 credentials(密码及 temporary 标记)。资料给出 user.controller.js 中创建用户、获取管理员令牌、分配默认角色、发送验证邮件的示例流程,并说明可通过 q=org_id:org_acme 按属性查询用户。

角色与分组管理

可创建 realm 角色(如 org_admin、org_user),并通过 role-mappings/realm 端点将角色分配给用户;资料给出 role.service.js 中分配角色与查询用户角色的示例。可创建组织分组(如 org_acme,带 org_id、org_name 属性),并通过 PUT /users/{userId}/groups/{groupId} 将用户加入分组。

主题部署与按组织定制

资料给出主题目录结构(lobbi-base 与 org-acme,包含 login、account、email 及 resources 下的 css、img、js),theme.properties 示例(parent、import、styles、locales、logo.url),以及通过 docker cp 复制主题、docker restart 重启 Keycloak、通过 PUT /admin/realms/{realm} 设置 loginTheme、accountTheme、emailTheme 的步骤。还给出 theme-mapper.js 中按 orgId 映射主题的示例,以及通过 kc_theme 查询参数动态应用主题的方式。

令牌配置与会话管理

可更新 accessTokenLifespan、accessTokenLifespanForImplicitFlow、ssoSessionIdleTimeout、ssoSessionMaxLifespan、offlineSessionIdleTimeout、accessCodeLifespan、accessCodeLifespanUserAction 等参数。可通过 protocol-mappers/models 端点创建 oidc-usermodel-attribute-mapper,将 org_id 写入 id.token.claim、access.token.claim、userinfo.token.claim。资料给出 api-gateway 中基于 jwks-rsa 与 jsonwebtoken 的令牌校验示例,校验 audience、issuer、算法 RS256,并检查 org_id 声明是否存在。

使用方式

以 curl 调用 Keycloak Admin REST API 为主,先获取管理员令牌,再在请求头中携带 Bearer 令牌执行管理操作。资料同时提供 Node.js/Express 服务端代码示例(用户创建、角色分配、令牌校验)与前端配置示例。

适用场景

  • 多租户平台的身份认证与授权管理
  • OAuth 2.0 授权码流程与 PKCE 集成
  • 组织级用户属性与角色、分组管理
  • 按组织定制登录主题
  • 令牌声明定制与校验
  • 认证相关问题的排查(CORS、重定向 URI、自定义声明缺失)

限制

资料未提供该技能的收费、价格、平台支持范围、性能指标或效果保证等信息。具体部署环境、版本兼容性与生产配置要求暂未提供。