For the complete documentation index, see llms.txt. This page is also available as Markdown.

Keycloak Realm Setup

Create the realm, clients, and login user the platform needs before you install — with the commands to do it by hand.

Before you run Platform Installation, a Keycloak realm has to exist with three clients and a login user already in it. The operator only provisions into an existing realm (see Managed Keycloak) — it never creates the realm itself, so this is a one-time manual step.

One realm, shared by the platform and every validator

Everything below goes into one realm. That's the same realm you point the operator at with operator.keycloak.realm in Platform Installation, and the same realm Managed Keycloak later provisions per-validator clients into. There's no separate "platform realm" and "validator realm" — one realm serves both.

Placeholders used below

Placeholder
Example
Is

$REALM

validator-intellecteu-devnet

The realm you create — becomes operator.keycloak.realm.

$BASE_HOSTNAME

validators.example.com

Should match operatorRuntime.baseHostname — used in the UI client's redirect URI.

$UI_USERNAME / $UI_EMAIL

catalyx-ui-admin / catalyx-ui-admin@example.com

The browser login user you create for catalyx-canton-ui.

What to create

Object
Realm
Configuration

Realm

—

$REALM, enabled, display name "CatalyX Canton Validator" (or your own).

Client — catalyx-operator-admin

$REALM

Confidential, service accounts enabled, standard flow disabled (service account only — never used for browser login). Its secret is what you store as admin-client-secret in the catalyx-operator-keycloak secret in Platform Installation, and is referenced by operator.keycloak.adminClientId.

Client — catalyx-api

$REALM

Confidential, service accounts enabled, standard flow enabled, direct access grants disabled, redirectUris: ["/*"], webOrigins: ["/*"]. Its secret is what you store as client-secret in the catalyx-api-credentials secret.

Client — catalyx-canton-ui

$REALM

Public, standard flow enabled (browser OIDC with PKCE), direct access grants disabled, redirect URI https://$BASE_HOSTNAME/*, web origin https://$BASE_HOSTNAME. Matches ui.oidc.clientId (default catalyx-canton-ui).

User — $UI_USERNAME

$REALM

Enabled, email verified, password set. Used to sign in to the CatalyX UI in a browser via catalyx-canton-ui. Carries no realm roles — it's a plain login, not an admin account.

Permission to grant

There is one role assignment to make: the catalyx-operator-admin service account (service-account-catalyx-operator-admin) gets the realm-admin client role of $REALM's own realm-management client — not master's. That scopes the operator to administering just $REALM, and is what lets its client-credentials login create and update the per-validator clients, scopes, and users described in Managed Keycloak.

Commands

Everything below can equally be done by hand in the Keycloak Admin Console (Realm settings → Create realm, Clients → Create client, Users → Add user, and the role assignment under a user's Role mapping tab).

Run these with kcadm.sh against your Keycloak — from a shell with kcadm.sh on the path (for example kubectl exec into the Keycloak pod), or adapt them to the Admin REST API if you're not using the CLI.

1

Authenticate

2

Create the realm

3

Create catalyx-operator-admin in $REALM and grant it realm-admin

4

Create catalyx-api in $REALM

5

Create catalyx-canton-ui in $REALM

6

Create the UI login user

7

Retrieve the catalyx-operator-admin secret

Store the printed value as admin-client-secret in the catalyx-operator-keycloak secret — see step 2 of Platform Installation.

8

Retrieve the catalyx-api secret

Store the printed value as client-secret in the catalyx-api-credentials secret — also step 2 of Platform Installation.


Next step

With the realm, its three clients, and the UI login user in place, continue to Platform Installation to create the Kubernetes secrets from the two client secrets above and install the Helm chart.

Last updated

Was this helpful?