管理 Realm

Realm 是 Keycloak 中主要的隔离单元。每个 Realm 都拥有独立的用户、客户端、角色和身份验证配置。Alauda Application Services Identity Management E1 支持通过 Admin Console 以及以声明方式通过 KeycloakRealmImport CRD 管理 Realm。

通过 CRD 导入 Realm

KeycloakRealmImport CRD 支持以声明方式配置 Realm。创建 KeycloakRealmImport 资源时,Operator 会触发一次性导入 Job,将 Realm 配置加载到目标 Keycloak 实例中。

一次性导入

KeycloakRealmImport 会在创建时执行一次性导入,而不会持续同步。导入后通过 Admin Console 进行的更改不会反映回 CR。若要持续更改 Realm 配置,请使用 Admin Console 或 Admin REST API。

操作步骤

CLI
Web Console

创建 KeycloakRealmImport 资源:

apiVersion: k8s.keycloak.org/v2beta1
kind: KeycloakRealmImport
metadata:
  name: my-realm-import
spec:
  keycloakCRName: example-kc
  realm:
    realm: my-realm
    enabled: true
    displayName: "My Application Realm"
    registrationAllowed: false
    loginWithEmailAllowed: true
    duplicateEmailsAllowed: false
    sslRequired: external
    accessTokenLifespan: 300
    clients:
      - clientId: my-app
        enabled: true
        publicClient: true
        redirectUris:
          - "https://my-app.example.com/*"
        webOrigins:
          - "https://my-app.example.com"

应用清单:

kubectl apply -f realm-import.yaml -n <namespace>

检查导入状态:

kubectl get keycloakrealmimport my-realm-import -n <namespace> \
  -o jsonpath='{.status.conditions[?(@.type=="Done")].status}'

当输出为 True 时,表示 Realm 已成功导入。

使用占位符处理 Secret

spec.placeholders 字段允许你在导入时将 Secret 值注入 Realm 配置,从而避免在 CR 中硬编码凭据:

spec:
  keycloakCRName: example-kc
  placeholders:
    CLIENT_SECRET:
      secret:
        name: my-client-secret
        key: client-secret
  realm:
    clients:
      - clientId: my-app
        secret: $(CLIENT_SECRET)

通过 Admin Console 管理 Realm 设置

访问 Realm 设置

  1. 登录 Keycloak Admin Console。
  2. 从左上角下拉菜单中选择目标 Realm。
  3. 在左侧导航栏中单击 Realm Settings。

主要 Realm 设置

设置描述
显示名称登录页面上显示的用户可读名称
所需 SSL控制何时需要 HTTPS。选项:none、external(推荐)、all
登录设置控制用户自行注册、通过电子邮件登录以及电子邮件唯一性强制要求
令牌设置配置访问令牌有效期、刷新令牌有效期和 SSO 会话超时
电子邮件设置用于发送验证和通知电子邮件的 SMTP 服务器配置
主题自定义登录、账户、管理和电子邮件模板

配置令牌有效期

令牌有效期控制已签发令牌保持有效的时长。较短的有效期可以提高安全性,但需要更频繁地执行令牌刷新操作。

令牌默认值推荐值(生产环境)
访问令牌有效期300 秒60–300 秒
SSO 会话空闲时间1800 秒1800 秒
SSO 会话最长时间36000 秒36000 秒
刷新令牌有效期绑定会话绑定会话