Skip to content

Users

Use User to declaratively manage people who can authenticate to Keycloak. Use Groups, Roles, and Permissions to manage access around those users, and UserFederation when you need a custom external user store integration.

API Reference

KindAPI GroupTerraform ResourceCRD Explorer
Useruser.keycloak.crossplane.io/v1alpha1keycloak_userView CRD Schema
Groupsuser.keycloak.crossplane.io/v1alpha1keycloak_user_groupsView CRD Schema
Rolesuser.keycloak.crossplane.io/v1alpha1keycloak_user_rolesView CRD Schema
Permissionsuser.keycloak.crossplane.io/v1alpha1keycloak_users_permissionsView CRD Schema
AdminPermissionsuser.keycloak.crossplane.io/v1alpha1keycloak_users_admin_permissionsView CRD Schema
UserFederationuser.keycloak.crossplane.io/v1alpha1keycloak_custom_user_federationView CRD Schema

Examples

Basic user

apiVersion: user.keycloak.crossplane.io/v1alpha1
kind: User
metadata:
  name: bree
spec:
  deletionPolicy: Delete
  forProvider:
    realmId: "dev"
    username: "bree"
  providerConfigRef:
    name: "keycloak-provider-config"

User roles

apiVersion: user.keycloak.crossplane.io/v1alpha1
kind: Roles
metadata:
  name: user-roles
spec:
  deletionPolicy: Delete
  forProvider:
    realmIdRef:
      name: "dev"
      policy:
        resolve: Always
    roleIdsRefs:
      - name: test
        policy:
          resolve: Always
    userIdRef:
      name: "tim-tester"
      policy:
        resolve: Always
  providerConfigRef:
    name: "keycloak-provider-config"

User groups

apiVersion: user.keycloak.crossplane.io/v1alpha1
kind: Groups
metadata:
  name: user-groups
spec:
  deletionPolicy: Delete
  forProvider:
    realmIdRef:
      name: "dev"
      policy:
        resolve: Always
    groupIdsRefs:
      - name: test
        policy:
          resolve: Always
    userIdRef:
      name: "tim-tester"
      policy:
        resolve: Always
  providerConfigRef:
    name: "keycloak-provider-config"

User permissions

apiVersion: user.keycloak.crossplane.io/v1alpha1
kind: Permissions
metadata:
  name: my-user-permission
spec:
  deletionPolicy: Delete
  forProvider:
    realmIdRef:
      name: "dev"
      policy:
        resolve: Always
  providerConfigRef:
    name: "keycloak-provider-config"

Fine-grained admin permissions (v2)

AdminPermissions manages a single fine-grained admin permission for the users of a realm. It requires Keycloak 26.2 or newer started with the admin-fine-grained-authz:v2 feature and a realm with adminPermissionsEnabled: true. Keycloak then creates an admin-permissions client for the realm that acts as the resource server for all of its admin permissions.

admin-fine-grained-authz:v2 replaces admin-fine-grained-authz:v1, so AdminPermissions and the v1 Permissions resources cannot be used against the same Keycloak instance.

apiVersion: user.keycloak.crossplane.io/v1alpha1
kind: AdminPermissions
metadata:
  name: admins-manage-users
spec:
  deletionPolicy: Delete
  forProvider:
    name: admins-can-manage-users
    description: Admins can view and manage all users
    decisionStrategy: UNANIMOUS
    realmIdRef:
      name: "dev"
      policy:
        resolve: Always
    scopes:
      - view
      - manage
      - map-roles
      - manage-group-membership
      - impersonate
  providerConfigRef:
    name: "keycloak-provider-config"

Valid scopes for user permissions are view, manage, map-roles, manage-group-membership and impersonate. A permission without policies is evaluated as “deny”, so attach policies once they exist on the realm’s admin-permissions client, either by ID via policies or through the typed reference fields (groupPolicies, rolePolicies, userPolicies, …).

Custom user federation

apiVersion: user.keycloak.crossplane.io/v1alpha1
kind: UserFederation
metadata:
  name: custom-user-federation
spec:
  forProvider:
    config:
      dummyBool: true
      dummyString: foobar
      multivalue: value1##value2
    enabled: true
    name: custom
    providerId: custom
    realmIdSelector:
      matchLabels:
        testing.upbound.io/example-name: realm

Key Fields

ResourceFieldDescription
UserrealmIdRealm where the user account exists.
UserusernameUnique username in the realm.
UserenabledEnables or disables login for the user.
GroupsuserIdRefTargets the user whose group memberships are managed.
GroupsgroupIdsRefsReferences groups to assign to the user.
RolesuserIdRefTargets the user whose direct roles are managed.
RolesroleIdsRefsReferences roles to assign to the user.
PermissionsrealmIdRefEnables fine-grained admin permissions for user management in a realm.
AdminPermissionsrealmIdRefRealm whose users the permission applies to.
AdminPermissionsscopesAdmin operations the permission covers, e.g. view, manage.
AdminPermissionsdecisionStrategyHow the attached policies are combined: UNANIMOUS, AFFIRMATIVE or CONSENSUS.
AdminPermissionspoliciesIDs of authorization policies granting the permission. Typed *Policies reference fields are also available.
UserFederationproviderIdSelects the custom federation provider implementation.
UserFederationconfigProvider-specific configuration passed to the federation plugin.
UserFederationenabledEnables or disables the federation provider.

Related Resources