Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save Gottox/38a7f01e88df484bb9562fd4cc33873b to your computer and use it in GitHub Desktop.
Save Gottox/38a7f01e88df484bb9562fd4cc33873b to your computer and use it in GitHub Desktop.
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: clusterkeycloakrealms.rustcloak.k8s.eboland.de
spec:
group: rustcloak.k8s.eboland.de
names:
categories:
- keycloak
- all
kind: ClusterKeycloakRealm
plural: clusterkeycloakrealms
shortNames:
- ckcrm
singular: clusterkeycloakrealm
scope: Cluster
versions:
- additionalPrinterColumns:
- description: true if the realm is ready
jsonPath: .status.ready
name: Ready
type: boolean
- description: Status String of the resource
jsonPath: .status.status
name: Status
type: string
- description: time since the realm was created
jsonPath: .metadata.creationTimestamp
name: Age
type: date
name: v1beta1
schema:
openAPIV3Schema:
description: resource to define an Realm within a [KeyclaokInstance](./keycloakinstance.md)
properties:
spec:
anyOf:
- required:
- instanceRef
- required:
- clusterInstanceRef
description: the KeycloakRealm resource
properties:
clusterInstanceRef:
description: The name of the cluster instance to which this object belongs to.
type: string
x-kubernetes-validations:
- message: Value is immutable
rule: self == oldSelf
definition:
description: |-
RealmRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "accessCodeLifespan": { "title": "Client Login Timeout", "description": "Max time a client has to finish the access token protocol. This should normally be 1 minute.", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "accessCodeLifespanLogin": { "title": "Login timeout", "description": "Max time a user has to complete a login. This is recommended to be relatively long, such as 30 minutes or more.", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "accessCodeLifespanUserAction": { "title": "Login action timeout", "description": "Max time a user has to complete login related actions like update password or configure totp. This is recommended to be relatively long, such as 5 minutes or more.", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "accessTokenLifespan": { "title": "Access Token Lifespan", "description": "Max time before an access token is expired. This value is recommended to be short relative to the SSO timeout.", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "accessTokenLifespanForImplicitFlow": { "title": "Access Token Lifespan For Implicit Flow", "description": "Max time before an access token issued during OpenID Connect Implicit Flow is expired. This value is recommended to be shorter than the SSO timeout. There is no possibility to refresh token during implicit flow, that's why there is a separate timeout different to 'Access Token Lifespan'.", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "accountTheme": { "title": "Account theme", "description": "Select theme for login, OTP, grant, registration and forgot password pages.", "type": "string" }, "actionTokenGeneratedByAdminLifespan": { "title": "Default Admin-Initiated Action Lifespan", "description": "Maximum time before an action permit sent to a user by administrator is expired. This value is recommended to be long to allow administrators to send e-mails for users that are currently offline. The default timeout can be overridden immediately before issuing the token.", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "actionTokenGeneratedByUserLifespan": { "title": "User-Initiated Action Lifespan", "description": "Maximum time before an action permit sent by a user (such as a forgot password e-mail) is expired. This value is recommended to be short because it's expected that the user would react to self-created action quickly.", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "adminEventsDetailsEnabled": { "title": "Include representation", "description": "Include JSON representation for create and update requests.", "type": "boolean" }, "adminEventsEnabled": { "title": "Save events", "description": "If enabled, admin events are saved to the database, which makes events available to the Admin UI.", "type": "boolean" }, "adminPermissionsClient": { "$ref": "#/$defs/ClientRepresentation" }, "adminPermissionsEnabled": { "type": "boolean" }, "adminTheme": { "title": "Admin theme", "type": "string" }, "applicationScopeMappings": { "type": "object", "additionalProperties": { "type": "array", "items": { "$ref": "#/$defs/ScopeMappingRepresentation" } } }, "applications": { "type": "array", "items": { "$ref": "#/$defs/ApplicationRepresentation" } }, "attributes": { "type": "object", "properties": { "adminEventsExpiration": { "title": "Expiration", "description": "Sets the expiration for events. Expired events are periodically deleted from the database.", "type": "string", "pattern": "^[0-9]*$" }, "cibaAuthRequestedUserHint": { "title": "Authentication Requested User Hint", "description": "The way of identifying the end-user for whom authentication is being requested. Currently only \"login_hint\" is supported.", "type": "string", "enum": [ "login_hint" ] }, "cibaBackchannelTokenDeliveryMode": { "title": "Backchannel Token Delivery Mode", "description": "Specifies how the CD (Consumption Device) gets the authentication result and related tokens. This mode will be used by default for the CIBA clients, which do not have other mode explicitly set.", "type": "string", "enum": [ "ping", "poll" ] }, "cibaExpiresIn": { "title": "Expires In", "description": "The expiration time of the \"auth_req_id\" in seconds since the authentication request was received.", "type": "string", "pattern": "^[0-9]*$" }, "cibaInterval": { "title": "Interval", "description": "The minimum amount of time in seconds that the CD (Consumption Device) must wait between polling requests to the token endpoint. If set to 0, the CD must use 5 as the default value according to the CIBA specification.", "type": "string", "pattern": "^[0-9]*$" }, "frontendUrl": { "title": "Frontend URL", "description": "Set the frontend URL for the realm. Use in combination with the default hostname provider to override the base URL for frontend requests for a specific realm.", "type": "string" } }, "additionalProperties": { "type": "string" } }, "authenticationFlows": { "type": "array", "items": { "$ref": "#/$defs/AuthenticationFlowRepresentation" } }, "authenticatorConfig": { "type": "array", "items": { "$ref": "#/$defs/AuthenticatorConfigRepresentation" } }, "browserFlow": { "type": "string" }, "browserSecurityHeaders": { "type": "object", "properties": { "contentSecurityPolicy": { "title": "Content-Security-Policy", "description": "Default value prevents pages from being included by non-origin iframes. <1>Learn more</1>", "type": "string" }, "contentSecurityPolicyReportOnly": { "title": "Content-Security-Policy-Report-Only", "description": "For testing Content Security Policies <1>Learn more</1>", "type": "string" }, "strictTransportSecurity": { "title": "HTTP Strict Transport Security (HSTS)", "description": "The Strict-Transport-Security HTTP header tells browsers to always use HTTPS. Once a browser sees this header, it will only visit the site over HTTPS for the time specified (1 year) at max-age, including the subdomains. <1>Learn more</1>", "type": "string" }, "xContentTypeOptions": { "title": "X-Content-Type-Options", "description": "The default value prevents Internet Explorer and Google Chrome from MIME-sniffing a response away from the declared content-type. <1>Learn more</1>", "type": "string" }, "xFrameOptions": { "title": "X-Frame-Options", "description": "Default value prevents pages from being included by non-origin iframes. <1>Learn more</1>", "type": "string" }, "xRobotsTag": { "title": "X-Robots-Tag", "description": "Prevent pages from appearing in search engines. <1>Learn more</1>", "type": "string" }, "xXSSProtection": { "title": "X-XSS-Protection", "description": "This header configures the Cross-site scripting (XSS) filter in your browser. Using the default behaviour, the browser will prevent rendering of the page when a XSS attack is detected. <1>Learn more</1>", "type": "string" } }, "additionalProperties": false }, "bruteForceDetection": { "title": "Brute force detection" }, "bruteForceProtected": { "type": "boolean" }, "bruteForceStrategy": { "title": "Strategy to increase wait time", "description": "Multiple means wait time will be increased only when number of failures are multiples of '{{failureFactor}}'. Linear means each new failure starting at '{{failureFactor}}' will increase wait time.", "$ref": "#/$defs/BruteForceStrategy" }, "certificate": { "type": "string" }, "clientAuthenticationFlow": { "type": "string" }, "clientOfflineSessionIdleTimeout": { "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "clientOfflineSessionMaxLifespan": { "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "clientPolicies": { "$ref": "#/$defs/ClientPoliciesRepresentation" }, "clientProfiles": { "$ref": "#/$defs/ClientProfilesRepresentation" }, "clientScopeMappings": { "type": "object", "additionalProperties": { "type": "array", "items": { "$ref": "#/$defs/ScopeMappingRepresentation" } } }, "clientScopes": { "type": "array", "items": { "$ref": "#/$defs/ClientScopeRepresentation" } }, "clientSessionIdleTimeout": { "title": "Client Session Idle", "description": "Time a client session is allowed to be idle before it expires. Tokens are invalidated when a client session is expired. The option does not affect the global user SSO session. If not set, it uses the standard SSO Session Idle value.", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "clientSessionMaxLifespan": { "title": "Client Session Max", "description": "Max time before a client session is expired. Tokens are invalidated when a session is expired. The option does not affect the global user SSO session. If not set, it uses the standard SSO Session Max value.", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "clientTemplates": { "type": "array", "items": { "$ref": "#/$defs/ClientTemplateRepresentation" } }, "clients": { "type": "array", "items": { "$ref": "#/$defs/ClientRepresentation" } }, "codeSecret": { "type": "string" }, "components": { "$ref": "#/$defs/MultivaluedHashMapStringComponentExportRepresentation" }, "defaultDefaultClientScopes": { "type": "array", "items": { "type": "string" } }, "defaultGroups": { "type": "array", "items": { "type": "string" } }, "defaultLocale": { "title": "Default locale", "type": "string" }, "defaultOptionalClientScopes": { "type": "array", "items": { "type": "string" } }, "defaultRole": { "$ref": "#/$defs/RoleRepresentation" }, "defaultRoles": { "type": "array", "items": { "type": "string" } }, "defaultSignatureAlgorithm": { "title": "Default Signature Algorithm", "description": "Default algorithm used to sign tokens for the realm", "type": "string", "enum": [ "EdDSA", "ES256", "ES384", "ES512", "HS256", "HS384", "HS512", "PS256", "PS384", "PS512", "RS256", "RS384", "RS512" ] }, "directGrantFlow": { "type": "string" }, "displayName": { "title": "Display name", "type": "string" }, "displayNameHtml": { "title": "HTML Display name", "type": "string" }, "dockerAuthenticationFlow": { "type": "string" }, "duplicateEmailsAllowed": { "title": "Duplicate emails", "description": "Allow multiple users to have the same email address. Changing this setting will also clear the user's cache. It is recommended to manually update email constraints of existing users in the database after switching off support for duplicate email addresses.", "type": "boolean" }, "editUsernameAllowed": { "title": "Edit username", "description": "If enabled, the username field is editable, readonly otherwise.", "type": "boolean" }, "emailTheme": { "title": "Email theme", "description": "Select a theme for emails that are sent by the server.", "type": "string" }, "enabled": { "type": "boolean" }, "enabledEventTypes": { "type": "array", "items": { "type": "string" } }, "eventsEnabled": { "title": "Save events", "description": "If enabled, user events are saved to the database, which makes events available to the admin and account management UIs.", "type": "boolean" }, "eventsExpiration": { "title": "Expiration", "description": "Sets the expiration for events. Expired events are periodically deleted from the database.", "type": "integer", "format": "int64", "maximum": 9.223372036854776e18, "minimum": -9.223372036854776e18 }, "eventsListeners": { "title": "Event listeners", "description": "Configure what listeners receive events for the realm.", "type": "array", "items": { "type": "string" } }, "failureFactor": { "title": "Max login failures", "description": "Max login failures", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "federatedUsers": { "type": "array", "items": { "$ref": "#/$defs/UserRepresentation" } }, "firstBrokerLoginFlow": { "type": "string" }, "groups": { "type": "array", "items": { "$ref": "#/$defs/GroupRepresentation" } }, "id": { "type": "string" }, "identityProviderMappers": { "type": "array", "items": { "$ref": "#/$defs/IdentityProviderMapperRepresentation" } }, "identityProviders": { "type": "array", "items": { "$ref": "#/$defs/IdentityProviderRepresentation" } }, "internationalizationEnabled": { "title": "Internationalization", "description": "If enabled, you can choose which locales you support for this realm and which locale is the default.", "type": "boolean" }, "keycloakVersion": { "type": "string" }, "localizationTexts": { "type": "object", "additionalProperties": { "type": "object", "additionalProperties": { "type": "string" } } }, "loginTheme": { "title": "Login theme", "description": "Select theme for login, OTP, grant, registration and forgot password pages.", "type": "string" }, "loginWithEmailAllowed": { "title": "Login with email", "description": "Allow users to log in with their email address.", "type": "boolean" }, "maxDeltaTimeSeconds": { "title": "Failure reset time", "description": "When will failure count be reset?", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "maxFailureWaitSeconds": { "title": "Max wait", "description": "Max time a user will be locked out.", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "maxTemporaryLockouts": { "title": "Maximum temporary lockouts", "description": "The number of temporary lockouts permitted before the user is permanently locked out.", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "minimumQuickLoginWaitSeconds": { "title": "Minimum quick login wait", "description": "How long to wait after a quick login failure.", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "notBefore": { "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "oAuth2DeviceCodeLifespan": { "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "oAuth2DevicePollingInterval": { "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "oauth2DeviceCodeLifespan": { "title": "OAuth 2.0 Device Code Lifespan", "description": "Max time before the device code and user code are expired. This value needs to be a long enough lifetime to be usable (allowing the user to retrieve their secondary device, navigate to the verification URI, login, etc.), but should be sufficiently short to limit the usability of a code obtained for phishing.", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "oauth2DevicePollingInterval": { "title": "OAuth 2.0 Device Polling Interval", "description": "The minimum amount of time in seconds that the client should wait between polling requests to the token endpoint.", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "oauthClients": { "type": "array", "items": { "$ref": "#/$defs/OAuthClientRepresentation" } }, "offlineSessionIdleTimeout": { "title": "Offline Session Idle", "description": "Time an offline session is allowed to be idle before it expires. You need to use offline token to refresh at least once within this period; otherwise offline session will expire.", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "offlineSessionMaxLifespan": { "title": "Offline Session Max", "description": "Max time before an offline session is expired regardless of activity.", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "offlineSessionMaxLifespanEnabled": { "title": "Offline Session Max Limited", "description": "Enable offline session maximum lifetime", "type": "boolean" }, "organizations": { "type": "array", "items": { "$ref": "#/$defs/OrganizationRepresentation" } }, "organizationsEnabled": { "type": "boolean" }, "otpPolicyAlgorithm": { "title": "OTP hash algorithm", "description": "What hashing algorithm should be used to generate the OTP.", "type": "string" }, "otpPolicyCodeReusable": { "title": "Reusable token", "description": "Possibility to use the same OTP code again after successful authentication.", "type": "boolean" }, "otpPolicyDigits": { "title": "Number of digits", "description": "How many digits should the OTP have?", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "otpPolicyInitialCounter": { "title": "Initial counter", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "otpPolicyLookAheadWindow": { "title": "Look around window", "description": "How far around (extra token periods or counts) should the server look just in case the token generator and server are out of time sync or counter sync?", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "otpPolicyPeriod": { "title": "OTP Token period", "description": "How many seconds should an OTP token be valid? Defaults to 30 seconds.", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "otpPolicyType": { "title": "OTP type", "description": "totp is Time-Based One Time Password. 'hotp' is a counter base one time password in which the server keeps a counter to hash against.", "type": "string", "enum": [ "totp", "hotp" ] }, "otpSupportedApplications": { "type": "array", "items": { "type": "string" } }, "passwordCredentialGrantAllowed": { "type": "boolean" }, "passwordPolicy": { "type": "string" }, "permanentLockout": { "title": "Permanent lockout", "type": "boolean" }, "privateKey": { "type": "string" }, "protocolMappers": { "type": "array", "items": { "$ref": "#/$defs/ProtocolMapperRepresentation" } }, "publicKey": { "type": "string" }, "quickLoginCheckMilliSeconds": { "title": "Quick login check milliseconds", "description": "If a failure happens concurrently too quickly, lock out the user.", "type": "integer", "format": "int64", "maximum": 9.223372036854776e18, "minimum": -9.223372036854776e18 }, "realm": { "title": "Realm ID", "type": "string" }, "realmCacheEnabled": { "type": "boolean" }, "refreshTokenMaxReuse": { "title": "Refresh Token Max Reuse", "description": "Maximum number of times a refresh token can be reused. When a different token is used, revocation is immediate.", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "registrationAllowed": { "title": "User registration", "description": "Enable/disable the registration page. A link for registration will show on login page too.", "type": "boolean" }, "registrationEmailAsUsername": { "title": "Email as username", "description": "Allow users to set email as username.", "type": "boolean" }, "registrationFlow": { "type": "string" }, "rememberMe": { "title": "Remember me", "description": "Show checkbox on login page to allow user to remain logged in between browser restarts until session expires.", "type": "boolean" }, "requiredActions": { "type": "array", "items": { "$ref": "#/$defs/RequiredActionProviderRepresentation" } }, "requiredCredentials": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "resetCredentialsFlow": { "type": "string" }, "resetPasswordAllowed": { "title": "Specifies independent timeout for forgot password.", "description": "Show a link on login page for user to click when they have forgotten their credentials.", "type": "boolean" }, "revokeRefreshToken": { "title": "Revoke Refresh Token", "description": "If enabled a refresh token can only be used up to 'Refresh Token Max Reuse' and is revoked when a different token is used. Otherwise refresh tokens are not revoked when used and can be used multiple times.", "type": "boolean" }, "roles": { "$ref": "#/$defs/RolesRepresentation" }, "scopeMappings": { "type": "array", "items": { "$ref": "#/$defs/ScopeMappingRepresentation" } }, "smtpServer": { "type": "object", "properties": { "auth": { "title": "Authentication", "type": "string", "enum": [ "true", "false", "" ] }, "envelopeFrom": { "title": "Envelope from", "description": "An email address used for bounces (optional).", "type": "string" }, "from": { "title": "From", "type": "string" }, "fromDisplayName": { "title": "From display name", "description": "A user-friendly name for the 'From' address (optional).", "type": "string" }, "host": { "title": "Host", "type": "string" }, "password": { "title": "Password", "description": "SMTP password. This field is able to obtain its value from vault, use ${vault.ID} format.", "type": "string" }, "port": { "title": "Port", "type": "string" }, "replyTo": { "title": "Reply to", "type": "string" }, "replyToDisplayName": { "title": "Reply to display name", "description": "A user-friendly name for the 'Reply-To' address (optional).", "type": "string" }, "ssl": { "title": "Enable SSL", "type": "string", "enum": [ "true", "false", "" ] }, "starttls": { "title": "Enable StartTLS", "type": "string", "enum": [ "true", "false", "" ] }, "user": { "title": "Username", "type": "string" } }, "additionalProperties": false }, "social": { "type": "boolean" }, "socialProviders": { "type": "object", "additionalProperties": { "type": "string" } }, "sslRequired": { "title": "Require SSL", "description": "Is HTTPS required? 'None' means HTTPS is not required for any client IP address. 'External requests' means localhost and private IP addresses can access without HTTPS. 'All requests' means HTTPS is required for all IP addresses.", "type": "string", "enum": [ "all", "external", "none" ] }, "ssoSessionIdleTimeout": { "title": "SSO Session Idle", "description": "Time a session is allowed to be idle before it expires. Tokens and browser sessions are invalidated when a session is expired.", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "ssoSessionIdleTimeoutRememberMe": { "title": "SSO Session Idle Remember Me", "description": "Time a remember me session is allowed to be idle before it expires. Tokens and browser sessions are invalidated when a session is expired. If not set it uses the standard SSO Session Idle value.", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "ssoSessionMaxLifespan": { "title": "SSO Session Max", "description": "Max time before a session is expired. Tokens and browser sessions are invalidated when a session is expired.", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "ssoSessionMaxLifespanRememberMe": { "title": "SSO Session Max Remember Me", "description": "Max time before a session is expired when a user has set the remember me option. Tokens and browser sessions are invalidated when a session is expired. If not set it uses the standard SSO Session Max value.", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "supportedLocales": { "title": "Supported locales", "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "updateProfileOnInitialSocialLogin": { "type": "boolean" }, "userCacheEnabled": { "type": "boolean" }, "userFederationMappers": { "type": "array", "items": { "$ref": "#/$defs/UserFederationMapperRepresentation" } }, "userFederationProviders": { "type": "array", "items": { "$ref": "#/$defs/UserFederationProviderRepresentation" } }, "userManagedAccessAllowed": { "title": "User-managed access", "description": "If enabled, users are allowed to manage their resources and permissions using the Account Management UI.", "type": "boolean" }, "users": { "type": "array", "items": { "$ref": "#/$defs/UserRepresentation" } }, "verifiableCredentialsEnabled": { "type": "boolean" }, "verifyEmail": { "title": "Verify email", "description": "Require user to verify their email address after initial login or after address changes are submitted.", "type": "boolean" }, "waitIncrementSeconds": { "title": "Wait increment", "description": "When failure threshold has been met, how much time should the user be locked out?", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "webAuthnPolicyAcceptableAaguids": { "title": "Acceptable AAGUIDs", "description": "The list of allowed AAGUIDs of which an authenticator can be registered. An AAGUID is a 128-bit identifier indicating the authenticator's type (e.g., make and model).", "type": "array", "items": { "type": "string" } }, "webAuthnPolicyAttestationConveyancePreference": { "title": "Attestation conveyance preference", "description": "Communicates to an authenticator the preference of how to generate an attestation statement.", "type": "string", "enum": [ "not specified", "none", "indirect", "direct" ] }, "webAuthnPolicyAuthenticatorAttachment": { "title": "Authenticator Attachment", "description": "Communicates to an authenticator an acceptable attachment pattern.", "type": "string", "enum": [ "not specified", "platform", "cross-platform" ] }, "webAuthnPolicyAvoidSameAuthenticatorRegister": { "title": "Avoid same authenticator registration", "description": "Avoid registering an authenticator that has already been registered.", "type": "boolean" }, "webAuthnPolicyCreateTimeout": { "title": "Timeout", "description": "The timeout value for creating the user's public key credential in seconds. If set to 0, this timeout option is not adapted.", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "webAuthnPolicyExtraOrigins": { "type": "array", "items": { "type": "string" } }, "webAuthnPolicyPasswordlessAcceptableAaguids": { "title": "Acceptable AAGUIDs", "description": "The list of allowed AAGUIDs of which an authenticator can be registered. An AAGUID is a 128-bit identifier indicating the authenticator's type (e.g., make and model).", "type": "array", "items": { "type": "string" } }, "webAuthnPolicyPasswordlessAttestationConveyancePreference": { "title": "Attestation conveyance preference", "description": "Communicates to an authenticator the preference of how to generate an attestation statement.", "type": "string", "enum": [ "not specified", "none", "indirect", "direct" ] }, "webAuthnPolicyPasswordlessAuthenticatorAttachment": { "title": "Authenticator Attachment", "description": "Communicates to an authenticator an acceptable attachment pattern.", "type": "string", "enum": [ "not specified", "platform", "cross-platform" ] }, "webAuthnPolicyPasswordlessAvoidSameAuthenticatorRegister": { "title": "Avoid same authenticator registration", "description": "Avoid registering an authenticator that has already been registered.", "type": "boolean" }, "webAuthnPolicyPasswordlessCreateTimeout": { "title": "Timeout", "description": "The timeout value for creating the user's public key credential in seconds. If set to 0, this timeout option is not adapted.", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "webAuthnPolicyPasswordlessExtraOrigins": { "type": "array", "items": { "type": "string" } }, "webAuthnPolicyPasswordlessRequireResidentKey": { "title": "Require discoverable credential", "description": "It tells an authenticator whether to create a public key credential as a Discoverable Credential.", "type": "string", "enum": [ "not specified", "Yes", "No" ] }, "webAuthnPolicyPasswordlessRpEntityName": { "title": "Relying party entity name", "description": "Human-readable server name as WebAuthn Relying Party", "type": "string" }, "webAuthnPolicyPasswordlessRpId": { "title": "Relying party ID", "description": "The WebAuthn Relying Party ID (RpID). It must be the origin's effective domain, e.g. 'company.com' or 'auth.company.com'.", "type": "string" }, "webAuthnPolicyPasswordlessSignatureAlgorithms": { "title": "Signature algorithms", "description": "The signature algorithms that should be used for the Authentication Assertion.", "type": "array", "items": { "type": "string", "enum": [ "Ed25519", "ES256", "ES384", "ES512", "RS256", "RS384", "RS512", "RS1" ] } }, "webAuthnPolicyPasswordlessUserVerificationRequirement": { "title": "User verification requirement", "description": "Communicates to an authenticator whether to require to verify a user.", "type": "string", "enum": [ "not specified", "required", "preferred", "discouraged" ] }, "webAuthnPolicyRequireResidentKey": { "title": "Require discoverable credential", "description": "It tells an authenticator whether to create a public key credential as a Discoverable Credential.", "type": "string", "enum": [ "not specified", "Yes", "No" ] }, "webAuthnPolicyRpEntityName": { "title": "Relying party entity name", "description": "Human-readable server name as WebAuthn Relying Party", "type": "string" }, "webAuthnPolicyRpId": { "title": "Relying party ID", "description": "The WebAuthn Relying Party ID (RpID). It must be the origin's effective domain, e.g. 'company.com' or 'auth.company.com'.", "type": "string" }, "webAuthnPolicySignatureAlgorithms": { "title": "Signature algorithms", "description": "The signature algorithms that should be used for the Authentication Assertion.", "type": "array", "items": { "type": "string", "enum": [ "Ed25519", "ES256", "ES384", "ES512", "RS256", "RS384", "RS512", "RS1" ] } }, "webAuthnPolicyUserVerificationRequirement": { "title": "User verification requirement", "description": "Communicates to an authenticator whether to require to verify a user.", "type": "string", "enum": [ "not specified", "required", "preferred", "discouraged" ] } }, "additionalProperties": false } ``` </details>
properties:
accessCodeLifespan:
description: Max time a client has to finish the access token protocol. This should normally be 1 minute.
format: int32
nullable: true
type: integer
accessCodeLifespanLogin:
description: Max time a user has to complete a login. This is recommended to be relatively long, such as 30 minutes or more.
format: int32
nullable: true
type: integer
accessCodeLifespanUserAction:
description: Max time a user has to complete login related actions like update password or configure totp. This is recommended to be relatively long, such as 5 minutes or more.
format: int32
nullable: true
type: integer
accessTokenLifespan:
description: Max time before an access token is expired. This value is recommended to be short relative to the SSO timeout.
format: int32
nullable: true
type: integer
accessTokenLifespanForImplicitFlow:
description: Max time before an access token issued during OpenID Connect Implicit Flow is expired. This value is recommended to be shorter than the SSO timeout. There is no possibility to refresh token during implicit flow, that's why there is a separate timeout different to 'Access Token Lifespan'.
format: int32
nullable: true
type: integer
accountTheme:
description: Select theme for login, OTP, grant, registration and forgot password pages.
nullable: true
type: string
actionTokenGeneratedByAdminLifespan:
description: Maximum time before an action permit sent to a user by administrator is expired. This value is recommended to be long to allow administrators to send e-mails for users that are currently offline. The default timeout can be overridden immediately before issuing the token.
format: int32
nullable: true
type: integer
actionTokenGeneratedByUserLifespan:
description: Maximum time before an action permit sent by a user (such as a forgot password e-mail) is expired. This value is recommended to be short because it's expected that the user would react to self-created action quickly.
format: int32
nullable: true
type: integer
adminEventsDetailsEnabled:
description: Include JSON representation for create and update requests.
nullable: true
type: boolean
adminEventsEnabled:
description: If enabled, admin events are saved to the database, which makes events available to the Admin UI.
nullable: true
type: boolean
adminPermissionsClient:
description: |-
ClientRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "access": { "type": "object", "additionalProperties": { "type": "boolean" } }, "adminUrl": { "title": "Admin URL", "description": "URL to the admin interface of the client. Set this if the client supports the adapter REST API. This REST API allows the auth server to push revocation policies and other administrative tasks. Usually this is set to the base URL of the client.", "type": "string" }, "alwaysDisplayInConsole": { "title": "Always display in UI", "description": "Always list this client in the Account UI, even if the user does not have an active session.", "type": "boolean" }, "attributes": { "type": "object", "properties": { "access.token.lifespan": { "title": "Access Token Lifespan", "description": "Max time before an access token is expired. This value is recommended to be short relative to the SSO timeout.", "type": "string", "pattern": "^[0-9]*$" }, "access.token.signed.response.alg": { "title": "Access token signature algorithm", "description": "JWA algorithm used for signing access tokens.", "type": "string" }, "authorization.encrypted.response.alg": { "title": "Authorization response encryption key management algorithm", "description": "JWA Algorithm used for key management in encrypting the authorization response when the response mode is jwt. This option is needed if you want encrypted authorization response. If left empty, the authorization response is just signed, but not encrypted.", "type": "string" }, "authorization.encrypted.response.enc": { "title": "Authorization response encryption content encryption algorithm", "description": "JWA Algorithm used for content encryption in encrypting the authorization response when the response mode is jwt. This option is needed if you want encrypted authorization response. If left empty, the authorization response is just signed, but not encrypted.", "type": "string" }, "authorization.signed.response.alg": { "title": "Authorization response signature algorithm", "description": "JWA algorithm used for signing authorization response tokens when the response mode is jwt.", "type": "string" }, "client.offline.session.idle.timeout": { "title": "Client Offline Session Idle", "description": "Time a client offline session is allowed to be idle before it expires. Offline tokens are invalidated when a client offline session is expired. The option does not affect the global user SSO session. If not set, it uses the realm Offline Session Idle value.", "type": "string", "pattern": "^[0-9]*$" }, "client.offline.session.max.lifespan": { "title": "Client Offline Session Max", "description": "Max time before a client offline session is expired. If Offline Session Max Limited is enabled at realm level, offline tokens are invalidated when a client offline session is expired. The option does not affect the global user SSO session. If not set, it uses the realm Offline Session Max value.", "type": "string", "pattern": "^[0-9]*$" }, "client.session.idle.timeout": { "title": "Client Session Idle", "description": "Time a client session is allowed to be idle before it expires. Tokens are invalidated when a client session is expired. The option does not affect the global user SSO session. If not set, it uses the standard SSO Session Idle value.", "type": "string", "pattern": "^[0-9]*$" }, "client.session.max.lifespan": { "title": "Client Session Max", "description": "Max time before a client session is expired. Tokens are invalidated when a session is expired. The option does not affect the global user SSO session. If not set, it uses the standard SSO Session Max value.", "type": "string", "pattern": "^[0-9]*$" }, "client_credentials.use_refresh_token": { "title": "Use refresh tokens for client credentials grant", "description": "If this is on, a refresh_token will be created and added to the token response if the client_credentials grant is used. The OAuth 2.0 RFC6749 Section 4.4.3 states that a refresh_token should not be generated when client_credentials grant is used. If this is off then no refresh_token will be generated and the associated user session will be removed.", "type": "string", "enum": [ "true", "false", "" ] }, "exclude.session.state.from.auth.response": { "title": "Exclude Session State From Authentication Response", "description": "If this is on, the parameter 'session_state' will not be included in OpenID Connect Authentication Response. It is useful if the client uses an older OIDC / OAuth2 adapter, which does not support the 'session_state' parameter.", "type": "string", "enum": [ "true", "false", "" ] }, "id.token.encrypted.response.alg": { "title": "ID token encryption key management algorithm", "description": "JWA Algorithm used for key management in encrypting ID tokens. This option is needed if you want encrypted ID tokens. If left empty, ID Tokens are just signed, but not encrypted.", "type": "string" }, "id.token.encrypted.response.enc": { "title": "ID token encryption content encryption algorithm", "description": "JWA Algorithm used for content encryption in encrypting ID tokens. This option is needed just if you want encrypted ID tokens. If left empty, ID Tokens are just signed, but not encrypted.", "type": "string" }, "id.token.signed.response.alg": { "title": "ID token signature algorithm", "description": "JWA algorithm used for signing ID tokens.", "type": "string" }, "logoUri": { "title": "Logo URL", "description": "URL that references a logo for the Client application", "type": "string" }, "pkce.code.challenge.method": { "title": "Proof Key for Code Exchange Code Challenge Method", "description": "Choose which code challenge method for PKCE is used. If not specified, keycloak does not applies PKCE to a client unless the client sends an authorization request with appropriate code challenge and code exchange method.", "type": "string" }, "policyUri": { "title": "Policy URL", "description": "URL that the Relying Party Client provides to the End-User to read about the how the profile data will be used", "type": "string" }, "post.logout.redirect.uris": { "title": "Valid post logout redirect URIs", "description": "Valid URI pattern a browser can redirect to after a successful login. Simple wildcards are allowed such as 'http://example.com/*'. Relative path can be specified too such as /my/relative/path/*. Relative paths are relative to the client root URL, or if none is specified the auth server root URL is used. For SAML, you must set valid URI patterns if you are relying on the consumer service URL embedded with the login request.", "type": "string" }, "request.object.encryption.alg": { "title": "Request object encryption algorithm", "description": "JWE algorithm, which client needs to use when sending OIDC request object specified by 'request' or 'request_uri' parameters. If set to 'any', encryption is optional and any algorithm is allowed.", "type": "string" }, "request.object.encryption.enc": { "title": "Request object content encryption algorithm", "description": "JWE algorithm, which client needs to use when encrypting the content of the OIDC request object specified by 'request' or 'request_uri' parameters. If set to 'any', any algorithm is allowed.", "type": "string" }, "request.object.required": { "title": "Request object required", "description": "Specifies if the client needs to provide a request object with their authorization requests, and what method they can use for this. If set to \"not required\", providing a request object is optional. In all other cases, providing a request object is mandatory. If set to \"request\", the request object must be provided by value. If set to \"request_uri\", the request object must be provided by reference. If set to \"request or request_uri\", either method can be used.", "type": "string" }, "request.object.signature.alg": { "title": "Request object signature algorithm", "description": "JWA algorithm, which client needs to use when sending OIDC request object specified by 'request' or 'request_uri' parameters. If set to 'any', Request object can be signed by any algorithm (including 'none' ).", "type": "string" }, "require.pushed.authorization.requests": { "title": "Pushed authorization request required", "description": "Boolean parameter indicating whether the authorization server accepts authorization request data only via the pushed authorization request method.", "type": "string", "enum": [ "true", "false", "" ] }, "tls.client.certificate.bound.access.tokens": { "title": "OAuth 2.0 Mutual TLS Certificate Bound Access Tokens Enabled", "description": "This enables support for OAuth 2.0 Mutual TLS Certificate Bound Access Tokens, which means that keycloak bind an access token and a refresh token with a X.509 certificate of a token requesting client exchanged in mutual TLS between keycloak's Token Endpoint and this client. These tokens can be treated as Holder-of-Key tokens instead of bearer tokens.", "type": "string", "enum": [ "true", "false", "" ] }, "token.endpoint.auth.signing.alg": { "title": "Signature algorithm", "description": "The signature algorithm to use to sign documents. Note that 'SHA1' based algorithms are deprecated and can be removed in the future. It is recommended to stick to some more secure algorithm instead of '*_SHA1'.", "type": "string" }, "token.response.type.bearer.lower-case": { "title": "Use lower-case bearer type in token responses", "description": "If this is on, token responses will be set the with the type \"bearer\" in lower-case. By default, the server sets the type as \"Bearer\" as defined by RFC6750.", "type": "string", "enum": [ "true", "false", "" ] }, "tosUri": { "title": "Terms of service URL", "description": "URL that the Relying Party Client provides to the End-User to read about the Relying Party's terms of service", "type": "string" }, "use.refresh.tokens": { "title": "Use refresh tokens", "description": "If this is on, a refresh_token will be created and added to the token response. If this is off then no refresh_token will be generated.", "type": "string", "enum": [ "true", "false", "" ] }, "user.info.encrypted.response.alg": { "title": "User info response encryption key management algorithm", "description": "JWA Algorithm used for key management in encrypting User Info Endpoint responses. This option is needed if you want encrypted User Info Endpoint responses. If left empty, User Info Endpoint responses are not encrypted.", "type": "string" }, "user.info.encrypted.response.enc": { "title": "User info response encryption content encryption algorithm", "description": "JWA Algorithm used for content encryption in encrypting User Info Endpoint responses. If User Info response encryption key management algorithm is specified, the default for this value is A128CBC-HS256.", "type": "string" }, "user.info.response.signature.alg": { "title": "User info signed response algorithm", "description": "JWA algorithm used for signed User Info Endpoint response. If set to 'unsigned', User Info Response won't be signed and will be returned in application/json format.", "type": "string" }, "x509.allow.regex.pattern.comparison": { "title": "Allow regex pattern comparison", "description": "If OFF, then the Subject DN from given client certificate must exactly match the given DN from the 'Subject DN' property as described in the RFC8705 specification. The Subject DN can be in the RFC4514 or RFC1779 format. If ON, then the Subject DN from given client certificate should match regex specified by 'Subject DN' property.", "type": "string", "enum": [ "true", "false", "" ] }, "x509.subjectdn": { "title": "Subject DN", "description": "A regular expression for validating Subject DN in the Client Certificate. Use \"(.*?)(?:$)\" to match all kind of expressions.", "type": "string" } }, "additionalProperties": { "type": "string" } }, "authenticationFlowBindingOverrides": { "title": "Authentication flow overrides", "type": "object", "properties": { "browser": { "title": "Browser Flow", "description": "Select the flow you want to use for browser authentication.", "type": "string" }, "direct_grant": { "title": "Direct Grant Flow", "description": "Select the flow you want to use for direct grant authentication.", "type": "string" } }, "additionalProperties": { "type": "string" } }, "authorizationServicesEnabled": { "title": "Authorization", "description": "Enable/Disable fine-grained authorization support for a client.", "type": "boolean" }, "authorizationSettings": { "$ref": "#/$defs/ResourceServerRepresentation" }, "baseUrl": { "title": "Home URL", "description": "Default URL to use when the auth server needs to redirect or link back to the client.", "type": "string" }, "bearerOnly": { "description": "This is a special OIDC type. This client only allows bearer token requests and cannot participate in browser logins.", "type": "boolean" }, "clientAuthenticatorType": { "title": "Client Authenticator", "description": "Client Authenticator used for authentication of this client against Keycloak server", "type": "string", "enum": [ "client-jwt", "client-secret", "client-secret-jwt", "client-x509" ] }, "clientId": { "title": "Client ID", "description": "The client identifier registered with the identity provider.", "type": "string" }, "clientTemplate": { "type": "string" }, "consentRequired": { "title": "Consent required", "description": "If enabled, users have to consent to client access.", "type": "boolean" }, "defaultClientScopes": { "type": "array", "items": { "type": "string" } }, "defaultRoles": { "type": "array", "items": { "type": "string" } }, "description": { "title": "Description", "description": "Help text for the description of the new flow", "type": "string" }, "directAccessGrantsEnabled": { "title": "Direct access grants", "description": "This enables support for Direct Access Grants, which means that client has access to username/password of user and exchange it directly with Keycloak server for access token. In terms of OAuth2 specification, this enables support of 'Resource Owner Password Credentials Grant' for this client.", "type": "boolean" }, "directGrantsOnly": { "type": "boolean" }, "enabled": { "title": "Enabled", "description": "Disabled clients cannot initiate a login or have obtained access tokens.", "type": "boolean" }, "frontchannelLogout": { "title": "Front channel logout", "description": "When true, logout requires a browser redirect to client. When false, server performs a background invocation for logout.", "type": "boolean" }, "fullScopeAllowed": { "title": "Full scope allowed", "description": "Allows you to disable all restrictions.", "type": "boolean" }, "id": { "type": "string" }, "implicitFlowEnabled": { "title": "Implicit flow", "description": "This enables support for OpenID Connect redirect based authentication without authorization code. In terms of OpenID Connect or OAuth2 specifications, this enables support of 'Implicit Flow' for this client.", "type": "boolean" }, "name": { "title": "Name", "description": "Specifies display name of the client. For example 'My Client'. Supports keys for localized values as well. For example: ${my_client}.", "type": "string" }, "nodeReRegistrationTimeout": { "title": "Node Re-registration timeout", "description": "Interval to specify max time for registered clients cluster nodes to re-register. If cluster node will not send re-registration request to Keycloak within this time, it will be unregistered from Keycloak.", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "notBefore": { "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "optionalClientScopes": { "type": "array", "items": { "type": "string" } }, "origin": { "type": "string" }, "protocol": { "title": "Protocol", "type": "string" }, "protocolMappers": { "type": "array", "items": { "$ref": "#/$defs/ProtocolMapperRepresentation" } }, "publicClient": { "title": "Client authentication", "description": "This defines the type of the OIDC client. When it's ON, the OIDC type is set to confidential access type. When it's OFF, it is set to public access type.", "type": "boolean" }, "redirectUris": { "title": "Valid redirect URIs", "description": "Valid URI pattern a browser can redirect to after a successful login. Simple wildcards are allowed such as 'http://example.com/*'. Relative path can be specified too such as /my/relative/path/*. Relative paths are relative to the client root URL, or if none is specified the auth server root URL is used. For SAML, you must set valid URI patterns if you are relying on the consumer service URL embedded with the login request.", "type": "array", "items": { "type": "string" } }, "registeredNodes": { "type": "object", "additionalProperties": { "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 } }, "registrationAccessToken": { "title": "Registration access token", "description": "The registration access token provides access for clients to the client registration service.", "type": "string" }, "rootUrl": { "title": "Root URL", "description": "Root URL appended to relative URLs", "type": "string" }, "secret": { "title": "Client Secret", "type": "string" }, "serviceAccountsEnabled": { "title": "Service accounts roles", "description": "Allows you to authenticate this client to Keycloak and retrieve access token dedicated to this client. In terms of OAuth2 specification, this enables support of 'Client Credentials Grant' for this client.", "type": "boolean" }, "standardFlowEnabled": { "title": "Standard flow", "description": "This enables standard OpenID Connect redirect based authentication with authorization code. In terms of OpenID Connect or OAuth2 specifications, this enables support of 'Authorization Code Flow' for this client.", "type": "boolean" }, "surrogateAuthRequired": { "type": "boolean" }, "type": { "type": "string" }, "useTemplateConfig": { "type": "boolean" }, "useTemplateMappers": { "type": "boolean" }, "useTemplateScope": { "type": "boolean" }, "webOrigins": { "title": "Web origins", "description": "Allowed CORS origins. To permit all origins of Valid Redirect URIs, add '+'. This does not include the '*' wildcard though. To permit all origins, explicitly add '*'.", "type": "array", "items": { "type": "string" } } }, "additionalProperties": false } ``` </details>
nullable: true
properties:
access:
additionalProperties:
type: boolean
type: object
adminUrl:
description: URL to the admin interface of the client. Set this if the client supports the adapter REST API. This REST API allows the auth server to push revocation policies and other administrative tasks. Usually this is set to the base URL of the client.
nullable: true
type: string
alwaysDisplayInConsole:
description: Always list this client in the Account UI, even if the user does not have an active session.
nullable: true
type: boolean
attributes:
description: |-
ClientRepresentationAttributes
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "access.token.lifespan": { "title": "Access Token Lifespan", "description": "Max time before an access token is expired. This value is recommended to be short relative to the SSO timeout.", "type": "string", "pattern": "^[0-9]*$" }, "access.token.signed.response.alg": { "title": "Access token signature algorithm", "description": "JWA algorithm used for signing access tokens.", "type": "string" }, "authorization.encrypted.response.alg": { "title": "Authorization response encryption key management algorithm", "description": "JWA Algorithm used for key management in encrypting the authorization response when the response mode is jwt. This option is needed if you want encrypted authorization response. If left empty, the authorization response is just signed, but not encrypted.", "type": "string" }, "authorization.encrypted.response.enc": { "title": "Authorization response encryption content encryption algorithm", "description": "JWA Algorithm used for content encryption in encrypting the authorization response when the response mode is jwt. This option is needed if you want encrypted authorization response. If left empty, the authorization response is just signed, but not encrypted.", "type": "string" }, "authorization.signed.response.alg": { "title": "Authorization response signature algorithm", "description": "JWA algorithm used for signing authorization response tokens when the response mode is jwt.", "type": "string" }, "client.offline.session.idle.timeout": { "title": "Client Offline Session Idle", "description": "Time a client offline session is allowed to be idle before it expires. Offline tokens are invalidated when a client offline session is expired. The option does not affect the global user SSO session. If not set, it uses the realm Offline Session Idle value.", "type": "string", "pattern": "^[0-9]*$" }, "client.offline.session.max.lifespan": { "title": "Client Offline Session Max", "description": "Max time before a client offline session is expired. If Offline Session Max Limited is enabled at realm level, offline tokens are invalidated when a client offline session is expired. The option does not affect the global user SSO session. If not set, it uses the realm Offline Session Max value.", "type": "string", "pattern": "^[0-9]*$" }, "client.session.idle.timeout": { "title": "Client Session Idle", "description": "Time a client session is allowed to be idle before it expires. Tokens are invalidated when a client session is expired. The option does not affect the global user SSO session. If not set, it uses the standard SSO Session Idle value.", "type": "string", "pattern": "^[0-9]*$" }, "client.session.max.lifespan": { "title": "Client Session Max", "description": "Max time before a client session is expired. Tokens are invalidated when a session is expired. The option does not affect the global user SSO session. If not set, it uses the standard SSO Session Max value.", "type": "string", "pattern": "^[0-9]*$" }, "client_credentials.use_refresh_token": { "title": "Use refresh tokens for client credentials grant", "description": "If this is on, a refresh_token will be created and added to the token response if the client_credentials grant is used. The OAuth 2.0 RFC6749 Section 4.4.3 states that a refresh_token should not be generated when client_credentials grant is used. If this is off then no refresh_token will be generated and the associated user session will be removed.", "type": "string", "enum": [ "true", "false", "" ] }, "exclude.session.state.from.auth.response": { "title": "Exclude Session State From Authentication Response", "description": "If this is on, the parameter 'session_state' will not be included in OpenID Connect Authentication Response. It is useful if the client uses an older OIDC / OAuth2 adapter, which does not support the 'session_state' parameter.", "type": "string", "enum": [ "true", "false", "" ] }, "id.token.encrypted.response.alg": { "title": "ID token encryption key management algorithm", "description": "JWA Algorithm used for key management in encrypting ID tokens. This option is needed if you want encrypted ID tokens. If left empty, ID Tokens are just signed, but not encrypted.", "type": "string" }, "id.token.encrypted.response.enc": { "title": "ID token encryption content encryption algorithm", "description": "JWA Algorithm used for content encryption in encrypting ID tokens. This option is needed just if you want encrypted ID tokens. If left empty, ID Tokens are just signed, but not encrypted.", "type": "string" }, "id.token.signed.response.alg": { "title": "ID token signature algorithm", "description": "JWA algorithm used for signing ID tokens.", "type": "string" }, "logoUri": { "title": "Logo URL", "description": "URL that references a logo for the Client application", "type": "string" }, "pkce.code.challenge.method": { "title": "Proof Key for Code Exchange Code Challenge Method", "description": "Choose which code challenge method for PKCE is used. If not specified, keycloak does not applies PKCE to a client unless the client sends an authorization request with appropriate code challenge and code exchange method.", "type": "string" }, "policyUri": { "title": "Policy URL", "description": "URL that the Relying Party Client provides to the End-User to read about the how the profile data will be used", "type": "string" }, "post.logout.redirect.uris": { "title": "Valid post logout redirect URIs", "description": "Valid URI pattern a browser can redirect to after a successful login. Simple wildcards are allowed such as 'http://example.com/*'. Relative path can be specified too such as /my/relative/path/*. Relative paths are relative to the client root URL, or if none is specified the auth server root URL is used. For SAML, you must set valid URI patterns if you are relying on the consumer service URL embedded with the login request.", "type": "string" }, "request.object.encryption.alg": { "title": "Request object encryption algorithm", "description": "JWE algorithm, which client needs to use when sending OIDC request object specified by 'request' or 'request_uri' parameters. If set to 'any', encryption is optional and any algorithm is allowed.", "type": "string" }, "request.object.encryption.enc": { "title": "Request object content encryption algorithm", "description": "JWE algorithm, which client needs to use when encrypting the content of the OIDC request object specified by 'request' or 'request_uri' parameters. If set to 'any', any algorithm is allowed.", "type": "string" }, "request.object.required": { "title": "Request object required", "description": "Specifies if the client needs to provide a request object with their authorization requests, and what method they can use for this. If set to \"not required\", providing a request object is optional. In all other cases, providing a request object is mandatory. If set to \"request\", the request object must be provided by value. If set to \"request_uri\", the request object must be provided by reference. If set to \"request or request_uri\", either method can be used.", "type": "string" }, "request.object.signature.alg": { "title": "Request object signature algorithm", "description": "JWA algorithm, which client needs to use when sending OIDC request object specified by 'request' or 'request_uri' parameters. If set to 'any', Request object can be signed by any algorithm (including 'none' ).", "type": "string" }, "require.pushed.authorization.requests": { "title": "Pushed authorization request required", "description": "Boolean parameter indicating whether the authorization server accepts authorization request data only via the pushed authorization request method.", "type": "string", "enum": [ "true", "false", "" ] }, "tls.client.certificate.bound.access.tokens": { "title": "OAuth 2.0 Mutual TLS Certificate Bound Access Tokens Enabled", "description": "This enables support for OAuth 2.0 Mutual TLS Certificate Bound Access Tokens, which means that keycloak bind an access token and a refresh token with a X.509 certificate of a token requesting client exchanged in mutual TLS between keycloak's Token Endpoint and this client. These tokens can be treated as Holder-of-Key tokens instead of bearer tokens.", "type": "string", "enum": [ "true", "false", "" ] }, "token.endpoint.auth.signing.alg": { "title": "Signature algorithm", "description": "The signature algorithm to use to sign documents. Note that 'SHA1' based algorithms are deprecated and can be removed in the future. It is recommended to stick to some more secure algorithm instead of '*_SHA1'.", "type": "string" }, "token.response.type.bearer.lower-case": { "title": "Use lower-case bearer type in token responses", "description": "If this is on, token responses will be set the with the type \"bearer\" in lower-case. By default, the server sets the type as \"Bearer\" as defined by RFC6750.", "type": "string", "enum": [ "true", "false", "" ] }, "tosUri": { "title": "Terms of service URL", "description": "URL that the Relying Party Client provides to the End-User to read about the Relying Party's terms of service", "type": "string" }, "use.refresh.tokens": { "title": "Use refresh tokens", "description": "If this is on, a refresh_token will be created and added to the token response. If this is off then no refresh_token will be generated.", "type": "string", "enum": [ "true", "false", "" ] }, "user.info.encrypted.response.alg": { "title": "User info response encryption key management algorithm", "description": "JWA Algorithm used for key management in encrypting User Info Endpoint responses. This option is needed if you want encrypted User Info Endpoint responses. If left empty, User Info Endpoint responses are not encrypted.", "type": "string" }, "user.info.encrypted.response.enc": { "title": "User info response encryption content encryption algorithm", "description": "JWA Algorithm used for content encryption in encrypting User Info Endpoint responses. If User Info response encryption key management algorithm is specified, the default for this value is A128CBC-HS256.", "type": "string" }, "user.info.response.signature.alg": { "title": "User info signed response algorithm", "description": "JWA algorithm used for signed User Info Endpoint response. If set to 'unsigned', User Info Response won't be signed and will be returned in application/json format.", "type": "string" }, "x509.allow.regex.pattern.comparison": { "title": "Allow regex pattern comparison", "description": "If OFF, then the Subject DN from given client certificate must exactly match the given DN from the 'Subject DN' property as described in the RFC8705 specification. The Subject DN can be in the RFC4514 or RFC1779 format. If ON, then the Subject DN from given client certificate should match regex specified by 'Subject DN' property.", "type": "string", "enum": [ "true", "false", "" ] }, "x509.subjectdn": { "title": "Subject DN", "description": "A regular expression for validating Subject DN in the Client Certificate. Use \"(.*?)(?:$)\" to match all kind of expressions.", "type": "string" } }, "additionalProperties": { "type": "string" } } ``` </details>
nullable: true
properties:
access.token.lifespan:
description: Max time before an access token is expired. This value is recommended to be short relative to the SSO timeout.
nullable: true
type: string
access.token.signed.response.alg:
description: JWA algorithm used for signing access tokens.
nullable: true
type: string
authorization.encrypted.response.alg:
description: JWA Algorithm used for key management in encrypting the authorization response when the response mode is jwt. This option is needed if you want encrypted authorization response. If left empty, the authorization response is just signed, but not encrypted.
nullable: true
type: string
authorization.encrypted.response.enc:
description: JWA Algorithm used for content encryption in encrypting the authorization response when the response mode is jwt. This option is needed if you want encrypted authorization response. If left empty, the authorization response is just signed, but not encrypted.
nullable: true
type: string
authorization.signed.response.alg:
description: JWA algorithm used for signing authorization response tokens when the response mode is jwt.
nullable: true
type: string
client.offline.session.idle.timeout:
description: Time a client offline session is allowed to be idle before it expires. Offline tokens are invalidated when a client offline session is expired. The option does not affect the global user SSO session. If not set, it uses the realm Offline Session Idle value.
nullable: true
type: string
client.offline.session.max.lifespan:
description: Max time before a client offline session is expired. If Offline Session Max Limited is enabled at realm level, offline tokens are invalidated when a client offline session is expired. The option does not affect the global user SSO session. If not set, it uses the realm Offline Session Max value.
nullable: true
type: string
client.session.idle.timeout:
description: Time a client session is allowed to be idle before it expires. Tokens are invalidated when a client session is expired. The option does not affect the global user SSO session. If not set, it uses the standard SSO Session Idle value.
nullable: true
type: string
client.session.max.lifespan:
description: Max time before a client session is expired. Tokens are invalidated when a session is expired. The option does not affect the global user SSO session. If not set, it uses the standard SSO Session Max value.
nullable: true
type: string
client_credentials.use_refresh_token:
description: If this is on, a refresh_token will be created and added to the token response if the client_credentials grant is used. The OAuth 2.0 RFC6749 Section 4.4.3 states that a refresh_token should not be generated when client_credentials grant is used. If this is off then no refresh_token will be generated and the associated user session will be removed.
enum:
- 'true'
- 'false'
- ''
nullable: true
type: string
exclude.session.state.from.auth.response:
description: If this is on, the parameter 'session_state' will not be included in OpenID Connect Authentication Response. It is useful if the client uses an older OIDC / OAuth2 adapter, which does not support the 'session_state' parameter.
enum:
- 'true'
- 'false'
- ''
nullable: true
type: string
id.token.encrypted.response.alg:
description: JWA Algorithm used for key management in encrypting ID tokens. This option is needed if you want encrypted ID tokens. If left empty, ID Tokens are just signed, but not encrypted.
nullable: true
type: string
id.token.encrypted.response.enc:
description: JWA Algorithm used for content encryption in encrypting ID tokens. This option is needed just if you want encrypted ID tokens. If left empty, ID Tokens are just signed, but not encrypted.
nullable: true
type: string
id.token.signed.response.alg:
description: JWA algorithm used for signing ID tokens.
nullable: true
type: string
logoUri:
description: URL that references a logo for the Client application
nullable: true
type: string
pkce.code.challenge.method:
description: Choose which code challenge method for PKCE is used. If not specified, keycloak does not applies PKCE to a client unless the client sends an authorization request with appropriate code challenge and code exchange method.
nullable: true
type: string
policyUri:
description: URL that the Relying Party Client provides to the End-User to read about the how the profile data will be used
nullable: true
type: string
post.logout.redirect.uris:
description: Valid URI pattern a browser can redirect to after a successful login. Simple wildcards are allowed such as 'http://example.com/*'. Relative path can be specified too such as /my/relative/path/*. Relative paths are relative to the client root URL, or if none is specified the auth server root URL is used. For SAML, you must set valid URI patterns if you are relying on the consumer service URL embedded with the login request.
nullable: true
type: string
request.object.encryption.alg:
description: JWE algorithm, which client needs to use when sending OIDC request object specified by 'request' or 'request_uri' parameters. If set to 'any', encryption is optional and any algorithm is allowed.
nullable: true
type: string
request.object.encryption.enc:
description: JWE algorithm, which client needs to use when encrypting the content of the OIDC request object specified by 'request' or 'request_uri' parameters. If set to 'any', any algorithm is allowed.
nullable: true
type: string
request.object.required:
description: Specifies if the client needs to provide a request object with their authorization requests, and what method they can use for this. If set to "not required", providing a request object is optional. In all other cases, providing a request object is mandatory. If set to "request", the request object must be provided by value. If set to "request_uri", the request object must be provided by reference. If set to "request or request_uri", either method can be used.
nullable: true
type: string
request.object.signature.alg:
description: JWA algorithm, which client needs to use when sending OIDC request object specified by 'request' or 'request_uri' parameters. If set to 'any', Request object can be signed by any algorithm (including 'none' ).
nullable: true
type: string
require.pushed.authorization.requests:
description: Boolean parameter indicating whether the authorization server accepts authorization request data only via the pushed authorization request method.
enum:
- 'true'
- 'false'
- ''
nullable: true
type: string
tls.client.certificate.bound.access.tokens:
description: This enables support for OAuth 2.0 Mutual TLS Certificate Bound Access Tokens, which means that keycloak bind an access token and a refresh token with a X.509 certificate of a token requesting client exchanged in mutual TLS between keycloak's Token Endpoint and this client. These tokens can be treated as Holder-of-Key tokens instead of bearer tokens.
enum:
- 'true'
- 'false'
- ''
nullable: true
type: string
token.endpoint.auth.signing.alg:
description: The signature algorithm to use to sign documents. Note that 'SHA1' based algorithms are deprecated and can be removed in the future. It is recommended to stick to some more secure algorithm instead of '*_SHA1'.
nullable: true
type: string
token.response.type.bearer.lower-case:
description: If this is on, token responses will be set the with the type "bearer" in lower-case. By default, the server sets the type as "Bearer" as defined by RFC6750.
enum:
- 'true'
- 'false'
- ''
nullable: true
type: string
tosUri:
description: URL that the Relying Party Client provides to the End-User to read about the Relying Party's terms of service
nullable: true
type: string
use.refresh.tokens:
description: If this is on, a refresh_token will be created and added to the token response. If this is off then no refresh_token will be generated.
enum:
- 'true'
- 'false'
- ''
nullable: true
type: string
user.info.encrypted.response.alg:
description: JWA Algorithm used for key management in encrypting User Info Endpoint responses. This option is needed if you want encrypted User Info Endpoint responses. If left empty, User Info Endpoint responses are not encrypted.
nullable: true
type: string
user.info.encrypted.response.enc:
description: JWA Algorithm used for content encryption in encrypting User Info Endpoint responses. If User Info response encryption key management algorithm is specified, the default for this value is A128CBC-HS256.
nullable: true
type: string
user.info.response.signature.alg:
description: JWA algorithm used for signed User Info Endpoint response. If set to 'unsigned', User Info Response won't be signed and will be returned in application/json format.
nullable: true
type: string
x509.allow.regex.pattern.comparison:
description: If OFF, then the Subject DN from given client certificate must exactly match the given DN from the 'Subject DN' property as described in the RFC8705 specification. The Subject DN can be in the RFC4514 or RFC1779 format. If ON, then the Subject DN from given client certificate should match regex specified by 'Subject DN' property.
enum:
- 'true'
- 'false'
- ''
nullable: true
type: string
x509.subjectdn:
description: A regular expression for validating Subject DN in the Client Certificate. Use "(.*?)(?:$)" to match all kind of expressions.
nullable: true
type: string
type: object
authenticationFlowBindingOverrides:
description: |-
AuthenticationFlowOverrides
<details><summary>JSON schema</summary>
```json { "title": "Authentication flow overrides", "type": "object", "properties": { "browser": { "title": "Browser Flow", "description": "Select the flow you want to use for browser authentication.", "type": "string" }, "direct_grant": { "title": "Direct Grant Flow", "description": "Select the flow you want to use for direct grant authentication.", "type": "string" } }, "additionalProperties": { "type": "string" } } ``` </details>
nullable: true
properties:
browser:
description: Select the flow you want to use for browser authentication.
nullable: true
type: string
direct_grant:
description: Select the flow you want to use for direct grant authentication.
nullable: true
type: string
type: object
authorizationServicesEnabled:
description: Enable/Disable fine-grained authorization support for a client.
nullable: true
type: boolean
authorizationSettings:
description: |-
ResourceServerRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "allowRemoteResourceManagement": { "type": "boolean" }, "authorizationSchema": { "$ref": "#/$defs/AuthorizationSchema" }, "clientId": { "type": "string" }, "decisionStrategy": { "$ref": "#/$defs/DecisionStrategy" }, "id": { "type": "string" }, "name": { "type": "string" }, "policies": { "type": "array", "items": { "$ref": "#/$defs/PolicyRepresentation" } }, "policyEnforcementMode": { "$ref": "#/$defs/PolicyEnforcementMode" }, "resources": { "type": "array", "items": { "$ref": "#/$defs/ResourceRepresentation" } }, "scopes": { "type": "array", "items": { "$ref": "#/$defs/ScopeRepresentation" } } }, "additionalProperties": false } ``` </details>
nullable: true
properties:
allowRemoteResourceManagement:
nullable: true
type: boolean
authorizationSchema:
description: |-
AuthorizationSchema
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "resourceTypes": { "type": "object", "additionalProperties": { "$ref": "#/$defs/ResourceType" } } }, "additionalProperties": false } ``` </details>
nullable: true
properties:
resourceTypes:
additionalProperties:
description: |-
ResourceType
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "scopes": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "type": { "type": "string" } }, "additionalProperties": false } ``` </details>
properties:
scopes:
items:
type: string
nullable: true
type: array
type:
nullable: true
type: string
type: object
type: object
type: object
clientId:
nullable: true
type: string
decisionStrategy:
description: |-
DecisionStrategy
<details><summary>JSON schema</summary>
```json { "type": "string", "enum": [ "AFFIRMATIVE", "UNANIMOUS", "CONSENSUS" ] } ``` </details>
enum:
- AFFIRMATIVE
- UNANIMOUS
- CONSENSUS
nullable: true
type: string
id:
nullable: true
type: string
name:
nullable: true
type: string
policies:
items:
description: |-
PolicyRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "config": { "type": "object", "additionalProperties": { "type": "string" } }, "decisionStrategy": { "$ref": "#/$defs/DecisionStrategy" }, "description": { "type": "string" }, "id": { "type": "string" }, "logic": { "$ref": "#/$defs/Logic" }, "name": { "type": "string" }, "owner": { "type": "string" }, "policies": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "resourceType": { "type": "string" }, "resources": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "resourcesData": { "type": "array", "items": { "$ref": "#/$defs/ResourceRepresentation" }, "uniqueItems": true }, "scopes": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "scopesData": { "type": "array", "items": { "$ref": "#/$defs/ScopeRepresentation" }, "uniqueItems": true }, "type": { "type": "string" } }, "additionalProperties": false } ``` </details>
properties:
config:
additionalProperties:
type: string
type: object
decisionStrategy:
description: |-
DecisionStrategy
<details><summary>JSON schema</summary>
```json { "type": "string", "enum": [ "AFFIRMATIVE", "UNANIMOUS", "CONSENSUS" ] } ``` </details>
enum:
- AFFIRMATIVE
- UNANIMOUS
- CONSENSUS
nullable: true
type: string
description:
nullable: true
type: string
id:
nullable: true
type: string
logic:
description: |-
Logic
<details><summary>JSON schema</summary>
```json { "type": "string", "enum": [ "POSITIVE", "NEGATIVE" ] } ``` </details>
enum:
- POSITIVE
- NEGATIVE
nullable: true
type: string
name:
nullable: true
type: string
owner:
nullable: true
type: string
policies:
items:
type: string
nullable: true
type: array
resourceType:
nullable: true
type: string
resources:
items:
type: string
nullable: true
type: array
resourcesData:
items:
description: |-
ResourceRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "_id": { "type": "string" }, "attributes": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } }, "displayName": { "type": "string" }, "icon_uri": { "type": "string" }, "name": { "type": "string" }, "owner": { "type": "object", "allOf": [ { "$ref": "#/$defs/ResourceOwnerRepresentation" } ] }, "ownerManagedAccess": { "type": "boolean" }, "scopes": { "type": "array", "items": { "$ref": "#/$defs/ScopeRepresentation" }, "uniqueItems": true }, "scopesUma": { "type": "array", "items": { "$ref": "#/$defs/ScopeRepresentation" }, "uniqueItems": true }, "type": { "type": "string" }, "uri": { "type": "string" }, "uris": { "type": "array", "items": { "type": "string" }, "uniqueItems": true } }, "additionalProperties": false } ``` </details>
properties:
_id:
nullable: true
type: string
attributes:
additionalProperties:
items:
type: string
type: array
type: object
displayName:
nullable: true
type: string
icon_uri:
nullable: true
type: string
name:
nullable: true
type: string
owner:
description: |-
ResourceOwnerRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "additionalProperties": false } ``` </details>
nullable: true
properties:
id:
nullable: true
type: string
name:
nullable: true
type: string
type: object
ownerManagedAccess:
nullable: true
type: boolean
scopes:
items:
description: |-
ScopeRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "displayName": { "type": "string" }, "iconUri": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "policies": { "type": "array", "items": { "$ref": "#/$defs/PolicyRepresentation" } }, "resources": { "type": "array", "items": { "$ref": "#/$defs/ResourceRepresentation" } } }, "additionalProperties": false } ``` </details>
properties:
displayName:
nullable: true
type: string
iconUri:
nullable: true
type: string
id:
nullable: true
type: string
name:
nullable: true
type: string
type: object
x-kubernetes-preserve-unknown-fields: true
nullable: true
type: array
scopesUma:
items:
description: |-
ScopeRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "displayName": { "type": "string" }, "iconUri": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "policies": { "type": "array", "items": { "$ref": "#/$defs/PolicyRepresentation" } }, "resources": { "type": "array", "items": { "$ref": "#/$defs/ResourceRepresentation" } } }, "additionalProperties": false } ``` </details>
properties:
displayName:
nullable: true
type: string
iconUri:
nullable: true
type: string
id:
nullable: true
type: string
name:
nullable: true
type: string
type: object
x-kubernetes-preserve-unknown-fields: true
nullable: true
type: array
type:
nullable: true
type: string
uri:
nullable: true
type: string
uris:
items:
type: string
nullable: true
type: array
type: object
nullable: true
type: array
scopes:
items:
type: string
nullable: true
type: array
scopesData:
items:
description: |-
ScopeRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "displayName": { "type": "string" }, "iconUri": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "policies": { "type": "array", "items": { "$ref": "#/$defs/PolicyRepresentation" } }, "resources": { "type": "array", "items": { "$ref": "#/$defs/ResourceRepresentation" } } }, "additionalProperties": false } ``` </details>
properties:
displayName:
nullable: true
type: string
iconUri:
nullable: true
type: string
id:
nullable: true
type: string
name:
nullable: true
type: string
resources:
items:
description: |-
ResourceRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "_id": { "type": "string" }, "attributes": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } }, "displayName": { "type": "string" }, "icon_uri": { "type": "string" }, "name": { "type": "string" }, "owner": { "type": "object", "allOf": [ { "$ref": "#/$defs/ResourceOwnerRepresentation" } ] }, "ownerManagedAccess": { "type": "boolean" }, "scopes": { "type": "array", "items": { "$ref": "#/$defs/ScopeRepresentation" }, "uniqueItems": true }, "scopesUma": { "type": "array", "items": { "$ref": "#/$defs/ScopeRepresentation" }, "uniqueItems": true }, "type": { "type": "string" }, "uri": { "type": "string" }, "uris": { "type": "array", "items": { "type": "string" }, "uniqueItems": true } }, "additionalProperties": false } ``` </details>
properties:
_id:
nullable: true
type: string
attributes:
additionalProperties:
items:
type: string
type: array
type: object
displayName:
nullable: true
type: string
icon_uri:
nullable: true
type: string
name:
nullable: true
type: string
owner:
description: |-
ResourceOwnerRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "additionalProperties": false } ``` </details>
nullable: true
properties:
id:
nullable: true
type: string
name:
nullable: true
type: string
type: object
ownerManagedAccess:
nullable: true
type: boolean
type:
nullable: true
type: string
uri:
nullable: true
type: string
uris:
items:
type: string
nullable: true
type: array
type: object
x-kubernetes-preserve-unknown-fields: true
type: array
type: object
x-kubernetes-preserve-unknown-fields: true
nullable: true
type: array
type:
nullable: true
type: string
type: object
type: array
policyEnforcementMode:
description: |-
PolicyEnforcementMode
<details><summary>JSON schema</summary>
```json { "type": "string", "enum": [ "ENFORCING", "PERMISSIVE", "DISABLED" ] } ``` </details>
enum:
- ENFORCING
- PERMISSIVE
- DISABLED
nullable: true
type: string
resources:
items:
description: |-
ResourceRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "_id": { "type": "string" }, "attributes": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } }, "displayName": { "type": "string" }, "icon_uri": { "type": "string" }, "name": { "type": "string" }, "owner": { "type": "object", "allOf": [ { "$ref": "#/$defs/ResourceOwnerRepresentation" } ] }, "ownerManagedAccess": { "type": "boolean" }, "scopes": { "type": "array", "items": { "$ref": "#/$defs/ScopeRepresentation" }, "uniqueItems": true }, "scopesUma": { "type": "array", "items": { "$ref": "#/$defs/ScopeRepresentation" }, "uniqueItems": true }, "type": { "type": "string" }, "uri": { "type": "string" }, "uris": { "type": "array", "items": { "type": "string" }, "uniqueItems": true } }, "additionalProperties": false } ``` </details>
properties:
_id:
nullable: true
type: string
attributes:
additionalProperties:
items:
type: string
type: array
type: object
displayName:
nullable: true
type: string
icon_uri:
nullable: true
type: string
name:
nullable: true
type: string
owner:
description: |-
ResourceOwnerRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "additionalProperties": false } ``` </details>
nullable: true
properties:
id:
nullable: true
type: string
name:
nullable: true
type: string
type: object
ownerManagedAccess:
nullable: true
type: boolean
scopes:
items:
description: |-
ScopeRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "displayName": { "type": "string" }, "iconUri": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "policies": { "type": "array", "items": { "$ref": "#/$defs/PolicyRepresentation" } }, "resources": { "type": "array", "items": { "$ref": "#/$defs/ResourceRepresentation" } } }, "additionalProperties": false } ``` </details>
properties:
displayName:
nullable: true
type: string
iconUri:
nullable: true
type: string
id:
nullable: true
type: string
name:
nullable: true
type: string
policies:
items:
description: |-
PolicyRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "config": { "type": "object", "additionalProperties": { "type": "string" } }, "decisionStrategy": { "$ref": "#/$defs/DecisionStrategy" }, "description": { "type": "string" }, "id": { "type": "string" }, "logic": { "$ref": "#/$defs/Logic" }, "name": { "type": "string" }, "owner": { "type": "string" }, "policies": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "resourceType": { "type": "string" }, "resources": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "resourcesData": { "type": "array", "items": { "$ref": "#/$defs/ResourceRepresentation" }, "uniqueItems": true }, "scopes": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "scopesData": { "type": "array", "items": { "$ref": "#/$defs/ScopeRepresentation" }, "uniqueItems": true }, "type": { "type": "string" } }, "additionalProperties": false } ``` </details>
properties:
config:
additionalProperties:
type: string
type: object
decisionStrategy:
description: |-
DecisionStrategy
<details><summary>JSON schema</summary>
```json { "type": "string", "enum": [ "AFFIRMATIVE", "UNANIMOUS", "CONSENSUS" ] } ``` </details>
enum:
- AFFIRMATIVE
- UNANIMOUS
- CONSENSUS
nullable: true
type: string
description:
nullable: true
type: string
id:
nullable: true
type: string
logic:
description: |-
Logic
<details><summary>JSON schema</summary>
```json { "type": "string", "enum": [ "POSITIVE", "NEGATIVE" ] } ``` </details>
enum:
- POSITIVE
- NEGATIVE
nullable: true
type: string
name:
nullable: true
type: string
owner:
nullable: true
type: string
policies:
items:
type: string
nullable: true
type: array
resourceType:
nullable: true
type: string
resources:
items:
type: string
nullable: true
type: array
scopes:
items:
type: string
nullable: true
type: array
type:
nullable: true
type: string
type: object
x-kubernetes-preserve-unknown-fields: true
type: array
type: object
x-kubernetes-preserve-unknown-fields: true
nullable: true
type: array
scopesUma:
items:
description: |-
ScopeRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "displayName": { "type": "string" }, "iconUri": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "policies": { "type": "array", "items": { "$ref": "#/$defs/PolicyRepresentation" } }, "resources": { "type": "array", "items": { "$ref": "#/$defs/ResourceRepresentation" } } }, "additionalProperties": false } ``` </details>
properties:
displayName:
nullable: true
type: string
iconUri:
nullable: true
type: string
id:
nullable: true
type: string
name:
nullable: true
type: string
policies:
items:
description: |-
PolicyRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "config": { "type": "object", "additionalProperties": { "type": "string" } }, "decisionStrategy": { "$ref": "#/$defs/DecisionStrategy" }, "description": { "type": "string" }, "id": { "type": "string" }, "logic": { "$ref": "#/$defs/Logic" }, "name": { "type": "string" }, "owner": { "type": "string" }, "policies": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "resourceType": { "type": "string" }, "resources": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "resourcesData": { "type": "array", "items": { "$ref": "#/$defs/ResourceRepresentation" }, "uniqueItems": true }, "scopes": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "scopesData": { "type": "array", "items": { "$ref": "#/$defs/ScopeRepresentation" }, "uniqueItems": true }, "type": { "type": "string" } }, "additionalProperties": false } ``` </details>
properties:
config:
additionalProperties:
type: string
type: object
decisionStrategy:
description: |-
DecisionStrategy
<details><summary>JSON schema</summary>
```json { "type": "string", "enum": [ "AFFIRMATIVE", "UNANIMOUS", "CONSENSUS" ] } ``` </details>
enum:
- AFFIRMATIVE
- UNANIMOUS
- CONSENSUS
nullable: true
type: string
description:
nullable: true
type: string
id:
nullable: true
type: string
logic:
description: |-
Logic
<details><summary>JSON schema</summary>
```json { "type": "string", "enum": [ "POSITIVE", "NEGATIVE" ] } ``` </details>
enum:
- POSITIVE
- NEGATIVE
nullable: true
type: string
name:
nullable: true
type: string
owner:
nullable: true
type: string
policies:
items:
type: string
nullable: true
type: array
resourceType:
nullable: true
type: string
resources:
items:
type: string
nullable: true
type: array
scopes:
items:
type: string
nullable: true
type: array
type:
nullable: true
type: string
type: object
x-kubernetes-preserve-unknown-fields: true
type: array
type: object
x-kubernetes-preserve-unknown-fields: true
nullable: true
type: array
type:
nullable: true
type: string
uri:
nullable: true
type: string
uris:
items:
type: string
nullable: true
type: array
type: object
type: array
scopes:
items:
description: |-
ScopeRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "displayName": { "type": "string" }, "iconUri": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "policies": { "type": "array", "items": { "$ref": "#/$defs/PolicyRepresentation" } }, "resources": { "type": "array", "items": { "$ref": "#/$defs/ResourceRepresentation" } } }, "additionalProperties": false } ``` </details>
properties:
displayName:
nullable: true
type: string
iconUri:
nullable: true
type: string
id:
nullable: true
type: string
name:
nullable: true
type: string
policies:
items:
description: |-
PolicyRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "config": { "type": "object", "additionalProperties": { "type": "string" } }, "decisionStrategy": { "$ref": "#/$defs/DecisionStrategy" }, "description": { "type": "string" }, "id": { "type": "string" }, "logic": { "$ref": "#/$defs/Logic" }, "name": { "type": "string" }, "owner": { "type": "string" }, "policies": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "resourceType": { "type": "string" }, "resources": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "resourcesData": { "type": "array", "items": { "$ref": "#/$defs/ResourceRepresentation" }, "uniqueItems": true }, "scopes": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "scopesData": { "type": "array", "items": { "$ref": "#/$defs/ScopeRepresentation" }, "uniqueItems": true }, "type": { "type": "string" } }, "additionalProperties": false } ``` </details>
properties:
config:
additionalProperties:
type: string
type: object
decisionStrategy:
description: |-
DecisionStrategy
<details><summary>JSON schema</summary>
```json { "type": "string", "enum": [ "AFFIRMATIVE", "UNANIMOUS", "CONSENSUS" ] } ``` </details>
enum:
- AFFIRMATIVE
- UNANIMOUS
- CONSENSUS
nullable: true
type: string
description:
nullable: true
type: string
id:
nullable: true
type: string
logic:
description: |-
Logic
<details><summary>JSON schema</summary>
```json { "type": "string", "enum": [ "POSITIVE", "NEGATIVE" ] } ``` </details>
enum:
- POSITIVE
- NEGATIVE
nullable: true
type: string
name:
nullable: true
type: string
owner:
nullable: true
type: string
policies:
items:
type: string
nullable: true
type: array
resourceType:
nullable: true
type: string
resources:
items:
type: string
nullable: true
type: array
resourcesData:
items:
description: |-
ResourceRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "_id": { "type": "string" }, "attributes": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } }, "displayName": { "type": "string" }, "icon_uri": { "type": "string" }, "name": { "type": "string" }, "owner": { "type": "object", "allOf": [ { "$ref": "#/$defs/ResourceOwnerRepresentation" } ] }, "ownerManagedAccess": { "type": "boolean" }, "scopes": { "type": "array", "items": { "$ref": "#/$defs/ScopeRepresentation" }, "uniqueItems": true }, "scopesUma": { "type": "array", "items": { "$ref": "#/$defs/ScopeRepresentation" }, "uniqueItems": true }, "type": { "type": "string" }, "uri": { "type": "string" }, "uris": { "type": "array", "items": { "type": "string" }, "uniqueItems": true } }, "additionalProperties": false } ``` </details>
properties:
_id:
nullable: true
type: string
attributes:
additionalProperties:
items:
type: string
type: array
type: object
displayName:
nullable: true
type: string
icon_uri:
nullable: true
type: string
name:
nullable: true
type: string
owner:
description: |-
ResourceOwnerRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "additionalProperties": false } ``` </details>
nullable: true
properties:
id:
nullable: true
type: string
name:
nullable: true
type: string
type: object
ownerManagedAccess:
nullable: true
type: boolean
type:
nullable: true
type: string
uri:
nullable: true
type: string
uris:
items:
type: string
nullable: true
type: array
type: object
x-kubernetes-preserve-unknown-fields: true
nullable: true
type: array
scopes:
items:
type: string
nullable: true
type: array
type:
nullable: true
type: string
type: object
x-kubernetes-preserve-unknown-fields: true
type: array
resources:
items:
description: |-
ResourceRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "_id": { "type": "string" }, "attributes": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } }, "displayName": { "type": "string" }, "icon_uri": { "type": "string" }, "name": { "type": "string" }, "owner": { "type": "object", "allOf": [ { "$ref": "#/$defs/ResourceOwnerRepresentation" } ] }, "ownerManagedAccess": { "type": "boolean" }, "scopes": { "type": "array", "items": { "$ref": "#/$defs/ScopeRepresentation" }, "uniqueItems": true }, "scopesUma": { "type": "array", "items": { "$ref": "#/$defs/ScopeRepresentation" }, "uniqueItems": true }, "type": { "type": "string" }, "uri": { "type": "string" }, "uris": { "type": "array", "items": { "type": "string" }, "uniqueItems": true } }, "additionalProperties": false } ``` </details>
properties:
_id:
nullable: true
type: string
attributes:
additionalProperties:
items:
type: string
type: array
type: object
displayName:
nullable: true
type: string
icon_uri:
nullable: true
type: string
name:
nullable: true
type: string
owner:
description: |-
ResourceOwnerRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "additionalProperties": false } ``` </details>
nullable: true
properties:
id:
nullable: true
type: string
name:
nullable: true
type: string
type: object
ownerManagedAccess:
nullable: true
type: boolean
type:
nullable: true
type: string
uri:
nullable: true
type: string
uris:
items:
type: string
nullable: true
type: array
type: object
x-kubernetes-preserve-unknown-fields: true
type: array
type: object
type: array
type: object
baseUrl:
description: Default URL to use when the auth server needs to redirect or link back to the client.
nullable: true
type: string
bearerOnly:
description: This is a special OIDC type. This client only allows bearer token requests and cannot participate in browser logins.
nullable: true
type: boolean
clientAuthenticatorType:
description: Client Authenticator used for authentication of this client against Keycloak server
enum:
- client-jwt
- client-secret
- client-secret-jwt
- client-x509
nullable: true
type: string
clientId:
description: The client identifier registered with the identity provider.
nullable: true
type: string
clientTemplate:
nullable: true
type: string
consentRequired:
description: If enabled, users have to consent to client access.
nullable: true
type: boolean
defaultClientScopes:
items:
type: string
type: array
defaultRoles:
items:
type: string
type: array
description:
description: Help text for the description of the new flow
nullable: true
type: string
directAccessGrantsEnabled:
description: This enables support for Direct Access Grants, which means that client has access to username/password of user and exchange it directly with Keycloak server for access token. In terms of OAuth2 specification, this enables support of 'Resource Owner Password Credentials Grant' for this client.
nullable: true
type: boolean
directGrantsOnly:
nullable: true
type: boolean
enabled:
description: Disabled clients cannot initiate a login or have obtained access tokens.
nullable: true
type: boolean
frontchannelLogout:
description: When true, logout requires a browser redirect to client. When false, server performs a background invocation for logout.
nullable: true
type: boolean
fullScopeAllowed:
description: Allows you to disable all restrictions.
nullable: true
type: boolean
id:
nullable: true
type: string
implicitFlowEnabled:
description: This enables support for OpenID Connect redirect based authentication without authorization code. In terms of OpenID Connect or OAuth2 specifications, this enables support of 'Implicit Flow' for this client.
nullable: true
type: boolean
name:
description: 'Specifies display name of the client. For example ''My Client''. Supports keys for localized values as well. For example: ${my_client}.'
nullable: true
type: string
nodeReRegistrationTimeout:
description: Interval to specify max time for registered clients cluster nodes to re-register. If cluster node will not send re-registration request to Keycloak within this time, it will be unregistered from Keycloak.
format: int32
nullable: true
type: integer
notBefore:
format: int32
nullable: true
type: integer
optionalClientScopes:
items:
type: string
type: array
origin:
nullable: true
type: string
protocol:
nullable: true
type: string
protocolMappers:
items:
description: |-
ProtocolMapperRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "config": { "type": "object", "additionalProperties": { "type": "string" } }, "consentRequired": { "type": "boolean" }, "consentText": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "protocol": { "type": "string", "enum": [ "openid-connect", "saml" ] }, "protocolMapper": { "type": "string" } }, "additionalProperties": false } ``` </details>
properties:
config:
additionalProperties:
type: string
type: object
consentRequired:
nullable: true
type: boolean
consentText:
nullable: true
type: string
id:
nullable: true
type: string
name:
nullable: true
type: string
protocol:
description: |-
ProtocolMapperRepresentationProtocol
<details><summary>JSON schema</summary>
```json { "type": "string", "enum": [ "openid-connect", "saml" ] } ``` </details>
enum:
- openid-connect
- saml
nullable: true
type: string
protocolMapper:
nullable: true
type: string
type: object
type: array
publicClient:
description: This defines the type of the OIDC client. When it's ON, the OIDC type is set to confidential access type. When it's OFF, it is set to public access type.
nullable: true
type: boolean
redirectUris:
description: Valid URI pattern a browser can redirect to after a successful login. Simple wildcards are allowed such as 'http://example.com/*'. Relative path can be specified too such as /my/relative/path/*. Relative paths are relative to the client root URL, or if none is specified the auth server root URL is used. For SAML, you must set valid URI patterns if you are relying on the consumer service URL embedded with the login request.
items:
type: string
type: array
registeredNodes:
additionalProperties:
format: int32
type: integer
type: object
registrationAccessToken:
description: The registration access token provides access for clients to the client registration service.
nullable: true
type: string
rootUrl:
description: Root URL appended to relative URLs
nullable: true
type: string
secret:
nullable: true
type: string
serviceAccountsEnabled:
description: Allows you to authenticate this client to Keycloak and retrieve access token dedicated to this client. In terms of OAuth2 specification, this enables support of 'Client Credentials Grant' for this client.
nullable: true
type: boolean
standardFlowEnabled:
description: This enables standard OpenID Connect redirect based authentication with authorization code. In terms of OpenID Connect or OAuth2 specifications, this enables support of 'Authorization Code Flow' for this client.
nullable: true
type: boolean
surrogateAuthRequired:
nullable: true
type: boolean
type:
nullable: true
type: string
useTemplateConfig:
nullable: true
type: boolean
useTemplateMappers:
nullable: true
type: boolean
useTemplateScope:
nullable: true
type: boolean
webOrigins:
description: Allowed CORS origins. To permit all origins of Valid Redirect URIs, add '+'. This does not include the '*' wildcard though. To permit all origins, explicitly add '*'.
items:
type: string
type: array
type: object
adminPermissionsEnabled:
nullable: true
type: boolean
adminTheme:
nullable: true
type: string
applicationScopeMappings:
additionalProperties:
items:
description: |-
ScopeMappingRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "client": { "type": "string" }, "clientScope": { "type": "string" }, "clientTemplate": { "type": "string" }, "roles": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "self": { "type": "string" } }, "additionalProperties": false } ``` </details>
properties:
client:
nullable: true
type: string
clientScope:
nullable: true
type: string
clientTemplate:
nullable: true
type: string
roles:
items:
type: string
nullable: true
type: array
self:
nullable: true
type: string
type: object
type: array
type: object
attributes:
description: |-
RealmRepresentationAttributes
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "adminEventsExpiration": { "title": "Expiration", "description": "Sets the expiration for events. Expired events are periodically deleted from the database.", "type": "string", "pattern": "^[0-9]*$" }, "cibaAuthRequestedUserHint": { "title": "Authentication Requested User Hint", "description": "The way of identifying the end-user for whom authentication is being requested. Currently only \"login_hint\" is supported.", "type": "string", "enum": [ "login_hint" ] }, "cibaBackchannelTokenDeliveryMode": { "title": "Backchannel Token Delivery Mode", "description": "Specifies how the CD (Consumption Device) gets the authentication result and related tokens. This mode will be used by default for the CIBA clients, which do not have other mode explicitly set.", "type": "string", "enum": [ "ping", "poll" ] }, "cibaExpiresIn": { "title": "Expires In", "description": "The expiration time of the \"auth_req_id\" in seconds since the authentication request was received.", "type": "string", "pattern": "^[0-9]*$" }, "cibaInterval": { "title": "Interval", "description": "The minimum amount of time in seconds that the CD (Consumption Device) must wait between polling requests to the token endpoint. If set to 0, the CD must use 5 as the default value according to the CIBA specification.", "type": "string", "pattern": "^[0-9]*$" }, "frontendUrl": { "title": "Frontend URL", "description": "Set the frontend URL for the realm. Use in combination with the default hostname provider to override the base URL for frontend requests for a specific realm.", "type": "string" } }, "additionalProperties": { "type": "string" } } ``` </details>
nullable: true
properties:
adminEventsExpiration:
description: Sets the expiration for events. Expired events are periodically deleted from the database.
nullable: true
type: string
cibaAuthRequestedUserHint:
description: The way of identifying the end-user for whom authentication is being requested. Currently only "login_hint" is supported.
enum:
- login_hint
nullable: true
type: string
cibaBackchannelTokenDeliveryMode:
description: Specifies how the CD (Consumption Device) gets the authentication result and related tokens. This mode will be used by default for the CIBA clients, which do not have other mode explicitly set.
enum:
- ping
- poll
nullable: true
type: string
cibaExpiresIn:
description: The expiration time of the "auth_req_id" in seconds since the authentication request was received.
nullable: true
type: string
cibaInterval:
description: The minimum amount of time in seconds that the CD (Consumption Device) must wait between polling requests to the token endpoint. If set to 0, the CD must use 5 as the default value according to the CIBA specification.
nullable: true
type: string
frontendUrl:
description: Set the frontend URL for the realm. Use in combination with the default hostname provider to override the base URL for frontend requests for a specific realm.
nullable: true
type: string
type: object
browserFlow:
nullable: true
type: string
browserSecurityHeaders:
description: |-
RealmRepresentationBrowserSecurityHeaders
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "contentSecurityPolicy": { "title": "Content-Security-Policy", "description": "Default value prevents pages from being included by non-origin iframes. <1>Learn more</1>", "type": "string" }, "contentSecurityPolicyReportOnly": { "title": "Content-Security-Policy-Report-Only", "description": "For testing Content Security Policies <1>Learn more</1>", "type": "string" }, "strictTransportSecurity": { "title": "HTTP Strict Transport Security (HSTS)", "description": "The Strict-Transport-Security HTTP header tells browsers to always use HTTPS. Once a browser sees this header, it will only visit the site over HTTPS for the time specified (1 year) at max-age, including the subdomains. <1>Learn more</1>", "type": "string" }, "xContentTypeOptions": { "title": "X-Content-Type-Options", "description": "The default value prevents Internet Explorer and Google Chrome from MIME-sniffing a response away from the declared content-type. <1>Learn more</1>", "type": "string" }, "xFrameOptions": { "title": "X-Frame-Options", "description": "Default value prevents pages from being included by non-origin iframes. <1>Learn more</1>", "type": "string" }, "xRobotsTag": { "title": "X-Robots-Tag", "description": "Prevent pages from appearing in search engines. <1>Learn more</1>", "type": "string" }, "xXSSProtection": { "title": "X-XSS-Protection", "description": "This header configures the Cross-site scripting (XSS) filter in your browser. Using the default behaviour, the browser will prevent rendering of the page when a XSS attack is detected. <1>Learn more</1>", "type": "string" } }, "additionalProperties": false } ``` </details>
nullable: true
properties:
contentSecurityPolicy:
description: Default value prevents pages from being included by non-origin iframes. <1>Learn more</1>
nullable: true
type: string
contentSecurityPolicyReportOnly:
description: For testing Content Security Policies <1>Learn more</1>
nullable: true
type: string
strictTransportSecurity:
description: The Strict-Transport-Security HTTP header tells browsers to always use HTTPS. Once a browser sees this header, it will only visit the site over HTTPS for the time specified (1 year) at max-age, including the subdomains. <1>Learn more</1>
nullable: true
type: string
xContentTypeOptions:
description: The default value prevents Internet Explorer and Google Chrome from MIME-sniffing a response away from the declared content-type. <1>Learn more</1>
nullable: true
type: string
xFrameOptions:
description: Default value prevents pages from being included by non-origin iframes. <1>Learn more</1>
nullable: true
type: string
xRobotsTag:
description: Prevent pages from appearing in search engines. <1>Learn more</1>
nullable: true
type: string
xXSSProtection:
description: This header configures the Cross-site scripting (XSS) filter in your browser. Using the default behaviour, the browser will prevent rendering of the page when a XSS attack is detected. <1>Learn more</1>
nullable: true
type: string
type: object
bruteForceProtected:
nullable: true
type: boolean
bruteForceStrategy:
description: Multiple means wait time will be increased only when number of failures are multiples of '{{failureFactor}}'. Linear means each new failure starting at '{{failureFactor}}' will increase wait time.
enum:
- LINEAR
- MULTIPLE
nullable: true
type: string
certificate:
nullable: true
type: string
clientAuthenticationFlow:
nullable: true
type: string
clientOfflineSessionIdleTimeout:
format: int32
nullable: true
type: integer
clientOfflineSessionMaxLifespan:
format: int32
nullable: true
type: integer
clientPolicies:
description: |-
ClientPoliciesRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "globalPolicies": { "type": "array", "items": { "$ref": "#/$defs/ClientPolicyRepresentation" } }, "policies": { "type": "array", "items": { "$ref": "#/$defs/ClientPolicyRepresentation" } } }, "additionalProperties": false } ``` </details>
nullable: true
properties:
globalPolicies:
items:
description: |-
ClientPolicyRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "conditions": { "type": "array", "items": { "$ref": "#/$defs/ClientPolicyConditionRepresentation" } }, "description": { "type": "string" }, "enabled": { "type": "boolean" }, "name": { "type": "string" }, "profiles": { "type": "array", "items": { "type": "string" } } }, "additionalProperties": false } ``` </details>
properties:
conditions:
items:
description: |-
ClientPolicyConditionRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "condition": { "type": "string" }, "configuration": { "type": "object" } }, "additionalProperties": false } ``` </details>
properties:
condition:
nullable: true
type: string
configuration:
additionalProperties: true
type: object
type: object
type: array
description:
nullable: true
type: string
enabled:
nullable: true
type: boolean
name:
nullable: true
type: string
profiles:
items:
type: string
type: array
type: object
type: array
policies:
items:
description: |-
ClientPolicyRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "conditions": { "type": "array", "items": { "$ref": "#/$defs/ClientPolicyConditionRepresentation" } }, "description": { "type": "string" }, "enabled": { "type": "boolean" }, "name": { "type": "string" }, "profiles": { "type": "array", "items": { "type": "string" } } }, "additionalProperties": false } ``` </details>
properties:
conditions:
items:
description: |-
ClientPolicyConditionRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "condition": { "type": "string" }, "configuration": { "type": "object" } }, "additionalProperties": false } ``` </details>
properties:
condition:
nullable: true
type: string
configuration:
additionalProperties: true
type: object
type: object
type: array
description:
nullable: true
type: string
enabled:
nullable: true
type: boolean
name:
nullable: true
type: string
profiles:
items:
type: string
type: array
type: object
type: array
type: object
clientProfiles:
description: |-
ClientProfilesRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "globalProfiles": { "type": "array", "items": { "$ref": "#/$defs/ClientProfileRepresentation" } }, "profiles": { "type": "array", "items": { "$ref": "#/$defs/ClientProfileRepresentation" } } }, "additionalProperties": false } ``` </details>
nullable: true
properties:
globalProfiles:
items:
description: |-
ClientProfileRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "description": { "type": "string" }, "executors": { "type": "array", "items": { "$ref": "#/$defs/ClientPolicyExecutorRepresentation" } }, "name": { "type": "string" } }, "additionalProperties": false } ``` </details>
properties:
description:
nullable: true
type: string
executors:
items:
description: |-
ClientPolicyExecutorRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "configuration": { "type": "object" }, "executor": { "type": "string" } }, "additionalProperties": false } ``` </details>
properties:
configuration:
additionalProperties: true
type: object
executor:
nullable: true
type: string
type: object
type: array
name:
nullable: true
type: string
type: object
type: array
profiles:
items:
description: |-
ClientProfileRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "description": { "type": "string" }, "executors": { "type": "array", "items": { "$ref": "#/$defs/ClientPolicyExecutorRepresentation" } }, "name": { "type": "string" } }, "additionalProperties": false } ``` </details>
properties:
description:
nullable: true
type: string
executors:
items:
description: |-
ClientPolicyExecutorRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "configuration": { "type": "object" }, "executor": { "type": "string" } }, "additionalProperties": false } ``` </details>
properties:
configuration:
additionalProperties: true
type: object
executor:
nullable: true
type: string
type: object
type: array
name:
nullable: true
type: string
type: object
type: array
type: object
clientScopeMappings:
additionalProperties:
items:
description: |-
ScopeMappingRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "client": { "type": "string" }, "clientScope": { "type": "string" }, "clientTemplate": { "type": "string" }, "roles": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "self": { "type": "string" } }, "additionalProperties": false } ``` </details>
properties:
client:
nullable: true
type: string
clientScope:
nullable: true
type: string
clientTemplate:
nullable: true
type: string
roles:
items:
type: string
nullable: true
type: array
self:
nullable: true
type: string
type: object
type: array
type: object
clientSessionIdleTimeout:
description: Time a client session is allowed to be idle before it expires. Tokens are invalidated when a client session is expired. The option does not affect the global user SSO session. If not set, it uses the standard SSO Session Idle value.
format: int32
nullable: true
type: integer
clientSessionMaxLifespan:
description: Max time before a client session is expired. Tokens are invalidated when a session is expired. The option does not affect the global user SSO session. If not set, it uses the standard SSO Session Max value.
format: int32
nullable: true
type: integer
clientTemplates:
items:
description: |-
ClientTemplateRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "attributes": { "type": "object", "additionalProperties": { "type": "string" } }, "bearerOnly": { "type": "boolean" }, "consentRequired": { "type": "boolean" }, "description": { "type": "string" }, "directAccessGrantsEnabled": { "type": "boolean" }, "frontchannelLogout": { "type": "boolean" }, "fullScopeAllowed": { "type": "boolean" }, "id": { "type": "string" }, "implicitFlowEnabled": { "type": "boolean" }, "name": { "type": "string" }, "protocol": { "type": "string" }, "protocolMappers": { "type": "array", "items": { "$ref": "#/$defs/ProtocolMapperRepresentation" } }, "publicClient": { "type": "boolean" }, "serviceAccountsEnabled": { "type": "boolean" }, "standardFlowEnabled": { "type": "boolean" } }, "additionalProperties": false } ``` </details>
properties:
attributes:
additionalProperties:
type: string
type: object
bearerOnly:
nullable: true
type: boolean
consentRequired:
nullable: true
type: boolean
description:
nullable: true
type: string
directAccessGrantsEnabled:
nullable: true
type: boolean
frontchannelLogout:
nullable: true
type: boolean
fullScopeAllowed:
nullable: true
type: boolean
id:
nullable: true
type: string
implicitFlowEnabled:
nullable: true
type: boolean
name:
nullable: true
type: string
protocol:
nullable: true
type: string
protocolMappers:
items:
description: |-
ProtocolMapperRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "config": { "type": "object", "additionalProperties": { "type": "string" } }, "consentRequired": { "type": "boolean" }, "consentText": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "protocol": { "type": "string", "enum": [ "openid-connect", "saml" ] }, "protocolMapper": { "type": "string" } }, "additionalProperties": false } ``` </details>
properties:
config:
additionalProperties:
type: string
type: object
consentRequired:
nullable: true
type: boolean
consentText:
nullable: true
type: string
id:
nullable: true
type: string
name:
nullable: true
type: string
protocol:
description: |-
ProtocolMapperRepresentationProtocol
<details><summary>JSON schema</summary>
```json { "type": "string", "enum": [ "openid-connect", "saml" ] } ``` </details>
enum:
- openid-connect
- saml
nullable: true
type: string
protocolMapper:
nullable: true
type: string
type: object
type: array
publicClient:
nullable: true
type: boolean
serviceAccountsEnabled:
nullable: true
type: boolean
standardFlowEnabled:
nullable: true
type: boolean
type: object
type: array
codeSecret:
nullable: true
type: string
defaultDefaultClientScopes:
items:
type: string
type: array
defaultGroups:
items:
type: string
type: array
defaultLocale:
nullable: true
type: string
defaultOptionalClientScopes:
items:
type: string
type: array
defaultRole:
description: |-
RoleRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "attributes": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } }, "clientRole": { "type": "boolean" }, "composite": { "type": "boolean" }, "composites": { "$ref": "#/$defs/Composites" }, "containerId": { "type": "string" }, "description": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "scopeParamRequired": { "type": "boolean" } }, "additionalProperties": false } ``` </details>
nullable: true
properties:
attributes:
additionalProperties:
items:
type: string
type: array
type: object
clientRole:
nullable: true
type: boolean
composite:
nullable: true
type: boolean
composites:
description: |-
Composites
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "application": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } }, "client": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } }, "realm": { "type": "array", "items": { "type": "string" }, "uniqueItems": true } }, "additionalProperties": false } ``` </details>
nullable: true
properties:
application:
additionalProperties:
items:
type: string
type: array
type: object
client:
additionalProperties:
items:
type: string
type: array
type: object
realm:
items:
type: string
nullable: true
type: array
type: object
containerId:
nullable: true
type: string
description:
nullable: true
type: string
id:
nullable: true
type: string
name:
nullable: true
type: string
scopeParamRequired:
nullable: true
type: boolean
type: object
defaultRoles:
items:
type: string
type: array
defaultSignatureAlgorithm:
description: Default algorithm used to sign tokens for the realm
enum:
- EdDSA
- ES256
- ES384
- ES512
- HS256
- HS384
- HS512
- PS256
- PS384
- PS512
- RS256
- RS384
- RS512
nullable: true
type: string
directGrantFlow:
nullable: true
type: string
displayName:
nullable: true
type: string
displayNameHtml:
nullable: true
type: string
dockerAuthenticationFlow:
nullable: true
type: string
duplicateEmailsAllowed:
description: Allow multiple users to have the same email address. Changing this setting will also clear the user's cache. It is recommended to manually update email constraints of existing users in the database after switching off support for duplicate email addresses.
nullable: true
type: boolean
editUsernameAllowed:
description: If enabled, the username field is editable, readonly otherwise.
nullable: true
type: boolean
emailTheme:
description: Select a theme for emails that are sent by the server.
nullable: true
type: string
enabled:
nullable: true
type: boolean
enabledEventTypes:
items:
type: string
type: array
eventsEnabled:
description: If enabled, user events are saved to the database, which makes events available to the admin and account management UIs.
nullable: true
type: boolean
eventsExpiration:
description: Sets the expiration for events. Expired events are periodically deleted from the database.
format: int64
nullable: true
type: integer
eventsListeners:
description: Configure what listeners receive events for the realm.
items:
type: string
type: array
failureFactor:
description: Max login failures
format: int32
nullable: true
type: integer
firstBrokerLoginFlow:
nullable: true
type: string
id:
nullable: true
type: string
identityProviderMappers:
items:
description: |-
IdentityProviderMapperRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "config": { "type": "object", "properties": { "attribute.friendly.name": { "title": "Friendly name", "description": "Friendly name of attribute to search for in assertion. You can leave this blank and specify a name instead.", "type": "string" }, "attribute.name.format": { "type": "string", "enum": [ "ATTRIBUTE_FORMAT_BASIC", "ATTRIBUTE_FORMAT_URI", "ATTRIBUTE_FORMAT_UNSPECIFIED" ] }, "syncMode": { "title": "Sync mode override", "description": "Overrides the default sync mode of the IDP for this mapper. Values are: 'legacy' to keep the behaviour before this option was introduced, 'import' to only import the user once during first login of the user with this identity provider, 'force' to always update the user during every login with this identity provider and 'inherit' to use the sync mode defined in the identity provider for this mapper.", "type": "string", "enum": [ "INHERIT", "IMPORT", "LEGACY", "FORCE" ] }, "user.attribute": { "title": "User Attribute Name", "description": "Name of user attribute you want to hardcode", "type": "string" } }, "additionalProperties": { "type": "string" } }, "id": { "type": "string" }, "identityProviderAlias": { "type": "string" }, "identityProviderMapper": { "type": "string" }, "name": { "title": "Name", "description": "Name of the mapper.", "type": "string" } }, "additionalProperties": false } ``` </details>
properties:
config:
description: |-
IdentityProviderMapperRepresentationConfig
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "attribute.friendly.name": { "title": "Friendly name", "description": "Friendly name of attribute to search for in assertion. You can leave this blank and specify a name instead.", "type": "string" }, "attribute.name.format": { "type": "string", "enum": [ "ATTRIBUTE_FORMAT_BASIC", "ATTRIBUTE_FORMAT_URI", "ATTRIBUTE_FORMAT_UNSPECIFIED" ] }, "syncMode": { "title": "Sync mode override", "description": "Overrides the default sync mode of the IDP for this mapper. Values are: 'legacy' to keep the behaviour before this option was introduced, 'import' to only import the user once during first login of the user with this identity provider, 'force' to always update the user during every login with this identity provider and 'inherit' to use the sync mode defined in the identity provider for this mapper.", "type": "string", "enum": [ "INHERIT", "IMPORT", "LEGACY", "FORCE" ] }, "user.attribute": { "title": "User Attribute Name", "description": "Name of user attribute you want to hardcode", "type": "string" } }, "additionalProperties": { "type": "string" } } ``` </details>
nullable: true
properties:
attribute.friendly.name:
description: Friendly name of attribute to search for in assertion. You can leave this blank and specify a name instead.
nullable: true
type: string
attribute.name.format:
description: |-
IdentityProviderMapperRepresentationConfigAttributeNameFormat
<details><summary>JSON schema</summary>
```json { "type": "string", "enum": [ "ATTRIBUTE_FORMAT_BASIC", "ATTRIBUTE_FORMAT_URI", "ATTRIBUTE_FORMAT_UNSPECIFIED" ] } ``` </details>
enum:
- ATTRIBUTE_FORMAT_BASIC
- ATTRIBUTE_FORMAT_URI
- ATTRIBUTE_FORMAT_UNSPECIFIED
nullable: true
type: string
syncMode:
description: 'Overrides the default sync mode of the IDP for this mapper. Values are: ''legacy'' to keep the behaviour before this option was introduced, ''import'' to only import the user once during first login of the user with this identity provider, ''force'' to always update the user during every login with this identity provider and ''inherit'' to use the sync mode defined in the identity provider for this mapper.'
enum:
- INHERIT
- IMPORT
- LEGACY
- FORCE
nullable: true
type: string
user.attribute:
description: Name of user attribute you want to hardcode
nullable: true
type: string
type: object
id:
nullable: true
type: string
identityProviderAlias:
nullable: true
type: string
identityProviderMapper:
nullable: true
type: string
name:
description: Name of the mapper.
nullable: true
type: string
type: object
type: array
identityProviders:
items:
description: |-
IdentityProviderRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "addReadTokenRoleOnCreate": { "title": "Stored tokens readable", "description": "Enable/disable if new users can read any stored tokens. This assigns the broker.read-token role.", "type": "boolean" }, "alias": { "title": "Alias", "description": "The alias uniquely identifies an identity provider and it is also used to build the redirect uri.", "type": "string" }, "authenticateByDefault": { "type": "boolean" }, "config": { "type": "object", "properties": { "allowCreate": { "title": "Allow create", "description": "Allow the external identity provider to create a new identifier to represent the principal.", "type": "string", "enum": [ "true", "false", "" ] }, "allowedClockSkew": { "title": "Allowed clock skew", "description": "Clock skew in seconds that is tolerated when validating identity provider tokens. Default value is zero.", "type": "string", "pattern": "^[0-9]*$" }, "attributeConsumingServiceIndex": { "title": "Attribute Consuming Service Index", "description": "Index of the Attribute Consuming Service profile to request during authentication.", "type": "string", "pattern": "^[0-9]*$" }, "authnContextClassRefs": { "title": "AuthnContext ClassRefs", "description": "Ordered list of requested AuthnContext ClassRefs.", "type": "string" }, "authnContextComparisonType": { "title": "Comparison", "description": "Specifies the comparison method used to evaluate the requested context classes or statements. The default is \"Exact\".", "type": "string", "enum": [ "exact", "minimum", "maximum", "better" ] }, "authnContextDeclRefs": { "title": "AuthnContext DeclRefs", "description": "Ordered list of requested AuthnContext DeclRefs.", "type": "string" }, "backchannelSupported": { "title": "Backchannel logout", "description": "Does the external IDP support backchannel logout?", "type": "string", "enum": [ "true", "false", "" ] }, "encryptionAlgorithm": { "title": "Encryption Algorithm", "description": "Encryption algorithm, which is used by SAML IDP for encryption of SAML documents, assertions or IDs. The corresponding decryption key for decrypt SAML document parts will be chosen based on this configured algorithm and should be available in realm keys for the encryption (ENC) usage. If algorithm is not configured, then any supported algorithm is allowed and decryption key will be chosen based on the algorithm configured in SAML document itself.", "type": "string" }, "entityId": { "title": "Service provider entity ID", "description": "The Entity ID that will be used to uniquely identify this SAML Service Provider.", "type": "string" }, "forceAuthn": { "title": "Force authentication", "description": "Indicates whether the identity provider must authenticate the presenter directly rather than rely on a previous security context.", "type": "string", "enum": [ "true", "false", "" ] }, "hideOnLoginPage": { "title": "Hide on login page", "description": "If hidden, login with this provider is possible only if requested explicitly, for example using the 'kc_idp_hint' parameter.", "type": "string", "enum": [ "true", "false", "" ] }, "idpEntityId": { "title": "Identity provider entity ID", "description": "The Entity ID used to validate the Issuer for received SAML assertions. If empty, no Issuer validation is performed.", "type": "string" }, "loginHint": { "title": "Pass subject", "description": "During login phase, forward an optional login_hint query parameter to SAML AuthnRequest's Subject.", "type": "string", "enum": [ "true", "false", "" ] }, "nameIDPolicyFormat": { "title": "NameID policy format", "description": "Specifies the URI reference corresponding to a name identifier format.", "type": "string" }, "postBindingAuthnRequest": { "title": "HTTP-POST binding for AuthnRequest", "description": "Indicates whether the AuthnRequest must be sent using HTTP-POST binding. If false, HTTP-REDIRECT binding will be used.", "type": "string", "enum": [ "true", "false", "" ] }, "postBindingLogout": { "title": "HTTP-POST binding logout", "description": "Indicates whether to respond to requests using HTTP-POST binding. If false, HTTP-REDIRECT binding will be used.", "type": "string", "enum": [ "true", "false", "" ] }, "postBindingResponse": { "title": "HTTP-POST binding response", "description": "Indicates whether to respond to requests using HTTP-POST binding. If false, HTTP-REDIRECT binding will be used.", "type": "string", "enum": [ "true", "false", "" ] }, "principalAttribute": { "title": "Principal attribute", "description": "Name or Friendly Name of the attribute used to identify external users.", "type": "string" }, "principalType": { "title": "Principal type", "description": "Way to identify and track external users from the assertion. Default is using Subject NameID, alternatively you can set up identifying attribute.", "type": "string", "enum": [ "SUBJECT", "ATTRIBUTE", "FRIENDLY_ATTRIBUTE" ] }, "signSpMetadata": { "title": "Sign service provider metadata", "description": "Enable/disable signature of the provider SAML metadata.", "type": "string", "enum": [ "true", "false", "" ] }, "signatureAlgorithm": { "title": "Signature algorithm", "description": "The signature algorithm to use to sign documents. Note that 'SHA1' based algorithms are deprecated and can be removed in the future. It is recommended to stick to some more secure algorithm instead of '*_SHA1'.", "type": "string" }, "signingCertificate": { "title": "Validating X509 certificates", "description": "The public certificates Keycloak uses to validate the signatures of SAML requests and responses from the external IDP when Use metadata descriptor URL is OFF. Multiple certificates can be entered separated by comma (,). The certificates can be re-imported from the Metadata descriptor URL clicking the Import Keys action in the identity provider page. The action downloads the current certificates in the metadata endpoint and assigns them to the config in this same option. You need to click Save to definitely store the re-imported certificates.", "type": "string" }, "singleSignOnServiceUrl": { "title": "Single Sign-On service URL", "description": "The Url that must be used to send authentication requests (SAML AuthnRequest).", "type": "string" }, "syncMode": { "title": "Sync mode", "description": "Default sync mode for all mappers. The sync mode determines when user data will be synced using the mappers. Possible values are: 'legacy' to keep the behaviour before this option was introduced, 'import' to only import the user once during first login of the user with this identity provider, 'force' to always update the user during every login with this identity provider.", "type": "string", "enum": [ "IMPORT", "LEGACY", "FORCE" ] }, "validateSignature": { "title": "Validate Signatures", "description": "Enable/disable signature validation of external IDP signatures.", "type": "string", "enum": [ "true", "false", "" ] }, "wantAssertionsEncrypted": { "title": "Want Assertions encrypted", "description": "Indicates whether this service provider expects an encrypted Assertion.", "type": "string", "enum": [ "true", "false", "" ] }, "wantAssertionsSigned": { "title": "Want Assertions signed", "description": "Indicates whether this service provider expects a signed Assertion.", "type": "string", "enum": [ "true", "false", "" ] }, "wantAuthnRequestsSigned": { "title": "Want AuthnRequests signed", "description": "Indicates whether the identity provider expects a signed AuthnRequest.", "type": "string", "enum": [ "true", "false", "" ] }, "xmlSigKeyInfoKeyNameTransformer": { "title": "SAML signature key name", "description": "Signed SAML documents contain identification of signing key in KeyName element. For Keycloak / RH-SSO counter-party, use KEY_ID, for MS AD FS use CERT_SUBJECT, for others check and use NONE if no other option works.", "type": "string", "enum": [ "NONE", "KEY_ID", "CERT_SUBJECT" ] } }, "additionalProperties": { "type": "string" } }, "displayName": { "title": "Display name", "description": "Friendly name for Identity Providers.", "type": "string" }, "enabled": { "title": "Enabled", "type": "boolean" }, "firstBrokerLoginFlowAlias": { "title": "First login flow override", "description": "Alias of authentication flow, which is triggered after first login with this identity provider. Term 'First Login' means that no Keycloak account is currently linked to the authenticated identity provider account.", "type": "string" }, "hideOnLogin": { "title": "Hide on login page", "description": "If hidden, login with this provider is possible only if requested explicitly, for example using the 'kc_idp_hint' parameter.", "type": "boolean" }, "internalId": { "type": "string" }, "linkOnly": { "title": "Account linking only", "description": "If true, users cannot log in through this provider. They can only link to this provider. This is useful if you don't want to allow login from the provider, but want to integrate with a provider.", "type": "boolean" }, "organizationId": { "type": "string" }, "postBrokerLoginFlowAlias": { "title": "Post login flow", "description": "Alias of authentication flow, which is triggered after each login with this identity provider. Useful if you want additional verification of each user authenticated with this identity provider (for example OTP). Leave this to \"None\" if you need no any additional authenticators to be triggered after login with this identity provider. Also note that authenticator implementations must assume that user is already set in ClientSession as identity provider already set it.", "type": "string" }, "providerId": { "type": "string" }, "storeToken": { "title": "Store tokens", "description": "Enable/disable if tokens must be stored after authenticating users.", "type": "boolean" }, "trustEmail": { "title": "Trust Email", "description": "If enabled, email provided by this provider is not verified even if verification is enabled for the realm.", "type": "boolean" }, "updateProfileFirstLogin": { "type": "boolean" }, "updateProfileFirstLoginMode": { "type": "string" } }, "additionalProperties": false } ``` </details>
properties:
addReadTokenRoleOnCreate:
description: Enable/disable if new users can read any stored tokens. This assigns the broker.read-token role.
nullable: true
type: boolean
alias:
description: The alias uniquely identifies an identity provider and it is also used to build the redirect uri.
nullable: true
type: string
authenticateByDefault:
nullable: true
type: boolean
config:
description: |-
IdentityProviderRepresentationConfig
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "allowCreate": { "title": "Allow create", "description": "Allow the external identity provider to create a new identifier to represent the principal.", "type": "string", "enum": [ "true", "false", "" ] }, "allowedClockSkew": { "title": "Allowed clock skew", "description": "Clock skew in seconds that is tolerated when validating identity provider tokens. Default value is zero.", "type": "string", "pattern": "^[0-9]*$" }, "attributeConsumingServiceIndex": { "title": "Attribute Consuming Service Index", "description": "Index of the Attribute Consuming Service profile to request during authentication.", "type": "string", "pattern": "^[0-9]*$" }, "authnContextClassRefs": { "title": "AuthnContext ClassRefs", "description": "Ordered list of requested AuthnContext ClassRefs.", "type": "string" }, "authnContextComparisonType": { "title": "Comparison", "description": "Specifies the comparison method used to evaluate the requested context classes or statements. The default is \"Exact\".", "type": "string", "enum": [ "exact", "minimum", "maximum", "better" ] }, "authnContextDeclRefs": { "title": "AuthnContext DeclRefs", "description": "Ordered list of requested AuthnContext DeclRefs.", "type": "string" }, "backchannelSupported": { "title": "Backchannel logout", "description": "Does the external IDP support backchannel logout?", "type": "string", "enum": [ "true", "false", "" ] }, "encryptionAlgorithm": { "title": "Encryption Algorithm", "description": "Encryption algorithm, which is used by SAML IDP for encryption of SAML documents, assertions or IDs. The corresponding decryption key for decrypt SAML document parts will be chosen based on this configured algorithm and should be available in realm keys for the encryption (ENC) usage. If algorithm is not configured, then any supported algorithm is allowed and decryption key will be chosen based on the algorithm configured in SAML document itself.", "type": "string" }, "entityId": { "title": "Service provider entity ID", "description": "The Entity ID that will be used to uniquely identify this SAML Service Provider.", "type": "string" }, "forceAuthn": { "title": "Force authentication", "description": "Indicates whether the identity provider must authenticate the presenter directly rather than rely on a previous security context.", "type": "string", "enum": [ "true", "false", "" ] }, "hideOnLoginPage": { "title": "Hide on login page", "description": "If hidden, login with this provider is possible only if requested explicitly, for example using the 'kc_idp_hint' parameter.", "type": "string", "enum": [ "true", "false", "" ] }, "idpEntityId": { "title": "Identity provider entity ID", "description": "The Entity ID used to validate the Issuer for received SAML assertions. If empty, no Issuer validation is performed.", "type": "string" }, "loginHint": { "title": "Pass subject", "description": "During login phase, forward an optional login_hint query parameter to SAML AuthnRequest's Subject.", "type": "string", "enum": [ "true", "false", "" ] }, "nameIDPolicyFormat": { "title": "NameID policy format", "description": "Specifies the URI reference corresponding to a name identifier format.", "type": "string" }, "postBindingAuthnRequest": { "title": "HTTP-POST binding for AuthnRequest", "description": "Indicates whether the AuthnRequest must be sent using HTTP-POST binding. If false, HTTP-REDIRECT binding will be used.", "type": "string", "enum": [ "true", "false", "" ] }, "postBindingLogout": { "title": "HTTP-POST binding logout", "description": "Indicates whether to respond to requests using HTTP-POST binding. If false, HTTP-REDIRECT binding will be used.", "type": "string", "enum": [ "true", "false", "" ] }, "postBindingResponse": { "title": "HTTP-POST binding response", "description": "Indicates whether to respond to requests using HTTP-POST binding. If false, HTTP-REDIRECT binding will be used.", "type": "string", "enum": [ "true", "false", "" ] }, "principalAttribute": { "title": "Principal attribute", "description": "Name or Friendly Name of the attribute used to identify external users.", "type": "string" }, "principalType": { "title": "Principal type", "description": "Way to identify and track external users from the assertion. Default is using Subject NameID, alternatively you can set up identifying attribute.", "type": "string", "enum": [ "SUBJECT", "ATTRIBUTE", "FRIENDLY_ATTRIBUTE" ] }, "signSpMetadata": { "title": "Sign service provider metadata", "description": "Enable/disable signature of the provider SAML metadata.", "type": "string", "enum": [ "true", "false", "" ] }, "signatureAlgorithm": { "title": "Signature algorithm", "description": "The signature algorithm to use to sign documents. Note that 'SHA1' based algorithms are deprecated and can be removed in the future. It is recommended to stick to some more secure algorithm instead of '*_SHA1'.", "type": "string" }, "signingCertificate": { "title": "Validating X509 certificates", "description": "The public certificates Keycloak uses to validate the signatures of SAML requests and responses from the external IDP when Use metadata descriptor URL is OFF. Multiple certificates can be entered separated by comma (,). The certificates can be re-imported from the Metadata descriptor URL clicking the Import Keys action in the identity provider page. The action downloads the current certificates in the metadata endpoint and assigns them to the config in this same option. You need to click Save to definitely store the re-imported certificates.", "type": "string" }, "singleSignOnServiceUrl": { "title": "Single Sign-On service URL", "description": "The Url that must be used to send authentication requests (SAML AuthnRequest).", "type": "string" }, "syncMode": { "title": "Sync mode", "description": "Default sync mode for all mappers. The sync mode determines when user data will be synced using the mappers. Possible values are: 'legacy' to keep the behaviour before this option was introduced, 'import' to only import the user once during first login of the user with this identity provider, 'force' to always update the user during every login with this identity provider.", "type": "string", "enum": [ "IMPORT", "LEGACY", "FORCE" ] }, "validateSignature": { "title": "Validate Signatures", "description": "Enable/disable signature validation of external IDP signatures.", "type": "string", "enum": [ "true", "false", "" ] }, "wantAssertionsEncrypted": { "title": "Want Assertions encrypted", "description": "Indicates whether this service provider expects an encrypted Assertion.", "type": "string", "enum": [ "true", "false", "" ] }, "wantAssertionsSigned": { "title": "Want Assertions signed", "description": "Indicates whether this service provider expects a signed Assertion.", "type": "string", "enum": [ "true", "false", "" ] }, "wantAuthnRequestsSigned": { "title": "Want AuthnRequests signed", "description": "Indicates whether the identity provider expects a signed AuthnRequest.", "type": "string", "enum": [ "true", "false", "" ] }, "xmlSigKeyInfoKeyNameTransformer": { "title": "SAML signature key name", "description": "Signed SAML documents contain identification of signing key in KeyName element. For Keycloak / RH-SSO counter-party, use KEY_ID, for MS AD FS use CERT_SUBJECT, for others check and use NONE if no other option works.", "type": "string", "enum": [ "NONE", "KEY_ID", "CERT_SUBJECT" ] } }, "additionalProperties": { "type": "string" } } ``` </details>
nullable: true
properties:
allowCreate:
description: Allow the external identity provider to create a new identifier to represent the principal.
enum:
- 'true'
- 'false'
- ''
nullable: true
type: string
allowedClockSkew:
description: Clock skew in seconds that is tolerated when validating identity provider tokens. Default value is zero.
nullable: true
type: string
attributeConsumingServiceIndex:
description: Index of the Attribute Consuming Service profile to request during authentication.
nullable: true
type: string
authnContextClassRefs:
description: Ordered list of requested AuthnContext ClassRefs.
nullable: true
type: string
authnContextComparisonType:
description: Specifies the comparison method used to evaluate the requested context classes or statements. The default is "Exact".
enum:
- exact
- minimum
- maximum
- better
nullable: true
type: string
authnContextDeclRefs:
description: Ordered list of requested AuthnContext DeclRefs.
nullable: true
type: string
backchannelSupported:
description: Does the external IDP support backchannel logout?
enum:
- 'true'
- 'false'
- ''
nullable: true
type: string
encryptionAlgorithm:
description: Encryption algorithm, which is used by SAML IDP for encryption of SAML documents, assertions or IDs. The corresponding decryption key for decrypt SAML document parts will be chosen based on this configured algorithm and should be available in realm keys for the encryption (ENC) usage. If algorithm is not configured, then any supported algorithm is allowed and decryption key will be chosen based on the algorithm configured in SAML document itself.
nullable: true
type: string
entityId:
description: The Entity ID that will be used to uniquely identify this SAML Service Provider.
nullable: true
type: string
forceAuthn:
description: Indicates whether the identity provider must authenticate the presenter directly rather than rely on a previous security context.
enum:
- 'true'
- 'false'
- ''
nullable: true
type: string
hideOnLoginPage:
description: If hidden, login with this provider is possible only if requested explicitly, for example using the 'kc_idp_hint' parameter.
enum:
- 'true'
- 'false'
- ''
nullable: true
type: string
idpEntityId:
description: The Entity ID used to validate the Issuer for received SAML assertions. If empty, no Issuer validation is performed.
nullable: true
type: string
loginHint:
description: During login phase, forward an optional login_hint query parameter to SAML AuthnRequest's Subject.
enum:
- 'true'
- 'false'
- ''
nullable: true
type: string
nameIDPolicyFormat:
description: Specifies the URI reference corresponding to a name identifier format.
nullable: true
type: string
postBindingAuthnRequest:
description: Indicates whether the AuthnRequest must be sent using HTTP-POST binding. If false, HTTP-REDIRECT binding will be used.
enum:
- 'true'
- 'false'
- ''
nullable: true
type: string
postBindingLogout:
description: Indicates whether to respond to requests using HTTP-POST binding. If false, HTTP-REDIRECT binding will be used.
enum:
- 'true'
- 'false'
- ''
nullable: true
type: string
postBindingResponse:
description: Indicates whether to respond to requests using HTTP-POST binding. If false, HTTP-REDIRECT binding will be used.
enum:
- 'true'
- 'false'
- ''
nullable: true
type: string
principalAttribute:
description: Name or Friendly Name of the attribute used to identify external users.
nullable: true
type: string
principalType:
description: Way to identify and track external users from the assertion. Default is using Subject NameID, alternatively you can set up identifying attribute.
enum:
- SUBJECT
- ATTRIBUTE
- FRIENDLY_ATTRIBUTE
nullable: true
type: string
signSpMetadata:
description: Enable/disable signature of the provider SAML metadata.
enum:
- 'true'
- 'false'
- ''
nullable: true
type: string
signatureAlgorithm:
description: The signature algorithm to use to sign documents. Note that 'SHA1' based algorithms are deprecated and can be removed in the future. It is recommended to stick to some more secure algorithm instead of '*_SHA1'.
nullable: true
type: string
signingCertificate:
description: The public certificates Keycloak uses to validate the signatures of SAML requests and responses from the external IDP when Use metadata descriptor URL is OFF. Multiple certificates can be entered separated by comma (,). The certificates can be re-imported from the Metadata descriptor URL clicking the Import Keys action in the identity provider page. The action downloads the current certificates in the metadata endpoint and assigns them to the config in this same option. You need to click Save to definitely store the re-imported certificates.
nullable: true
type: string
singleSignOnServiceUrl:
description: The Url that must be used to send authentication requests (SAML AuthnRequest).
nullable: true
type: string
syncMode:
description: 'Default sync mode for all mappers. The sync mode determines when user data will be synced using the mappers. Possible values are: ''legacy'' to keep the behaviour before this option was introduced, ''import'' to only import the user once during first login of the user with this identity provider, ''force'' to always update the user during every login with this identity provider.'
enum:
- IMPORT
- LEGACY
- FORCE
nullable: true
type: string
validateSignature:
description: Enable/disable signature validation of external IDP signatures.
enum:
- 'true'
- 'false'
- ''
nullable: true
type: string
wantAssertionsEncrypted:
description: Indicates whether this service provider expects an encrypted Assertion.
enum:
- 'true'
- 'false'
- ''
nullable: true
type: string
wantAssertionsSigned:
description: Indicates whether this service provider expects a signed Assertion.
enum:
- 'true'
- 'false'
- ''
nullable: true
type: string
wantAuthnRequestsSigned:
description: Indicates whether the identity provider expects a signed AuthnRequest.
enum:
- 'true'
- 'false'
- ''
nullable: true
type: string
xmlSigKeyInfoKeyNameTransformer:
description: Signed SAML documents contain identification of signing key in KeyName element. For Keycloak / RH-SSO counter-party, use KEY_ID, for MS AD FS use CERT_SUBJECT, for others check and use NONE if no other option works.
enum:
- NONE
- KEY_ID
- CERT_SUBJECT
nullable: true
type: string
type: object
displayName:
description: Friendly name for Identity Providers.
nullable: true
type: string
enabled:
nullable: true
type: boolean
firstBrokerLoginFlowAlias:
description: Alias of authentication flow, which is triggered after first login with this identity provider. Term 'First Login' means that no Keycloak account is currently linked to the authenticated identity provider account.
nullable: true
type: string
hideOnLogin:
description: If hidden, login with this provider is possible only if requested explicitly, for example using the 'kc_idp_hint' parameter.
nullable: true
type: boolean
internalId:
nullable: true
type: string
linkOnly:
description: If true, users cannot log in through this provider. They can only link to this provider. This is useful if you don't want to allow login from the provider, but want to integrate with a provider.
nullable: true
type: boolean
organizationId:
nullable: true
type: string
postBrokerLoginFlowAlias:
description: Alias of authentication flow, which is triggered after each login with this identity provider. Useful if you want additional verification of each user authenticated with this identity provider (for example OTP). Leave this to "None" if you need no any additional authenticators to be triggered after login with this identity provider. Also note that authenticator implementations must assume that user is already set in ClientSession as identity provider already set it.
nullable: true
type: string
providerId:
nullable: true
type: string
storeToken:
description: Enable/disable if tokens must be stored after authenticating users.
nullable: true
type: boolean
trustEmail:
description: If enabled, email provided by this provider is not verified even if verification is enabled for the realm.
nullable: true
type: boolean
updateProfileFirstLogin:
nullable: true
type: boolean
updateProfileFirstLoginMode:
nullable: true
type: string
type: object
type: array
internationalizationEnabled:
description: If enabled, you can choose which locales you support for this realm and which locale is the default.
nullable: true
type: boolean
keycloakVersion:
nullable: true
type: string
localizationTexts:
additionalProperties:
additionalProperties:
type: string
type: object
type: object
loginTheme:
description: Select theme for login, OTP, grant, registration and forgot password pages.
nullable: true
type: string
loginWithEmailAllowed:
description: Allow users to log in with their email address.
nullable: true
type: boolean
maxDeltaTimeSeconds:
description: When will failure count be reset?
format: int32
nullable: true
type: integer
maxFailureWaitSeconds:
description: Max time a user will be locked out.
format: int32
nullable: true
type: integer
maxTemporaryLockouts:
description: The number of temporary lockouts permitted before the user is permanently locked out.
format: int32
nullable: true
type: integer
minimumQuickLoginWaitSeconds:
description: How long to wait after a quick login failure.
format: int32
nullable: true
type: integer
notBefore:
format: int32
nullable: true
type: integer
oAuth2DeviceCodeLifespan:
format: int32
nullable: true
type: integer
oAuth2DevicePollingInterval:
format: int32
nullable: true
type: integer
oauth2DeviceCodeLifespan:
description: Max time before the device code and user code are expired. This value needs to be a long enough lifetime to be usable (allowing the user to retrieve their secondary device, navigate to the verification URI, login, etc.), but should be sufficiently short to limit the usability of a code obtained for phishing.
format: int32
nullable: true
type: integer
oauth2DevicePollingInterval:
description: The minimum amount of time in seconds that the client should wait between polling requests to the token endpoint.
format: int32
nullable: true
type: integer
offlineSessionIdleTimeout:
description: Time an offline session is allowed to be idle before it expires. You need to use offline token to refresh at least once within this period; otherwise offline session will expire.
format: int32
nullable: true
type: integer
offlineSessionMaxLifespan:
description: Max time before an offline session is expired regardless of activity.
format: int32
nullable: true
type: integer
offlineSessionMaxLifespanEnabled:
description: Enable offline session maximum lifetime
nullable: true
type: boolean
organizationsEnabled:
nullable: true
type: boolean
otpPolicyAlgorithm:
description: What hashing algorithm should be used to generate the OTP.
nullable: true
type: string
otpPolicyCodeReusable:
description: Possibility to use the same OTP code again after successful authentication.
nullable: true
type: boolean
otpPolicyDigits:
description: How many digits should the OTP have?
format: int32
nullable: true
type: integer
otpPolicyInitialCounter:
format: int32
nullable: true
type: integer
otpPolicyLookAheadWindow:
description: How far around (extra token periods or counts) should the server look just in case the token generator and server are out of time sync or counter sync?
format: int32
nullable: true
type: integer
otpPolicyPeriod:
description: How many seconds should an OTP token be valid? Defaults to 30 seconds.
format: int32
nullable: true
type: integer
otpPolicyType:
description: totp is Time-Based One Time Password. 'hotp' is a counter base one time password in which the server keeps a counter to hash against.
enum:
- totp
- hotp
nullable: true
type: string
otpSupportedApplications:
items:
type: string
type: array
passwordCredentialGrantAllowed:
nullable: true
type: boolean
passwordPolicy:
nullable: true
type: string
permanentLockout:
nullable: true
type: boolean
privateKey:
nullable: true
type: string
publicKey:
nullable: true
type: string
quickLoginCheckMilliSeconds:
description: If a failure happens concurrently too quickly, lock out the user.
format: int64
nullable: true
type: integer
realm:
nullable: true
type: string
x-kubernetes-validations:
- message: Value is immutable
rule: self == oldSelf
realmCacheEnabled:
nullable: true
type: boolean
refreshTokenMaxReuse:
description: Maximum number of times a refresh token can be reused. When a different token is used, revocation is immediate.
format: int32
nullable: true
type: integer
registrationAllowed:
description: Enable/disable the registration page. A link for registration will show on login page too.
nullable: true
type: boolean
registrationEmailAsUsername:
description: Allow users to set email as username.
nullable: true
type: boolean
registrationFlow:
nullable: true
type: string
rememberMe:
description: Show checkbox on login page to allow user to remain logged in between browser restarts until session expires.
nullable: true
type: boolean
requiredCredentials:
items:
type: string
nullable: true
type: array
resetCredentialsFlow:
nullable: true
type: string
resetPasswordAllowed:
description: Show a link on login page for user to click when they have forgotten their credentials.
nullable: true
type: boolean
revokeRefreshToken:
description: If enabled a refresh token can only be used up to 'Refresh Token Max Reuse' and is revoked when a different token is used. Otherwise refresh tokens are not revoked when used and can be used multiple times.
nullable: true
type: boolean
roles:
description: |-
RolesRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "application": { "type": "object", "additionalProperties": { "type": "array", "items": { "$ref": "#/$defs/RoleRepresentation" } } }, "client": { "type": "object", "additionalProperties": { "type": "array", "items": { "$ref": "#/$defs/RoleRepresentation" } } }, "realm": { "type": "array", "items": { "$ref": "#/$defs/RoleRepresentation" } } }, "additionalProperties": false } ``` </details>
nullable: true
properties:
application:
additionalProperties:
items:
description: |-
RoleRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "attributes": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } }, "clientRole": { "type": "boolean" }, "composite": { "type": "boolean" }, "composites": { "$ref": "#/$defs/Composites" }, "containerId": { "type": "string" }, "description": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "scopeParamRequired": { "type": "boolean" } }, "additionalProperties": false } ``` </details>
properties:
attributes:
additionalProperties:
items:
type: string
type: array
type: object
clientRole:
nullable: true
type: boolean
composite:
nullable: true
type: boolean
composites:
description: |-
Composites
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "application": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } }, "client": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } }, "realm": { "type": "array", "items": { "type": "string" }, "uniqueItems": true } }, "additionalProperties": false } ``` </details>
nullable: true
properties:
application:
additionalProperties:
items:
type: string
type: array
type: object
client:
additionalProperties:
items:
type: string
type: array
type: object
realm:
items:
type: string
nullable: true
type: array
type: object
containerId:
nullable: true
type: string
description:
nullable: true
type: string
id:
nullable: true
type: string
name:
nullable: true
type: string
scopeParamRequired:
nullable: true
type: boolean
type: object
type: array
type: object
client:
additionalProperties:
items:
description: |-
RoleRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "attributes": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } }, "clientRole": { "type": "boolean" }, "composite": { "type": "boolean" }, "composites": { "$ref": "#/$defs/Composites" }, "containerId": { "type": "string" }, "description": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "scopeParamRequired": { "type": "boolean" } }, "additionalProperties": false } ``` </details>
properties:
attributes:
additionalProperties:
items:
type: string
type: array
type: object
clientRole:
nullable: true
type: boolean
composite:
nullable: true
type: boolean
composites:
description: |-
Composites
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "application": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } }, "client": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } }, "realm": { "type": "array", "items": { "type": "string" }, "uniqueItems": true } }, "additionalProperties": false } ``` </details>
nullable: true
properties:
application:
additionalProperties:
items:
type: string
type: array
type: object
client:
additionalProperties:
items:
type: string
type: array
type: object
realm:
items:
type: string
nullable: true
type: array
type: object
containerId:
nullable: true
type: string
description:
nullable: true
type: string
id:
nullable: true
type: string
name:
nullable: true
type: string
scopeParamRequired:
nullable: true
type: boolean
type: object
type: array
type: object
realm:
items:
description: |-
RoleRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "attributes": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } }, "clientRole": { "type": "boolean" }, "composite": { "type": "boolean" }, "composites": { "$ref": "#/$defs/Composites" }, "containerId": { "type": "string" }, "description": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "scopeParamRequired": { "type": "boolean" } }, "additionalProperties": false } ``` </details>
properties:
attributes:
additionalProperties:
items:
type: string
type: array
type: object
clientRole:
nullable: true
type: boolean
composite:
nullable: true
type: boolean
composites:
description: |-
Composites
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "application": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } }, "client": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } }, "realm": { "type": "array", "items": { "type": "string" }, "uniqueItems": true } }, "additionalProperties": false } ``` </details>
nullable: true
properties:
application:
additionalProperties:
items:
type: string
type: array
type: object
client:
additionalProperties:
items:
type: string
type: array
type: object
realm:
items:
type: string
nullable: true
type: array
type: object
containerId:
nullable: true
type: string
description:
nullable: true
type: string
id:
nullable: true
type: string
name:
nullable: true
type: string
scopeParamRequired:
nullable: true
type: boolean
type: object
type: array
type: object
scopeMappings:
items:
description: |-
ScopeMappingRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "client": { "type": "string" }, "clientScope": { "type": "string" }, "clientTemplate": { "type": "string" }, "roles": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "self": { "type": "string" } }, "additionalProperties": false } ``` </details>
properties:
client:
nullable: true
type: string
clientScope:
nullable: true
type: string
clientTemplate:
nullable: true
type: string
roles:
items:
type: string
nullable: true
type: array
self:
nullable: true
type: string
type: object
type: array
smtpServer:
description: |-
RealmRepresentationSmtpServer
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "auth": { "title": "Authentication", "type": "string", "enum": [ "true", "false", "" ] }, "envelopeFrom": { "title": "Envelope from", "description": "An email address used for bounces (optional).", "type": "string" }, "from": { "title": "From", "type": "string" }, "fromDisplayName": { "title": "From display name", "description": "A user-friendly name for the 'From' address (optional).", "type": "string" }, "host": { "title": "Host", "type": "string" }, "password": { "title": "Password", "description": "SMTP password. This field is able to obtain its value from vault, use ${vault.ID} format.", "type": "string" }, "port": { "title": "Port", "type": "string" }, "replyTo": { "title": "Reply to", "type": "string" }, "replyToDisplayName": { "title": "Reply to display name", "description": "A user-friendly name for the 'Reply-To' address (optional).", "type": "string" }, "ssl": { "title": "Enable SSL", "type": "string", "enum": [ "true", "false", "" ] }, "starttls": { "title": "Enable StartTLS", "type": "string", "enum": [ "true", "false", "" ] }, "user": { "title": "Username", "type": "string" } }, "additionalProperties": false } ``` </details>
nullable: true
properties:
auth:
description: |-
Authentication
<details><summary>JSON schema</summary>
```json { "title": "Authentication", "type": "string", "enum": [ "true", "false", "" ] } ``` </details>
enum:
- 'true'
- 'false'
- ''
nullable: true
type: string
envelopeFrom:
description: An email address used for bounces (optional).
nullable: true
type: string
from:
nullable: true
type: string
fromDisplayName:
description: A user-friendly name for the 'From' address (optional).
nullable: true
type: string
host:
nullable: true
type: string
password:
description: SMTP password. This field is able to obtain its value from vault, use ${vault.ID} format.
nullable: true
type: string
port:
nullable: true
type: string
replyTo:
nullable: true
type: string
replyToDisplayName:
description: A user-friendly name for the 'Reply-To' address (optional).
nullable: true
type: string
ssl:
description: |-
EnableSsl
<details><summary>JSON schema</summary>
```json { "title": "Enable SSL", "type": "string", "enum": [ "true", "false", "" ] } ``` </details>
enum:
- 'true'
- 'false'
- ''
nullable: true
type: string
starttls:
description: |-
EnableStartTls
<details><summary>JSON schema</summary>
```json { "title": "Enable StartTLS", "type": "string", "enum": [ "true", "false", "" ] } ``` </details>
enum:
- 'true'
- 'false'
- ''
nullable: true
type: string
user:
nullable: true
type: string
type: object
social:
nullable: true
type: boolean
socialProviders:
additionalProperties:
type: string
type: object
sslRequired:
description: Is HTTPS required? 'None' means HTTPS is not required for any client IP address. 'External requests' means localhost and private IP addresses can access without HTTPS. 'All requests' means HTTPS is required for all IP addresses.
enum:
- all
- external
- none
nullable: true
type: string
ssoSessionIdleTimeout:
description: Time a session is allowed to be idle before it expires. Tokens and browser sessions are invalidated when a session is expired.
format: int32
nullable: true
type: integer
ssoSessionIdleTimeoutRememberMe:
description: Time a remember me session is allowed to be idle before it expires. Tokens and browser sessions are invalidated when a session is expired. If not set it uses the standard SSO Session Idle value.
format: int32
nullable: true
type: integer
ssoSessionMaxLifespan:
description: Max time before a session is expired. Tokens and browser sessions are invalidated when a session is expired.
format: int32
nullable: true
type: integer
ssoSessionMaxLifespanRememberMe:
description: Max time before a session is expired when a user has set the remember me option. Tokens and browser sessions are invalidated when a session is expired. If not set it uses the standard SSO Session Max value.
format: int32
nullable: true
type: integer
supportedLocales:
items:
type: string
nullable: true
type: array
updateProfileOnInitialSocialLogin:
nullable: true
type: boolean
userCacheEnabled:
nullable: true
type: boolean
userFederationMappers:
items:
description: |-
UserFederationMapperRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "config": { "type": "object", "additionalProperties": { "type": "string" } }, "federationMapperType": { "type": "string" }, "federationProviderDisplayName": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" } }, "additionalProperties": false } ``` </details>
properties:
config:
additionalProperties:
type: string
type: object
federationMapperType:
nullable: true
type: string
federationProviderDisplayName:
nullable: true
type: string
id:
nullable: true
type: string
name:
nullable: true
type: string
type: object
type: array
userFederationProviders:
items:
description: |-
UserFederationProviderRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "changedSyncPeriod": { "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "config": { "type": "object", "additionalProperties": { "type": "string" } }, "displayName": { "type": "string" }, "fullSyncPeriod": { "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "id": { "type": "string" }, "lastSync": { "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "priority": { "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "providerName": { "type": "string" } }, "additionalProperties": false } ``` </details>
properties:
changedSyncPeriod:
format: int32
nullable: true
type: integer
config:
additionalProperties:
type: string
type: object
displayName:
nullable: true
type: string
fullSyncPeriod:
format: int32
nullable: true
type: integer
id:
nullable: true
type: string
lastSync:
format: int32
nullable: true
type: integer
priority:
format: int32
nullable: true
type: integer
providerName:
nullable: true
type: string
type: object
type: array
userManagedAccessAllowed:
description: If enabled, users are allowed to manage their resources and permissions using the Account Management UI.
nullable: true
type: boolean
verifiableCredentialsEnabled:
nullable: true
type: boolean
verifyEmail:
description: Require user to verify their email address after initial login or after address changes are submitted.
nullable: true
type: boolean
waitIncrementSeconds:
description: When failure threshold has been met, how much time should the user be locked out?
format: int32
nullable: true
type: integer
webAuthnPolicyAcceptableAaguids:
description: The list of allowed AAGUIDs of which an authenticator can be registered. An AAGUID is a 128-bit identifier indicating the authenticator's type (e.g., make and model).
items:
type: string
type: array
webAuthnPolicyAttestationConveyancePreference:
description: Communicates to an authenticator the preference of how to generate an attestation statement.
enum:
- not specified
- none
- indirect
- direct
nullable: true
type: string
webAuthnPolicyAuthenticatorAttachment:
description: Communicates to an authenticator an acceptable attachment pattern.
enum:
- not specified
- platform
- cross-platform
nullable: true
type: string
webAuthnPolicyAvoidSameAuthenticatorRegister:
description: Avoid registering an authenticator that has already been registered.
nullable: true
type: boolean
webAuthnPolicyCreateTimeout:
description: The timeout value for creating the user's public key credential in seconds. If set to 0, this timeout option is not adapted.
format: int32
nullable: true
type: integer
webAuthnPolicyExtraOrigins:
items:
type: string
type: array
webAuthnPolicyPasswordlessAcceptableAaguids:
description: The list of allowed AAGUIDs of which an authenticator can be registered. An AAGUID is a 128-bit identifier indicating the authenticator's type (e.g., make and model).
items:
type: string
type: array
webAuthnPolicyPasswordlessAttestationConveyancePreference:
description: Communicates to an authenticator the preference of how to generate an attestation statement.
enum:
- not specified
- none
- indirect
- direct
nullable: true
type: string
webAuthnPolicyPasswordlessAuthenticatorAttachment:
description: Communicates to an authenticator an acceptable attachment pattern.
enum:
- not specified
- platform
- cross-platform
nullable: true
type: string
webAuthnPolicyPasswordlessAvoidSameAuthenticatorRegister:
description: Avoid registering an authenticator that has already been registered.
nullable: true
type: boolean
webAuthnPolicyPasswordlessCreateTimeout:
description: The timeout value for creating the user's public key credential in seconds. If set to 0, this timeout option is not adapted.
format: int32
nullable: true
type: integer
webAuthnPolicyPasswordlessExtraOrigins:
items:
type: string
type: array
webAuthnPolicyPasswordlessRequireResidentKey:
description: It tells an authenticator whether to create a public key credential as a Discoverable Credential.
enum:
- not specified
- Yes
- No
nullable: true
type: string
webAuthnPolicyPasswordlessRpEntityName:
description: Human-readable server name as WebAuthn Relying Party
nullable: true
type: string
webAuthnPolicyPasswordlessRpId:
description: The WebAuthn Relying Party ID (RpID). It must be the origin's effective domain, e.g. 'company.com' or 'auth.company.com'.
nullable: true
type: string
webAuthnPolicyPasswordlessSignatureAlgorithms:
description: The signature algorithms that should be used for the Authentication Assertion.
items:
description: |-
SignatureAlgorithmsItem
<details><summary>JSON schema</summary>
```json { "type": "string", "enum": [ "Ed25519", "ES256", "ES384", "ES512", "RS256", "RS384", "RS512", "RS1" ] } ``` </details>
enum:
- Ed25519
- ES256
- ES384
- ES512
- RS256
- RS384
- RS512
- RS1
type: string
type: array
webAuthnPolicyPasswordlessUserVerificationRequirement:
description: Communicates to an authenticator whether to require to verify a user.
enum:
- not specified
- required
- preferred
- discouraged
nullable: true
type: string
webAuthnPolicyRequireResidentKey:
description: It tells an authenticator whether to create a public key credential as a Discoverable Credential.
enum:
- not specified
- Yes
- No
nullable: true
type: string
webAuthnPolicyRpEntityName:
description: Human-readable server name as WebAuthn Relying Party
nullable: true
type: string
webAuthnPolicyRpId:
description: The WebAuthn Relying Party ID (RpID). It must be the origin's effective domain, e.g. 'company.com' or 'auth.company.com'.
nullable: true
type: string
webAuthnPolicySignatureAlgorithms:
description: The signature algorithms that should be used for the Authentication Assertion.
items:
description: |-
SignatureAlgorithmsItem
<details><summary>JSON schema</summary>
```json { "type": "string", "enum": [ "Ed25519", "ES256", "ES384", "ES512", "RS256", "RS384", "RS512", "RS1" ] } ``` </details>
enum:
- Ed25519
- ES256
- ES384
- ES512
- RS256
- RS384
- RS512
- RS1
type: string
type: array
webAuthnPolicyUserVerificationRequirement:
description: Communicates to an authenticator whether to require to verify a user.
enum:
- not specified
- required
- preferred
- discouraged
nullable: true
type: string
type: object
x-kubernetes-validations:
- message: Value is immutable
rule: has(self.realm) == has(oldSelf.realm)
instanceRef:
description: The name of the namespaced instance to which this object belongs to.
type: string
x-kubernetes-validations:
- message: Value is immutable
rule: self == oldSelf
options:
description: Options for the request to the Keycloak Admin API.
nullable: true
type: object
patchFrom:
additionalProperties:
description: EnvVarSource represents a source for the value of an EnvVar.
properties:
configMapKeyRef:
description: Selects a key of a ConfigMap.
properties:
key:
description: The key to select.
type: string
name:
description: 'Name of the referent. This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
type: string
optional:
description: Specify whether the ConfigMap or its key must be defined
type: boolean
required:
- key
- name
type: object
fieldRef:
description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels[''<KEY>'']`, `metadata.annotations[''<KEY>'']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.'
properties:
apiVersion:
description: Version of the schema the FieldPath is written in terms of, defaults to "v1".
type: string
fieldPath:
description: Path of the field to select in the specified API version.
type: string
required:
- fieldPath
type: object
resourceFieldRef:
description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.'
properties:
containerName:
description: 'Container name: required for volumes, optional for env vars'
type: string
divisor:
description: Specifies the output format of the exposed resources, defaults to "1"
type: string
resource:
description: 'Required: resource to select'
type: string
required:
- resource
type: object
secretKeyRef:
description: Selects a key of a secret in the pod's namespace
properties:
key:
description: The key of the secret to select from. Must be a valid secret key.
type: string
name:
description: 'Name of the referent. This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
type: string
optional:
description: Specify whether the Secret or its key must be defined
type: boolean
required:
- key
- name
type: object
valueAs:
enum:
- auto
- string
- number
- yaml
- json
- bool
nullable: true
type: string
type: object
description: Defines additional values that can be loaded from secrets or configmaps. Field selectors are not supported. For more informations see [the patches documentation](../configuration/patches.md).
type: object
patchFrom2:
items:
description: EnvVarSource represents a source for the value of an EnvVar.
properties:
configMapKeyRef:
description: Selects a key of a ConfigMap.
properties:
key:
description: The key to select.
type: string
name:
description: 'Name of the referent. This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
type: string
optional:
description: Specify whether the ConfigMap or its key must be defined
type: boolean
required:
- key
- name
type: object
fieldRef:
description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels[''<KEY>'']`, `metadata.annotations[''<KEY>'']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.'
properties:
apiVersion:
description: Version of the schema the FieldPath is written in terms of, defaults to "v1".
type: string
fieldPath:
description: Path of the field to select in the specified API version.
type: string
required:
- fieldPath
type: object
path:
type: string
resourceFieldRef:
description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.'
properties:
containerName:
description: 'Container name: required for volumes, optional for env vars'
type: string
divisor:
description: Specifies the output format of the exposed resources, defaults to "1"
type: string
resource:
description: 'Required: resource to select'
type: string
required:
- resource
type: object
secretKeyRef:
description: Selects a key of a secret in the pod's namespace
properties:
key:
description: The key of the secret to select from. Must be a valid secret key.
type: string
name:
description: 'Name of the referent. This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
type: string
optional:
description: Specify whether the Secret or its key must be defined
type: boolean
required:
- key
- name
type: object
valueAs:
enum:
- auto
- string
- number
- yaml
- json
- bool
nullable: true
type: string
required:
- path
type: object
type: array
required:
- definition
type: object
status:
nullable: true
properties:
conditions:
items:
properties:
lastTransitionTime:
description: Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.
format: date-time
nullable: true
type: string
message:
nullable: true
type: string
reason:
nullable: true
type: string
status:
type: string
type:
type: string
required:
- status
- type
type: object
type: array
instance:
anyOf:
- required:
- instanceRef
- required:
- clusterInstanceRef
properties:
clusterInstanceRef:
description: The name of the cluster instance to which this object belongs to.
type: string
x-kubernetes-validations:
- message: Value is immutable
rule: self == oldSelf
instanceRef:
description: The name of the namespaced instance to which this object belongs to.
type: string
x-kubernetes-validations:
- message: Value is immutable
rule: self == oldSelf
type: object
message:
type: string
ready:
type: boolean
resourcePath:
type: string
status:
type: string
required:
- ready
type: object
required:
- spec
title: ClusterKeycloakRealm
type: object
served: true
storage: true
subresources:
status: {}
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: keycloakrealms.rustcloak.k8s.eboland.de
spec:
group: rustcloak.k8s.eboland.de
names:
categories:
- keycloak
- all
kind: KeycloakRealm
plural: keycloakrealms
shortNames:
- kcrm
singular: keycloakrealm
scope: Namespaced
versions:
- additionalPrinterColumns:
- description: true if the realm is ready
jsonPath: .status.ready
name: Ready
type: boolean
- description: Status String of the resource
jsonPath: .status.status
name: Status
type: string
- description: time since the realm was created
jsonPath: .metadata.creationTimestamp
name: Age
type: date
name: v1beta1
schema:
openAPIV3Schema:
description: resource to define an Realm within a [KeyclaokInstance](./keycloakinstance.md)
properties:
spec:
anyOf:
- required:
- instanceRef
- required:
- clusterInstanceRef
description: the KeycloakRealm resource
properties:
clusterInstanceRef:
description: The name of the cluster instance to which this object belongs to.
type: string
x-kubernetes-validations:
- message: Value is immutable
rule: self == oldSelf
definition:
description: |-
RealmRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "accessCodeLifespan": { "title": "Client Login Timeout", "description": "Max time a client has to finish the access token protocol. This should normally be 1 minute.", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "accessCodeLifespanLogin": { "title": "Login timeout", "description": "Max time a user has to complete a login. This is recommended to be relatively long, such as 30 minutes or more.", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "accessCodeLifespanUserAction": { "title": "Login action timeout", "description": "Max time a user has to complete login related actions like update password or configure totp. This is recommended to be relatively long, such as 5 minutes or more.", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "accessTokenLifespan": { "title": "Access Token Lifespan", "description": "Max time before an access token is expired. This value is recommended to be short relative to the SSO timeout.", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "accessTokenLifespanForImplicitFlow": { "title": "Access Token Lifespan For Implicit Flow", "description": "Max time before an access token issued during OpenID Connect Implicit Flow is expired. This value is recommended to be shorter than the SSO timeout. There is no possibility to refresh token during implicit flow, that's why there is a separate timeout different to 'Access Token Lifespan'.", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "accountTheme": { "title": "Account theme", "description": "Select theme for login, OTP, grant, registration and forgot password pages.", "type": "string" }, "actionTokenGeneratedByAdminLifespan": { "title": "Default Admin-Initiated Action Lifespan", "description": "Maximum time before an action permit sent to a user by administrator is expired. This value is recommended to be long to allow administrators to send e-mails for users that are currently offline. The default timeout can be overridden immediately before issuing the token.", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "actionTokenGeneratedByUserLifespan": { "title": "User-Initiated Action Lifespan", "description": "Maximum time before an action permit sent by a user (such as a forgot password e-mail) is expired. This value is recommended to be short because it's expected that the user would react to self-created action quickly.", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "adminEventsDetailsEnabled": { "title": "Include representation", "description": "Include JSON representation for create and update requests.", "type": "boolean" }, "adminEventsEnabled": { "title": "Save events", "description": "If enabled, admin events are saved to the database, which makes events available to the Admin UI.", "type": "boolean" }, "adminPermissionsClient": { "$ref": "#/$defs/ClientRepresentation" }, "adminPermissionsEnabled": { "type": "boolean" }, "adminTheme": { "title": "Admin theme", "type": "string" }, "applicationScopeMappings": { "type": "object", "additionalProperties": { "type": "array", "items": { "$ref": "#/$defs/ScopeMappingRepresentation" } } }, "applications": { "type": "array", "items": { "$ref": "#/$defs/ApplicationRepresentation" } }, "attributes": { "type": "object", "properties": { "adminEventsExpiration": { "title": "Expiration", "description": "Sets the expiration for events. Expired events are periodically deleted from the database.", "type": "string", "pattern": "^[0-9]*$" }, "cibaAuthRequestedUserHint": { "title": "Authentication Requested User Hint", "description": "The way of identifying the end-user for whom authentication is being requested. Currently only \"login_hint\" is supported.", "type": "string", "enum": [ "login_hint" ] }, "cibaBackchannelTokenDeliveryMode": { "title": "Backchannel Token Delivery Mode", "description": "Specifies how the CD (Consumption Device) gets the authentication result and related tokens. This mode will be used by default for the CIBA clients, which do not have other mode explicitly set.", "type": "string", "enum": [ "ping", "poll" ] }, "cibaExpiresIn": { "title": "Expires In", "description": "The expiration time of the \"auth_req_id\" in seconds since the authentication request was received.", "type": "string", "pattern": "^[0-9]*$" }, "cibaInterval": { "title": "Interval", "description": "The minimum amount of time in seconds that the CD (Consumption Device) must wait between polling requests to the token endpoint. If set to 0, the CD must use 5 as the default value according to the CIBA specification.", "type": "string", "pattern": "^[0-9]*$" }, "frontendUrl": { "title": "Frontend URL", "description": "Set the frontend URL for the realm. Use in combination with the default hostname provider to override the base URL for frontend requests for a specific realm.", "type": "string" } }, "additionalProperties": { "type": "string" } }, "authenticationFlows": { "type": "array", "items": { "$ref": "#/$defs/AuthenticationFlowRepresentation" } }, "authenticatorConfig": { "type": "array", "items": { "$ref": "#/$defs/AuthenticatorConfigRepresentation" } }, "browserFlow": { "type": "string" }, "browserSecurityHeaders": { "type": "object", "properties": { "contentSecurityPolicy": { "title": "Content-Security-Policy", "description": "Default value prevents pages from being included by non-origin iframes. <1>Learn more</1>", "type": "string" }, "contentSecurityPolicyReportOnly": { "title": "Content-Security-Policy-Report-Only", "description": "For testing Content Security Policies <1>Learn more</1>", "type": "string" }, "strictTransportSecurity": { "title": "HTTP Strict Transport Security (HSTS)", "description": "The Strict-Transport-Security HTTP header tells browsers to always use HTTPS. Once a browser sees this header, it will only visit the site over HTTPS for the time specified (1 year) at max-age, including the subdomains. <1>Learn more</1>", "type": "string" }, "xContentTypeOptions": { "title": "X-Content-Type-Options", "description": "The default value prevents Internet Explorer and Google Chrome from MIME-sniffing a response away from the declared content-type. <1>Learn more</1>", "type": "string" }, "xFrameOptions": { "title": "X-Frame-Options", "description": "Default value prevents pages from being included by non-origin iframes. <1>Learn more</1>", "type": "string" }, "xRobotsTag": { "title": "X-Robots-Tag", "description": "Prevent pages from appearing in search engines. <1>Learn more</1>", "type": "string" }, "xXSSProtection": { "title": "X-XSS-Protection", "description": "This header configures the Cross-site scripting (XSS) filter in your browser. Using the default behaviour, the browser will prevent rendering of the page when a XSS attack is detected. <1>Learn more</1>", "type": "string" } }, "additionalProperties": false }, "bruteForceDetection": { "title": "Brute force detection" }, "bruteForceProtected": { "type": "boolean" }, "bruteForceStrategy": { "title": "Strategy to increase wait time", "description": "Multiple means wait time will be increased only when number of failures are multiples of '{{failureFactor}}'. Linear means each new failure starting at '{{failureFactor}}' will increase wait time.", "$ref": "#/$defs/BruteForceStrategy" }, "certificate": { "type": "string" }, "clientAuthenticationFlow": { "type": "string" }, "clientOfflineSessionIdleTimeout": { "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "clientOfflineSessionMaxLifespan": { "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "clientPolicies": { "$ref": "#/$defs/ClientPoliciesRepresentation" }, "clientProfiles": { "$ref": "#/$defs/ClientProfilesRepresentation" }, "clientScopeMappings": { "type": "object", "additionalProperties": { "type": "array", "items": { "$ref": "#/$defs/ScopeMappingRepresentation" } } }, "clientScopes": { "type": "array", "items": { "$ref": "#/$defs/ClientScopeRepresentation" } }, "clientSessionIdleTimeout": { "title": "Client Session Idle", "description": "Time a client session is allowed to be idle before it expires. Tokens are invalidated when a client session is expired. The option does not affect the global user SSO session. If not set, it uses the standard SSO Session Idle value.", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "clientSessionMaxLifespan": { "title": "Client Session Max", "description": "Max time before a client session is expired. Tokens are invalidated when a session is expired. The option does not affect the global user SSO session. If not set, it uses the standard SSO Session Max value.", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "clientTemplates": { "type": "array", "items": { "$ref": "#/$defs/ClientTemplateRepresentation" } }, "clients": { "type": "array", "items": { "$ref": "#/$defs/ClientRepresentation" } }, "codeSecret": { "type": "string" }, "components": { "$ref": "#/$defs/MultivaluedHashMapStringComponentExportRepresentation" }, "defaultDefaultClientScopes": { "type": "array", "items": { "type": "string" } }, "defaultGroups": { "type": "array", "items": { "type": "string" } }, "defaultLocale": { "title": "Default locale", "type": "string" }, "defaultOptionalClientScopes": { "type": "array", "items": { "type": "string" } }, "defaultRole": { "$ref": "#/$defs/RoleRepresentation" }, "defaultRoles": { "type": "array", "items": { "type": "string" } }, "defaultSignatureAlgorithm": { "title": "Default Signature Algorithm", "description": "Default algorithm used to sign tokens for the realm", "type": "string", "enum": [ "EdDSA", "ES256", "ES384", "ES512", "HS256", "HS384", "HS512", "PS256", "PS384", "PS512", "RS256", "RS384", "RS512" ] }, "directGrantFlow": { "type": "string" }, "displayName": { "title": "Display name", "type": "string" }, "displayNameHtml": { "title": "HTML Display name", "type": "string" }, "dockerAuthenticationFlow": { "type": "string" }, "duplicateEmailsAllowed": { "title": "Duplicate emails", "description": "Allow multiple users to have the same email address. Changing this setting will also clear the user's cache. It is recommended to manually update email constraints of existing users in the database after switching off support for duplicate email addresses.", "type": "boolean" }, "editUsernameAllowed": { "title": "Edit username", "description": "If enabled, the username field is editable, readonly otherwise.", "type": "boolean" }, "emailTheme": { "title": "Email theme", "description": "Select a theme for emails that are sent by the server.", "type": "string" }, "enabled": { "type": "boolean" }, "enabledEventTypes": { "type": "array", "items": { "type": "string" } }, "eventsEnabled": { "title": "Save events", "description": "If enabled, user events are saved to the database, which makes events available to the admin and account management UIs.", "type": "boolean" }, "eventsExpiration": { "title": "Expiration", "description": "Sets the expiration for events. Expired events are periodically deleted from the database.", "type": "integer", "format": "int64", "maximum": 9.223372036854776e18, "minimum": -9.223372036854776e18 }, "eventsListeners": { "title": "Event listeners", "description": "Configure what listeners receive events for the realm.", "type": "array", "items": { "type": "string" } }, "failureFactor": { "title": "Max login failures", "description": "Max login failures", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "federatedUsers": { "type": "array", "items": { "$ref": "#/$defs/UserRepresentation" } }, "firstBrokerLoginFlow": { "type": "string" }, "groups": { "type": "array", "items": { "$ref": "#/$defs/GroupRepresentation" } }, "id": { "type": "string" }, "identityProviderMappers": { "type": "array", "items": { "$ref": "#/$defs/IdentityProviderMapperRepresentation" } }, "identityProviders": { "type": "array", "items": { "$ref": "#/$defs/IdentityProviderRepresentation" } }, "internationalizationEnabled": { "title": "Internationalization", "description": "If enabled, you can choose which locales you support for this realm and which locale is the default.", "type": "boolean" }, "keycloakVersion": { "type": "string" }, "localizationTexts": { "type": "object", "additionalProperties": { "type": "object", "additionalProperties": { "type": "string" } } }, "loginTheme": { "title": "Login theme", "description": "Select theme for login, OTP, grant, registration and forgot password pages.", "type": "string" }, "loginWithEmailAllowed": { "title": "Login with email", "description": "Allow users to log in with their email address.", "type": "boolean" }, "maxDeltaTimeSeconds": { "title": "Failure reset time", "description": "When will failure count be reset?", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "maxFailureWaitSeconds": { "title": "Max wait", "description": "Max time a user will be locked out.", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "maxTemporaryLockouts": { "title": "Maximum temporary lockouts", "description": "The number of temporary lockouts permitted before the user is permanently locked out.", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "minimumQuickLoginWaitSeconds": { "title": "Minimum quick login wait", "description": "How long to wait after a quick login failure.", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "notBefore": { "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "oAuth2DeviceCodeLifespan": { "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "oAuth2DevicePollingInterval": { "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "oauth2DeviceCodeLifespan": { "title": "OAuth 2.0 Device Code Lifespan", "description": "Max time before the device code and user code are expired. This value needs to be a long enough lifetime to be usable (allowing the user to retrieve their secondary device, navigate to the verification URI, login, etc.), but should be sufficiently short to limit the usability of a code obtained for phishing.", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "oauth2DevicePollingInterval": { "title": "OAuth 2.0 Device Polling Interval", "description": "The minimum amount of time in seconds that the client should wait between polling requests to the token endpoint.", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "oauthClients": { "type": "array", "items": { "$ref": "#/$defs/OAuthClientRepresentation" } }, "offlineSessionIdleTimeout": { "title": "Offline Session Idle", "description": "Time an offline session is allowed to be idle before it expires. You need to use offline token to refresh at least once within this period; otherwise offline session will expire.", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "offlineSessionMaxLifespan": { "title": "Offline Session Max", "description": "Max time before an offline session is expired regardless of activity.", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "offlineSessionMaxLifespanEnabled": { "title": "Offline Session Max Limited", "description": "Enable offline session maximum lifetime", "type": "boolean" }, "organizations": { "type": "array", "items": { "$ref": "#/$defs/OrganizationRepresentation" } }, "organizationsEnabled": { "type": "boolean" }, "otpPolicyAlgorithm": { "title": "OTP hash algorithm", "description": "What hashing algorithm should be used to generate the OTP.", "type": "string" }, "otpPolicyCodeReusable": { "title": "Reusable token", "description": "Possibility to use the same OTP code again after successful authentication.", "type": "boolean" }, "otpPolicyDigits": { "title": "Number of digits", "description": "How many digits should the OTP have?", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "otpPolicyInitialCounter": { "title": "Initial counter", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "otpPolicyLookAheadWindow": { "title": "Look around window", "description": "How far around (extra token periods or counts) should the server look just in case the token generator and server are out of time sync or counter sync?", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "otpPolicyPeriod": { "title": "OTP Token period", "description": "How many seconds should an OTP token be valid? Defaults to 30 seconds.", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "otpPolicyType": { "title": "OTP type", "description": "totp is Time-Based One Time Password. 'hotp' is a counter base one time password in which the server keeps a counter to hash against.", "type": "string", "enum": [ "totp", "hotp" ] }, "otpSupportedApplications": { "type": "array", "items": { "type": "string" } }, "passwordCredentialGrantAllowed": { "type": "boolean" }, "passwordPolicy": { "type": "string" }, "permanentLockout": { "title": "Permanent lockout", "type": "boolean" }, "privateKey": { "type": "string" }, "protocolMappers": { "type": "array", "items": { "$ref": "#/$defs/ProtocolMapperRepresentation" } }, "publicKey": { "type": "string" }, "quickLoginCheckMilliSeconds": { "title": "Quick login check milliseconds", "description": "If a failure happens concurrently too quickly, lock out the user.", "type": "integer", "format": "int64", "maximum": 9.223372036854776e18, "minimum": -9.223372036854776e18 }, "realm": { "title": "Realm ID", "type": "string" }, "realmCacheEnabled": { "type": "boolean" }, "refreshTokenMaxReuse": { "title": "Refresh Token Max Reuse", "description": "Maximum number of times a refresh token can be reused. When a different token is used, revocation is immediate.", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "registrationAllowed": { "title": "User registration", "description": "Enable/disable the registration page. A link for registration will show on login page too.", "type": "boolean" }, "registrationEmailAsUsername": { "title": "Email as username", "description": "Allow users to set email as username.", "type": "boolean" }, "registrationFlow": { "type": "string" }, "rememberMe": { "title": "Remember me", "description": "Show checkbox on login page to allow user to remain logged in between browser restarts until session expires.", "type": "boolean" }, "requiredActions": { "type": "array", "items": { "$ref": "#/$defs/RequiredActionProviderRepresentation" } }, "requiredCredentials": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "resetCredentialsFlow": { "type": "string" }, "resetPasswordAllowed": { "title": "Specifies independent timeout for forgot password.", "description": "Show a link on login page for user to click when they have forgotten their credentials.", "type": "boolean" }, "revokeRefreshToken": { "title": "Revoke Refresh Token", "description": "If enabled a refresh token can only be used up to 'Refresh Token Max Reuse' and is revoked when a different token is used. Otherwise refresh tokens are not revoked when used and can be used multiple times.", "type": "boolean" }, "roles": { "$ref": "#/$defs/RolesRepresentation" }, "scopeMappings": { "type": "array", "items": { "$ref": "#/$defs/ScopeMappingRepresentation" } }, "smtpServer": { "type": "object", "properties": { "auth": { "title": "Authentication", "type": "string", "enum": [ "true", "false", "" ] }, "envelopeFrom": { "title": "Envelope from", "description": "An email address used for bounces (optional).", "type": "string" }, "from": { "title": "From", "type": "string" }, "fromDisplayName": { "title": "From display name", "description": "A user-friendly name for the 'From' address (optional).", "type": "string" }, "host": { "title": "Host", "type": "string" }, "password": { "title": "Password", "description": "SMTP password. This field is able to obtain its value from vault, use ${vault.ID} format.", "type": "string" }, "port": { "title": "Port", "type": "string" }, "replyTo": { "title": "Reply to", "type": "string" }, "replyToDisplayName": { "title": "Reply to display name", "description": "A user-friendly name for the 'Reply-To' address (optional).", "type": "string" }, "ssl": { "title": "Enable SSL", "type": "string", "enum": [ "true", "false", "" ] }, "starttls": { "title": "Enable StartTLS", "type": "string", "enum": [ "true", "false", "" ] }, "user": { "title": "Username", "type": "string" } }, "additionalProperties": false }, "social": { "type": "boolean" }, "socialProviders": { "type": "object", "additionalProperties": { "type": "string" } }, "sslRequired": { "title": "Require SSL", "description": "Is HTTPS required? 'None' means HTTPS is not required for any client IP address. 'External requests' means localhost and private IP addresses can access without HTTPS. 'All requests' means HTTPS is required for all IP addresses.", "type": "string", "enum": [ "all", "external", "none" ] }, "ssoSessionIdleTimeout": { "title": "SSO Session Idle", "description": "Time a session is allowed to be idle before it expires. Tokens and browser sessions are invalidated when a session is expired.", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "ssoSessionIdleTimeoutRememberMe": { "title": "SSO Session Idle Remember Me", "description": "Time a remember me session is allowed to be idle before it expires. Tokens and browser sessions are invalidated when a session is expired. If not set it uses the standard SSO Session Idle value.", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "ssoSessionMaxLifespan": { "title": "SSO Session Max", "description": "Max time before a session is expired. Tokens and browser sessions are invalidated when a session is expired.", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "ssoSessionMaxLifespanRememberMe": { "title": "SSO Session Max Remember Me", "description": "Max time before a session is expired when a user has set the remember me option. Tokens and browser sessions are invalidated when a session is expired. If not set it uses the standard SSO Session Max value.", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "supportedLocales": { "title": "Supported locales", "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "updateProfileOnInitialSocialLogin": { "type": "boolean" }, "userCacheEnabled": { "type": "boolean" }, "userFederationMappers": { "type": "array", "items": { "$ref": "#/$defs/UserFederationMapperRepresentation" } }, "userFederationProviders": { "type": "array", "items": { "$ref": "#/$defs/UserFederationProviderRepresentation" } }, "userManagedAccessAllowed": { "title": "User-managed access", "description": "If enabled, users are allowed to manage their resources and permissions using the Account Management UI.", "type": "boolean" }, "users": { "type": "array", "items": { "$ref": "#/$defs/UserRepresentation" } }, "verifiableCredentialsEnabled": { "type": "boolean" }, "verifyEmail": { "title": "Verify email", "description": "Require user to verify their email address after initial login or after address changes are submitted.", "type": "boolean" }, "waitIncrementSeconds": { "title": "Wait increment", "description": "When failure threshold has been met, how much time should the user be locked out?", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "webAuthnPolicyAcceptableAaguids": { "title": "Acceptable AAGUIDs", "description": "The list of allowed AAGUIDs of which an authenticator can be registered. An AAGUID is a 128-bit identifier indicating the authenticator's type (e.g., make and model).", "type": "array", "items": { "type": "string" } }, "webAuthnPolicyAttestationConveyancePreference": { "title": "Attestation conveyance preference", "description": "Communicates to an authenticator the preference of how to generate an attestation statement.", "type": "string", "enum": [ "not specified", "none", "indirect", "direct" ] }, "webAuthnPolicyAuthenticatorAttachment": { "title": "Authenticator Attachment", "description": "Communicates to an authenticator an acceptable attachment pattern.", "type": "string", "enum": [ "not specified", "platform", "cross-platform" ] }, "webAuthnPolicyAvoidSameAuthenticatorRegister": { "title": "Avoid same authenticator registration", "description": "Avoid registering an authenticator that has already been registered.", "type": "boolean" }, "webAuthnPolicyCreateTimeout": { "title": "Timeout", "description": "The timeout value for creating the user's public key credential in seconds. If set to 0, this timeout option is not adapted.", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "webAuthnPolicyExtraOrigins": { "type": "array", "items": { "type": "string" } }, "webAuthnPolicyPasswordlessAcceptableAaguids": { "title": "Acceptable AAGUIDs", "description": "The list of allowed AAGUIDs of which an authenticator can be registered. An AAGUID is a 128-bit identifier indicating the authenticator's type (e.g., make and model).", "type": "array", "items": { "type": "string" } }, "webAuthnPolicyPasswordlessAttestationConveyancePreference": { "title": "Attestation conveyance preference", "description": "Communicates to an authenticator the preference of how to generate an attestation statement.", "type": "string", "enum": [ "not specified", "none", "indirect", "direct" ] }, "webAuthnPolicyPasswordlessAuthenticatorAttachment": { "title": "Authenticator Attachment", "description": "Communicates to an authenticator an acceptable attachment pattern.", "type": "string", "enum": [ "not specified", "platform", "cross-platform" ] }, "webAuthnPolicyPasswordlessAvoidSameAuthenticatorRegister": { "title": "Avoid same authenticator registration", "description": "Avoid registering an authenticator that has already been registered.", "type": "boolean" }, "webAuthnPolicyPasswordlessCreateTimeout": { "title": "Timeout", "description": "The timeout value for creating the user's public key credential in seconds. If set to 0, this timeout option is not adapted.", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "webAuthnPolicyPasswordlessExtraOrigins": { "type": "array", "items": { "type": "string" } }, "webAuthnPolicyPasswordlessRequireResidentKey": { "title": "Require discoverable credential", "description": "It tells an authenticator whether to create a public key credential as a Discoverable Credential.", "type": "string", "enum": [ "not specified", "Yes", "No" ] }, "webAuthnPolicyPasswordlessRpEntityName": { "title": "Relying party entity name", "description": "Human-readable server name as WebAuthn Relying Party", "type": "string" }, "webAuthnPolicyPasswordlessRpId": { "title": "Relying party ID", "description": "The WebAuthn Relying Party ID (RpID). It must be the origin's effective domain, e.g. 'company.com' or 'auth.company.com'.", "type": "string" }, "webAuthnPolicyPasswordlessSignatureAlgorithms": { "title": "Signature algorithms", "description": "The signature algorithms that should be used for the Authentication Assertion.", "type": "array", "items": { "type": "string", "enum": [ "Ed25519", "ES256", "ES384", "ES512", "RS256", "RS384", "RS512", "RS1" ] } }, "webAuthnPolicyPasswordlessUserVerificationRequirement": { "title": "User verification requirement", "description": "Communicates to an authenticator whether to require to verify a user.", "type": "string", "enum": [ "not specified", "required", "preferred", "discouraged" ] }, "webAuthnPolicyRequireResidentKey": { "title": "Require discoverable credential", "description": "It tells an authenticator whether to create a public key credential as a Discoverable Credential.", "type": "string", "enum": [ "not specified", "Yes", "No" ] }, "webAuthnPolicyRpEntityName": { "title": "Relying party entity name", "description": "Human-readable server name as WebAuthn Relying Party", "type": "string" }, "webAuthnPolicyRpId": { "title": "Relying party ID", "description": "The WebAuthn Relying Party ID (RpID). It must be the origin's effective domain, e.g. 'company.com' or 'auth.company.com'.", "type": "string" }, "webAuthnPolicySignatureAlgorithms": { "title": "Signature algorithms", "description": "The signature algorithms that should be used for the Authentication Assertion.", "type": "array", "items": { "type": "string", "enum": [ "Ed25519", "ES256", "ES384", "ES512", "RS256", "RS384", "RS512", "RS1" ] } }, "webAuthnPolicyUserVerificationRequirement": { "title": "User verification requirement", "description": "Communicates to an authenticator whether to require to verify a user.", "type": "string", "enum": [ "not specified", "required", "preferred", "discouraged" ] } }, "additionalProperties": false } ``` </details>
properties:
accessCodeLifespan:
description: Max time a client has to finish the access token protocol. This should normally be 1 minute.
format: int32
nullable: true
type: integer
accessCodeLifespanLogin:
description: Max time a user has to complete a login. This is recommended to be relatively long, such as 30 minutes or more.
format: int32
nullable: true
type: integer
accessCodeLifespanUserAction:
description: Max time a user has to complete login related actions like update password or configure totp. This is recommended to be relatively long, such as 5 minutes or more.
format: int32
nullable: true
type: integer
accessTokenLifespan:
description: Max time before an access token is expired. This value is recommended to be short relative to the SSO timeout.
format: int32
nullable: true
type: integer
accessTokenLifespanForImplicitFlow:
description: Max time before an access token issued during OpenID Connect Implicit Flow is expired. This value is recommended to be shorter than the SSO timeout. There is no possibility to refresh token during implicit flow, that's why there is a separate timeout different to 'Access Token Lifespan'.
format: int32
nullable: true
type: integer
accountTheme:
description: Select theme for login, OTP, grant, registration and forgot password pages.
nullable: true
type: string
actionTokenGeneratedByAdminLifespan:
description: Maximum time before an action permit sent to a user by administrator is expired. This value is recommended to be long to allow administrators to send e-mails for users that are currently offline. The default timeout can be overridden immediately before issuing the token.
format: int32
nullable: true
type: integer
actionTokenGeneratedByUserLifespan:
description: Maximum time before an action permit sent by a user (such as a forgot password e-mail) is expired. This value is recommended to be short because it's expected that the user would react to self-created action quickly.
format: int32
nullable: true
type: integer
adminEventsDetailsEnabled:
description: Include JSON representation for create and update requests.
nullable: true
type: boolean
adminEventsEnabled:
description: If enabled, admin events are saved to the database, which makes events available to the Admin UI.
nullable: true
type: boolean
adminPermissionsClient:
description: |-
ClientRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "access": { "type": "object", "additionalProperties": { "type": "boolean" } }, "adminUrl": { "title": "Admin URL", "description": "URL to the admin interface of the client. Set this if the client supports the adapter REST API. This REST API allows the auth server to push revocation policies and other administrative tasks. Usually this is set to the base URL of the client.", "type": "string" }, "alwaysDisplayInConsole": { "title": "Always display in UI", "description": "Always list this client in the Account UI, even if the user does not have an active session.", "type": "boolean" }, "attributes": { "type": "object", "properties": { "access.token.lifespan": { "title": "Access Token Lifespan", "description": "Max time before an access token is expired. This value is recommended to be short relative to the SSO timeout.", "type": "string", "pattern": "^[0-9]*$" }, "access.token.signed.response.alg": { "title": "Access token signature algorithm", "description": "JWA algorithm used for signing access tokens.", "type": "string" }, "authorization.encrypted.response.alg": { "title": "Authorization response encryption key management algorithm", "description": "JWA Algorithm used for key management in encrypting the authorization response when the response mode is jwt. This option is needed if you want encrypted authorization response. If left empty, the authorization response is just signed, but not encrypted.", "type": "string" }, "authorization.encrypted.response.enc": { "title": "Authorization response encryption content encryption algorithm", "description": "JWA Algorithm used for content encryption in encrypting the authorization response when the response mode is jwt. This option is needed if you want encrypted authorization response. If left empty, the authorization response is just signed, but not encrypted.", "type": "string" }, "authorization.signed.response.alg": { "title": "Authorization response signature algorithm", "description": "JWA algorithm used for signing authorization response tokens when the response mode is jwt.", "type": "string" }, "client.offline.session.idle.timeout": { "title": "Client Offline Session Idle", "description": "Time a client offline session is allowed to be idle before it expires. Offline tokens are invalidated when a client offline session is expired. The option does not affect the global user SSO session. If not set, it uses the realm Offline Session Idle value.", "type": "string", "pattern": "^[0-9]*$" }, "client.offline.session.max.lifespan": { "title": "Client Offline Session Max", "description": "Max time before a client offline session is expired. If Offline Session Max Limited is enabled at realm level, offline tokens are invalidated when a client offline session is expired. The option does not affect the global user SSO session. If not set, it uses the realm Offline Session Max value.", "type": "string", "pattern": "^[0-9]*$" }, "client.session.idle.timeout": { "title": "Client Session Idle", "description": "Time a client session is allowed to be idle before it expires. Tokens are invalidated when a client session is expired. The option does not affect the global user SSO session. If not set, it uses the standard SSO Session Idle value.", "type": "string", "pattern": "^[0-9]*$" }, "client.session.max.lifespan": { "title": "Client Session Max", "description": "Max time before a client session is expired. Tokens are invalidated when a session is expired. The option does not affect the global user SSO session. If not set, it uses the standard SSO Session Max value.", "type": "string", "pattern": "^[0-9]*$" }, "client_credentials.use_refresh_token": { "title": "Use refresh tokens for client credentials grant", "description": "If this is on, a refresh_token will be created and added to the token response if the client_credentials grant is used. The OAuth 2.0 RFC6749 Section 4.4.3 states that a refresh_token should not be generated when client_credentials grant is used. If this is off then no refresh_token will be generated and the associated user session will be removed.", "type": "string", "enum": [ "true", "false", "" ] }, "exclude.session.state.from.auth.response": { "title": "Exclude Session State From Authentication Response", "description": "If this is on, the parameter 'session_state' will not be included in OpenID Connect Authentication Response. It is useful if the client uses an older OIDC / OAuth2 adapter, which does not support the 'session_state' parameter.", "type": "string", "enum": [ "true", "false", "" ] }, "id.token.encrypted.response.alg": { "title": "ID token encryption key management algorithm", "description": "JWA Algorithm used for key management in encrypting ID tokens. This option is needed if you want encrypted ID tokens. If left empty, ID Tokens are just signed, but not encrypted.", "type": "string" }, "id.token.encrypted.response.enc": { "title": "ID token encryption content encryption algorithm", "description": "JWA Algorithm used for content encryption in encrypting ID tokens. This option is needed just if you want encrypted ID tokens. If left empty, ID Tokens are just signed, but not encrypted.", "type": "string" }, "id.token.signed.response.alg": { "title": "ID token signature algorithm", "description": "JWA algorithm used for signing ID tokens.", "type": "string" }, "logoUri": { "title": "Logo URL", "description": "URL that references a logo for the Client application", "type": "string" }, "pkce.code.challenge.method": { "title": "Proof Key for Code Exchange Code Challenge Method", "description": "Choose which code challenge method for PKCE is used. If not specified, keycloak does not applies PKCE to a client unless the client sends an authorization request with appropriate code challenge and code exchange method.", "type": "string" }, "policyUri": { "title": "Policy URL", "description": "URL that the Relying Party Client provides to the End-User to read about the how the profile data will be used", "type": "string" }, "post.logout.redirect.uris": { "title": "Valid post logout redirect URIs", "description": "Valid URI pattern a browser can redirect to after a successful login. Simple wildcards are allowed such as 'http://example.com/*'. Relative path can be specified too such as /my/relative/path/*. Relative paths are relative to the client root URL, or if none is specified the auth server root URL is used. For SAML, you must set valid URI patterns if you are relying on the consumer service URL embedded with the login request.", "type": "string" }, "request.object.encryption.alg": { "title": "Request object encryption algorithm", "description": "JWE algorithm, which client needs to use when sending OIDC request object specified by 'request' or 'request_uri' parameters. If set to 'any', encryption is optional and any algorithm is allowed.", "type": "string" }, "request.object.encryption.enc": { "title": "Request object content encryption algorithm", "description": "JWE algorithm, which client needs to use when encrypting the content of the OIDC request object specified by 'request' or 'request_uri' parameters. If set to 'any', any algorithm is allowed.", "type": "string" }, "request.object.required": { "title": "Request object required", "description": "Specifies if the client needs to provide a request object with their authorization requests, and what method they can use for this. If set to \"not required\", providing a request object is optional. In all other cases, providing a request object is mandatory. If set to \"request\", the request object must be provided by value. If set to \"request_uri\", the request object must be provided by reference. If set to \"request or request_uri\", either method can be used.", "type": "string" }, "request.object.signature.alg": { "title": "Request object signature algorithm", "description": "JWA algorithm, which client needs to use when sending OIDC request object specified by 'request' or 'request_uri' parameters. If set to 'any', Request object can be signed by any algorithm (including 'none' ).", "type": "string" }, "require.pushed.authorization.requests": { "title": "Pushed authorization request required", "description": "Boolean parameter indicating whether the authorization server accepts authorization request data only via the pushed authorization request method.", "type": "string", "enum": [ "true", "false", "" ] }, "tls.client.certificate.bound.access.tokens": { "title": "OAuth 2.0 Mutual TLS Certificate Bound Access Tokens Enabled", "description": "This enables support for OAuth 2.0 Mutual TLS Certificate Bound Access Tokens, which means that keycloak bind an access token and a refresh token with a X.509 certificate of a token requesting client exchanged in mutual TLS between keycloak's Token Endpoint and this client. These tokens can be treated as Holder-of-Key tokens instead of bearer tokens.", "type": "string", "enum": [ "true", "false", "" ] }, "token.endpoint.auth.signing.alg": { "title": "Signature algorithm", "description": "The signature algorithm to use to sign documents. Note that 'SHA1' based algorithms are deprecated and can be removed in the future. It is recommended to stick to some more secure algorithm instead of '*_SHA1'.", "type": "string" }, "token.response.type.bearer.lower-case": { "title": "Use lower-case bearer type in token responses", "description": "If this is on, token responses will be set the with the type \"bearer\" in lower-case. By default, the server sets the type as \"Bearer\" as defined by RFC6750.", "type": "string", "enum": [ "true", "false", "" ] }, "tosUri": { "title": "Terms of service URL", "description": "URL that the Relying Party Client provides to the End-User to read about the Relying Party's terms of service", "type": "string" }, "use.refresh.tokens": { "title": "Use refresh tokens", "description": "If this is on, a refresh_token will be created and added to the token response. If this is off then no refresh_token will be generated.", "type": "string", "enum": [ "true", "false", "" ] }, "user.info.encrypted.response.alg": { "title": "User info response encryption key management algorithm", "description": "JWA Algorithm used for key management in encrypting User Info Endpoint responses. This option is needed if you want encrypted User Info Endpoint responses. If left empty, User Info Endpoint responses are not encrypted.", "type": "string" }, "user.info.encrypted.response.enc": { "title": "User info response encryption content encryption algorithm", "description": "JWA Algorithm used for content encryption in encrypting User Info Endpoint responses. If User Info response encryption key management algorithm is specified, the default for this value is A128CBC-HS256.", "type": "string" }, "user.info.response.signature.alg": { "title": "User info signed response algorithm", "description": "JWA algorithm used for signed User Info Endpoint response. If set to 'unsigned', User Info Response won't be signed and will be returned in application/json format.", "type": "string" }, "x509.allow.regex.pattern.comparison": { "title": "Allow regex pattern comparison", "description": "If OFF, then the Subject DN from given client certificate must exactly match the given DN from the 'Subject DN' property as described in the RFC8705 specification. The Subject DN can be in the RFC4514 or RFC1779 format. If ON, then the Subject DN from given client certificate should match regex specified by 'Subject DN' property.", "type": "string", "enum": [ "true", "false", "" ] }, "x509.subjectdn": { "title": "Subject DN", "description": "A regular expression for validating Subject DN in the Client Certificate. Use \"(.*?)(?:$)\" to match all kind of expressions.", "type": "string" } }, "additionalProperties": { "type": "string" } }, "authenticationFlowBindingOverrides": { "title": "Authentication flow overrides", "type": "object", "properties": { "browser": { "title": "Browser Flow", "description": "Select the flow you want to use for browser authentication.", "type": "string" }, "direct_grant": { "title": "Direct Grant Flow", "description": "Select the flow you want to use for direct grant authentication.", "type": "string" } }, "additionalProperties": { "type": "string" } }, "authorizationServicesEnabled": { "title": "Authorization", "description": "Enable/Disable fine-grained authorization support for a client.", "type": "boolean" }, "authorizationSettings": { "$ref": "#/$defs/ResourceServerRepresentation" }, "baseUrl": { "title": "Home URL", "description": "Default URL to use when the auth server needs to redirect or link back to the client.", "type": "string" }, "bearerOnly": { "description": "This is a special OIDC type. This client only allows bearer token requests and cannot participate in browser logins.", "type": "boolean" }, "clientAuthenticatorType": { "title": "Client Authenticator", "description": "Client Authenticator used for authentication of this client against Keycloak server", "type": "string", "enum": [ "client-jwt", "client-secret", "client-secret-jwt", "client-x509" ] }, "clientId": { "title": "Client ID", "description": "The client identifier registered with the identity provider.", "type": "string" }, "clientTemplate": { "type": "string" }, "consentRequired": { "title": "Consent required", "description": "If enabled, users have to consent to client access.", "type": "boolean" }, "defaultClientScopes": { "type": "array", "items": { "type": "string" } }, "defaultRoles": { "type": "array", "items": { "type": "string" } }, "description": { "title": "Description", "description": "Help text for the description of the new flow", "type": "string" }, "directAccessGrantsEnabled": { "title": "Direct access grants", "description": "This enables support for Direct Access Grants, which means that client has access to username/password of user and exchange it directly with Keycloak server for access token. In terms of OAuth2 specification, this enables support of 'Resource Owner Password Credentials Grant' for this client.", "type": "boolean" }, "directGrantsOnly": { "type": "boolean" }, "enabled": { "title": "Enabled", "description": "Disabled clients cannot initiate a login or have obtained access tokens.", "type": "boolean" }, "frontchannelLogout": { "title": "Front channel logout", "description": "When true, logout requires a browser redirect to client. When false, server performs a background invocation for logout.", "type": "boolean" }, "fullScopeAllowed": { "title": "Full scope allowed", "description": "Allows you to disable all restrictions.", "type": "boolean" }, "id": { "type": "string" }, "implicitFlowEnabled": { "title": "Implicit flow", "description": "This enables support for OpenID Connect redirect based authentication without authorization code. In terms of OpenID Connect or OAuth2 specifications, this enables support of 'Implicit Flow' for this client.", "type": "boolean" }, "name": { "title": "Name", "description": "Specifies display name of the client. For example 'My Client'. Supports keys for localized values as well. For example: ${my_client}.", "type": "string" }, "nodeReRegistrationTimeout": { "title": "Node Re-registration timeout", "description": "Interval to specify max time for registered clients cluster nodes to re-register. If cluster node will not send re-registration request to Keycloak within this time, it will be unregistered from Keycloak.", "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "notBefore": { "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "optionalClientScopes": { "type": "array", "items": { "type": "string" } }, "origin": { "type": "string" }, "protocol": { "title": "Protocol", "type": "string" }, "protocolMappers": { "type": "array", "items": { "$ref": "#/$defs/ProtocolMapperRepresentation" } }, "publicClient": { "title": "Client authentication", "description": "This defines the type of the OIDC client. When it's ON, the OIDC type is set to confidential access type. When it's OFF, it is set to public access type.", "type": "boolean" }, "redirectUris": { "title": "Valid redirect URIs", "description": "Valid URI pattern a browser can redirect to after a successful login. Simple wildcards are allowed such as 'http://example.com/*'. Relative path can be specified too such as /my/relative/path/*. Relative paths are relative to the client root URL, or if none is specified the auth server root URL is used. For SAML, you must set valid URI patterns if you are relying on the consumer service URL embedded with the login request.", "type": "array", "items": { "type": "string" } }, "registeredNodes": { "type": "object", "additionalProperties": { "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 } }, "registrationAccessToken": { "title": "Registration access token", "description": "The registration access token provides access for clients to the client registration service.", "type": "string" }, "rootUrl": { "title": "Root URL", "description": "Root URL appended to relative URLs", "type": "string" }, "secret": { "title": "Client Secret", "type": "string" }, "serviceAccountsEnabled": { "title": "Service accounts roles", "description": "Allows you to authenticate this client to Keycloak and retrieve access token dedicated to this client. In terms of OAuth2 specification, this enables support of 'Client Credentials Grant' for this client.", "type": "boolean" }, "standardFlowEnabled": { "title": "Standard flow", "description": "This enables standard OpenID Connect redirect based authentication with authorization code. In terms of OpenID Connect or OAuth2 specifications, this enables support of 'Authorization Code Flow' for this client.", "type": "boolean" }, "surrogateAuthRequired": { "type": "boolean" }, "type": { "type": "string" }, "useTemplateConfig": { "type": "boolean" }, "useTemplateMappers": { "type": "boolean" }, "useTemplateScope": { "type": "boolean" }, "webOrigins": { "title": "Web origins", "description": "Allowed CORS origins. To permit all origins of Valid Redirect URIs, add '+'. This does not include the '*' wildcard though. To permit all origins, explicitly add '*'.", "type": "array", "items": { "type": "string" } } }, "additionalProperties": false } ``` </details>
nullable: true
properties:
access:
additionalProperties:
type: boolean
type: object
adminUrl:
description: URL to the admin interface of the client. Set this if the client supports the adapter REST API. This REST API allows the auth server to push revocation policies and other administrative tasks. Usually this is set to the base URL of the client.
nullable: true
type: string
alwaysDisplayInConsole:
description: Always list this client in the Account UI, even if the user does not have an active session.
nullable: true
type: boolean
attributes:
description: |-
ClientRepresentationAttributes
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "access.token.lifespan": { "title": "Access Token Lifespan", "description": "Max time before an access token is expired. This value is recommended to be short relative to the SSO timeout.", "type": "string", "pattern": "^[0-9]*$" }, "access.token.signed.response.alg": { "title": "Access token signature algorithm", "description": "JWA algorithm used for signing access tokens.", "type": "string" }, "authorization.encrypted.response.alg": { "title": "Authorization response encryption key management algorithm", "description": "JWA Algorithm used for key management in encrypting the authorization response when the response mode is jwt. This option is needed if you want encrypted authorization response. If left empty, the authorization response is just signed, but not encrypted.", "type": "string" }, "authorization.encrypted.response.enc": { "title": "Authorization response encryption content encryption algorithm", "description": "JWA Algorithm used for content encryption in encrypting the authorization response when the response mode is jwt. This option is needed if you want encrypted authorization response. If left empty, the authorization response is just signed, but not encrypted.", "type": "string" }, "authorization.signed.response.alg": { "title": "Authorization response signature algorithm", "description": "JWA algorithm used for signing authorization response tokens when the response mode is jwt.", "type": "string" }, "client.offline.session.idle.timeout": { "title": "Client Offline Session Idle", "description": "Time a client offline session is allowed to be idle before it expires. Offline tokens are invalidated when a client offline session is expired. The option does not affect the global user SSO session. If not set, it uses the realm Offline Session Idle value.", "type": "string", "pattern": "^[0-9]*$" }, "client.offline.session.max.lifespan": { "title": "Client Offline Session Max", "description": "Max time before a client offline session is expired. If Offline Session Max Limited is enabled at realm level, offline tokens are invalidated when a client offline session is expired. The option does not affect the global user SSO session. If not set, it uses the realm Offline Session Max value.", "type": "string", "pattern": "^[0-9]*$" }, "client.session.idle.timeout": { "title": "Client Session Idle", "description": "Time a client session is allowed to be idle before it expires. Tokens are invalidated when a client session is expired. The option does not affect the global user SSO session. If not set, it uses the standard SSO Session Idle value.", "type": "string", "pattern": "^[0-9]*$" }, "client.session.max.lifespan": { "title": "Client Session Max", "description": "Max time before a client session is expired. Tokens are invalidated when a session is expired. The option does not affect the global user SSO session. If not set, it uses the standard SSO Session Max value.", "type": "string", "pattern": "^[0-9]*$" }, "client_credentials.use_refresh_token": { "title": "Use refresh tokens for client credentials grant", "description": "If this is on, a refresh_token will be created and added to the token response if the client_credentials grant is used. The OAuth 2.0 RFC6749 Section 4.4.3 states that a refresh_token should not be generated when client_credentials grant is used. If this is off then no refresh_token will be generated and the associated user session will be removed.", "type": "string", "enum": [ "true", "false", "" ] }, "exclude.session.state.from.auth.response": { "title": "Exclude Session State From Authentication Response", "description": "If this is on, the parameter 'session_state' will not be included in OpenID Connect Authentication Response. It is useful if the client uses an older OIDC / OAuth2 adapter, which does not support the 'session_state' parameter.", "type": "string", "enum": [ "true", "false", "" ] }, "id.token.encrypted.response.alg": { "title": "ID token encryption key management algorithm", "description": "JWA Algorithm used for key management in encrypting ID tokens. This option is needed if you want encrypted ID tokens. If left empty, ID Tokens are just signed, but not encrypted.", "type": "string" }, "id.token.encrypted.response.enc": { "title": "ID token encryption content encryption algorithm", "description": "JWA Algorithm used for content encryption in encrypting ID tokens. This option is needed just if you want encrypted ID tokens. If left empty, ID Tokens are just signed, but not encrypted.", "type": "string" }, "id.token.signed.response.alg": { "title": "ID token signature algorithm", "description": "JWA algorithm used for signing ID tokens.", "type": "string" }, "logoUri": { "title": "Logo URL", "description": "URL that references a logo for the Client application", "type": "string" }, "pkce.code.challenge.method": { "title": "Proof Key for Code Exchange Code Challenge Method", "description": "Choose which code challenge method for PKCE is used. If not specified, keycloak does not applies PKCE to a client unless the client sends an authorization request with appropriate code challenge and code exchange method.", "type": "string" }, "policyUri": { "title": "Policy URL", "description": "URL that the Relying Party Client provides to the End-User to read about the how the profile data will be used", "type": "string" }, "post.logout.redirect.uris": { "title": "Valid post logout redirect URIs", "description": "Valid URI pattern a browser can redirect to after a successful login. Simple wildcards are allowed such as 'http://example.com/*'. Relative path can be specified too such as /my/relative/path/*. Relative paths are relative to the client root URL, or if none is specified the auth server root URL is used. For SAML, you must set valid URI patterns if you are relying on the consumer service URL embedded with the login request.", "type": "string" }, "request.object.encryption.alg": { "title": "Request object encryption algorithm", "description": "JWE algorithm, which client needs to use when sending OIDC request object specified by 'request' or 'request_uri' parameters. If set to 'any', encryption is optional and any algorithm is allowed.", "type": "string" }, "request.object.encryption.enc": { "title": "Request object content encryption algorithm", "description": "JWE algorithm, which client needs to use when encrypting the content of the OIDC request object specified by 'request' or 'request_uri' parameters. If set to 'any', any algorithm is allowed.", "type": "string" }, "request.object.required": { "title": "Request object required", "description": "Specifies if the client needs to provide a request object with their authorization requests, and what method they can use for this. If set to \"not required\", providing a request object is optional. In all other cases, providing a request object is mandatory. If set to \"request\", the request object must be provided by value. If set to \"request_uri\", the request object must be provided by reference. If set to \"request or request_uri\", either method can be used.", "type": "string" }, "request.object.signature.alg": { "title": "Request object signature algorithm", "description": "JWA algorithm, which client needs to use when sending OIDC request object specified by 'request' or 'request_uri' parameters. If set to 'any', Request object can be signed by any algorithm (including 'none' ).", "type": "string" }, "require.pushed.authorization.requests": { "title": "Pushed authorization request required", "description": "Boolean parameter indicating whether the authorization server accepts authorization request data only via the pushed authorization request method.", "type": "string", "enum": [ "true", "false", "" ] }, "tls.client.certificate.bound.access.tokens": { "title": "OAuth 2.0 Mutual TLS Certificate Bound Access Tokens Enabled", "description": "This enables support for OAuth 2.0 Mutual TLS Certificate Bound Access Tokens, which means that keycloak bind an access token and a refresh token with a X.509 certificate of a token requesting client exchanged in mutual TLS between keycloak's Token Endpoint and this client. These tokens can be treated as Holder-of-Key tokens instead of bearer tokens.", "type": "string", "enum": [ "true", "false", "" ] }, "token.endpoint.auth.signing.alg": { "title": "Signature algorithm", "description": "The signature algorithm to use to sign documents. Note that 'SHA1' based algorithms are deprecated and can be removed in the future. It is recommended to stick to some more secure algorithm instead of '*_SHA1'.", "type": "string" }, "token.response.type.bearer.lower-case": { "title": "Use lower-case bearer type in token responses", "description": "If this is on, token responses will be set the with the type \"bearer\" in lower-case. By default, the server sets the type as \"Bearer\" as defined by RFC6750.", "type": "string", "enum": [ "true", "false", "" ] }, "tosUri": { "title": "Terms of service URL", "description": "URL that the Relying Party Client provides to the End-User to read about the Relying Party's terms of service", "type": "string" }, "use.refresh.tokens": { "title": "Use refresh tokens", "description": "If this is on, a refresh_token will be created and added to the token response. If this is off then no refresh_token will be generated.", "type": "string", "enum": [ "true", "false", "" ] }, "user.info.encrypted.response.alg": { "title": "User info response encryption key management algorithm", "description": "JWA Algorithm used for key management in encrypting User Info Endpoint responses. This option is needed if you want encrypted User Info Endpoint responses. If left empty, User Info Endpoint responses are not encrypted.", "type": "string" }, "user.info.encrypted.response.enc": { "title": "User info response encryption content encryption algorithm", "description": "JWA Algorithm used for content encryption in encrypting User Info Endpoint responses. If User Info response encryption key management algorithm is specified, the default for this value is A128CBC-HS256.", "type": "string" }, "user.info.response.signature.alg": { "title": "User info signed response algorithm", "description": "JWA algorithm used for signed User Info Endpoint response. If set to 'unsigned', User Info Response won't be signed and will be returned in application/json format.", "type": "string" }, "x509.allow.regex.pattern.comparison": { "title": "Allow regex pattern comparison", "description": "If OFF, then the Subject DN from given client certificate must exactly match the given DN from the 'Subject DN' property as described in the RFC8705 specification. The Subject DN can be in the RFC4514 or RFC1779 format. If ON, then the Subject DN from given client certificate should match regex specified by 'Subject DN' property.", "type": "string", "enum": [ "true", "false", "" ] }, "x509.subjectdn": { "title": "Subject DN", "description": "A regular expression for validating Subject DN in the Client Certificate. Use \"(.*?)(?:$)\" to match all kind of expressions.", "type": "string" } }, "additionalProperties": { "type": "string" } } ``` </details>
nullable: true
properties:
access.token.lifespan:
description: Max time before an access token is expired. This value is recommended to be short relative to the SSO timeout.
nullable: true
type: string
access.token.signed.response.alg:
description: JWA algorithm used for signing access tokens.
nullable: true
type: string
authorization.encrypted.response.alg:
description: JWA Algorithm used for key management in encrypting the authorization response when the response mode is jwt. This option is needed if you want encrypted authorization response. If left empty, the authorization response is just signed, but not encrypted.
nullable: true
type: string
authorization.encrypted.response.enc:
description: JWA Algorithm used for content encryption in encrypting the authorization response when the response mode is jwt. This option is needed if you want encrypted authorization response. If left empty, the authorization response is just signed, but not encrypted.
nullable: true
type: string
authorization.signed.response.alg:
description: JWA algorithm used for signing authorization response tokens when the response mode is jwt.
nullable: true
type: string
client.offline.session.idle.timeout:
description: Time a client offline session is allowed to be idle before it expires. Offline tokens are invalidated when a client offline session is expired. The option does not affect the global user SSO session. If not set, it uses the realm Offline Session Idle value.
nullable: true
type: string
client.offline.session.max.lifespan:
description: Max time before a client offline session is expired. If Offline Session Max Limited is enabled at realm level, offline tokens are invalidated when a client offline session is expired. The option does not affect the global user SSO session. If not set, it uses the realm Offline Session Max value.
nullable: true
type: string
client.session.idle.timeout:
description: Time a client session is allowed to be idle before it expires. Tokens are invalidated when a client session is expired. The option does not affect the global user SSO session. If not set, it uses the standard SSO Session Idle value.
nullable: true
type: string
client.session.max.lifespan:
description: Max time before a client session is expired. Tokens are invalidated when a session is expired. The option does not affect the global user SSO session. If not set, it uses the standard SSO Session Max value.
nullable: true
type: string
client_credentials.use_refresh_token:
description: If this is on, a refresh_token will be created and added to the token response if the client_credentials grant is used. The OAuth 2.0 RFC6749 Section 4.4.3 states that a refresh_token should not be generated when client_credentials grant is used. If this is off then no refresh_token will be generated and the associated user session will be removed.
enum:
- 'true'
- 'false'
- ''
nullable: true
type: string
exclude.session.state.from.auth.response:
description: If this is on, the parameter 'session_state' will not be included in OpenID Connect Authentication Response. It is useful if the client uses an older OIDC / OAuth2 adapter, which does not support the 'session_state' parameter.
enum:
- 'true'
- 'false'
- ''
nullable: true
type: string
id.token.encrypted.response.alg:
description: JWA Algorithm used for key management in encrypting ID tokens. This option is needed if you want encrypted ID tokens. If left empty, ID Tokens are just signed, but not encrypted.
nullable: true
type: string
id.token.encrypted.response.enc:
description: JWA Algorithm used for content encryption in encrypting ID tokens. This option is needed just if you want encrypted ID tokens. If left empty, ID Tokens are just signed, but not encrypted.
nullable: true
type: string
id.token.signed.response.alg:
description: JWA algorithm used for signing ID tokens.
nullable: true
type: string
logoUri:
description: URL that references a logo for the Client application
nullable: true
type: string
pkce.code.challenge.method:
description: Choose which code challenge method for PKCE is used. If not specified, keycloak does not applies PKCE to a client unless the client sends an authorization request with appropriate code challenge and code exchange method.
nullable: true
type: string
policyUri:
description: URL that the Relying Party Client provides to the End-User to read about the how the profile data will be used
nullable: true
type: string
post.logout.redirect.uris:
description: Valid URI pattern a browser can redirect to after a successful login. Simple wildcards are allowed such as 'http://example.com/*'. Relative path can be specified too such as /my/relative/path/*. Relative paths are relative to the client root URL, or if none is specified the auth server root URL is used. For SAML, you must set valid URI patterns if you are relying on the consumer service URL embedded with the login request.
nullable: true
type: string
request.object.encryption.alg:
description: JWE algorithm, which client needs to use when sending OIDC request object specified by 'request' or 'request_uri' parameters. If set to 'any', encryption is optional and any algorithm is allowed.
nullable: true
type: string
request.object.encryption.enc:
description: JWE algorithm, which client needs to use when encrypting the content of the OIDC request object specified by 'request' or 'request_uri' parameters. If set to 'any', any algorithm is allowed.
nullable: true
type: string
request.object.required:
description: Specifies if the client needs to provide a request object with their authorization requests, and what method they can use for this. If set to "not required", providing a request object is optional. In all other cases, providing a request object is mandatory. If set to "request", the request object must be provided by value. If set to "request_uri", the request object must be provided by reference. If set to "request or request_uri", either method can be used.
nullable: true
type: string
request.object.signature.alg:
description: JWA algorithm, which client needs to use when sending OIDC request object specified by 'request' or 'request_uri' parameters. If set to 'any', Request object can be signed by any algorithm (including 'none' ).
nullable: true
type: string
require.pushed.authorization.requests:
description: Boolean parameter indicating whether the authorization server accepts authorization request data only via the pushed authorization request method.
enum:
- 'true'
- 'false'
- ''
nullable: true
type: string
tls.client.certificate.bound.access.tokens:
description: This enables support for OAuth 2.0 Mutual TLS Certificate Bound Access Tokens, which means that keycloak bind an access token and a refresh token with a X.509 certificate of a token requesting client exchanged in mutual TLS between keycloak's Token Endpoint and this client. These tokens can be treated as Holder-of-Key tokens instead of bearer tokens.
enum:
- 'true'
- 'false'
- ''
nullable: true
type: string
token.endpoint.auth.signing.alg:
description: The signature algorithm to use to sign documents. Note that 'SHA1' based algorithms are deprecated and can be removed in the future. It is recommended to stick to some more secure algorithm instead of '*_SHA1'.
nullable: true
type: string
token.response.type.bearer.lower-case:
description: If this is on, token responses will be set the with the type "bearer" in lower-case. By default, the server sets the type as "Bearer" as defined by RFC6750.
enum:
- 'true'
- 'false'
- ''
nullable: true
type: string
tosUri:
description: URL that the Relying Party Client provides to the End-User to read about the Relying Party's terms of service
nullable: true
type: string
use.refresh.tokens:
description: If this is on, a refresh_token will be created and added to the token response. If this is off then no refresh_token will be generated.
enum:
- 'true'
- 'false'
- ''
nullable: true
type: string
user.info.encrypted.response.alg:
description: JWA Algorithm used for key management in encrypting User Info Endpoint responses. This option is needed if you want encrypted User Info Endpoint responses. If left empty, User Info Endpoint responses are not encrypted.
nullable: true
type: string
user.info.encrypted.response.enc:
description: JWA Algorithm used for content encryption in encrypting User Info Endpoint responses. If User Info response encryption key management algorithm is specified, the default for this value is A128CBC-HS256.
nullable: true
type: string
user.info.response.signature.alg:
description: JWA algorithm used for signed User Info Endpoint response. If set to 'unsigned', User Info Response won't be signed and will be returned in application/json format.
nullable: true
type: string
x509.allow.regex.pattern.comparison:
description: If OFF, then the Subject DN from given client certificate must exactly match the given DN from the 'Subject DN' property as described in the RFC8705 specification. The Subject DN can be in the RFC4514 or RFC1779 format. If ON, then the Subject DN from given client certificate should match regex specified by 'Subject DN' property.
enum:
- 'true'
- 'false'
- ''
nullable: true
type: string
x509.subjectdn:
description: A regular expression for validating Subject DN in the Client Certificate. Use "(.*?)(?:$)" to match all kind of expressions.
nullable: true
type: string
type: object
authenticationFlowBindingOverrides:
description: |-
AuthenticationFlowOverrides
<details><summary>JSON schema</summary>
```json { "title": "Authentication flow overrides", "type": "object", "properties": { "browser": { "title": "Browser Flow", "description": "Select the flow you want to use for browser authentication.", "type": "string" }, "direct_grant": { "title": "Direct Grant Flow", "description": "Select the flow you want to use for direct grant authentication.", "type": "string" } }, "additionalProperties": { "type": "string" } } ``` </details>
nullable: true
properties:
browser:
description: Select the flow you want to use for browser authentication.
nullable: true
type: string
direct_grant:
description: Select the flow you want to use for direct grant authentication.
nullable: true
type: string
type: object
authorizationServicesEnabled:
description: Enable/Disable fine-grained authorization support for a client.
nullable: true
type: boolean
authorizationSettings:
description: |-
ResourceServerRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "allowRemoteResourceManagement": { "type": "boolean" }, "authorizationSchema": { "$ref": "#/$defs/AuthorizationSchema" }, "clientId": { "type": "string" }, "decisionStrategy": { "$ref": "#/$defs/DecisionStrategy" }, "id": { "type": "string" }, "name": { "type": "string" }, "policies": { "type": "array", "items": { "$ref": "#/$defs/PolicyRepresentation" } }, "policyEnforcementMode": { "$ref": "#/$defs/PolicyEnforcementMode" }, "resources": { "type": "array", "items": { "$ref": "#/$defs/ResourceRepresentation" } }, "scopes": { "type": "array", "items": { "$ref": "#/$defs/ScopeRepresentation" } } }, "additionalProperties": false } ``` </details>
nullable: true
properties:
allowRemoteResourceManagement:
nullable: true
type: boolean
authorizationSchema:
description: |-
AuthorizationSchema
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "resourceTypes": { "type": "object", "additionalProperties": { "$ref": "#/$defs/ResourceType" } } }, "additionalProperties": false } ``` </details>
nullable: true
properties:
resourceTypes:
additionalProperties:
description: |-
ResourceType
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "scopes": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "type": { "type": "string" } }, "additionalProperties": false } ``` </details>
properties:
scopes:
items:
type: string
nullable: true
type: array
type:
nullable: true
type: string
type: object
type: object
type: object
clientId:
nullable: true
type: string
decisionStrategy:
description: |-
DecisionStrategy
<details><summary>JSON schema</summary>
```json { "type": "string", "enum": [ "AFFIRMATIVE", "UNANIMOUS", "CONSENSUS" ] } ``` </details>
enum:
- AFFIRMATIVE
- UNANIMOUS
- CONSENSUS
nullable: true
type: string
id:
nullable: true
type: string
name:
nullable: true
type: string
policies:
items:
description: |-
PolicyRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "config": { "type": "object", "additionalProperties": { "type": "string" } }, "decisionStrategy": { "$ref": "#/$defs/DecisionStrategy" }, "description": { "type": "string" }, "id": { "type": "string" }, "logic": { "$ref": "#/$defs/Logic" }, "name": { "type": "string" }, "owner": { "type": "string" }, "policies": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "resourceType": { "type": "string" }, "resources": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "resourcesData": { "type": "array", "items": { "$ref": "#/$defs/ResourceRepresentation" }, "uniqueItems": true }, "scopes": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "scopesData": { "type": "array", "items": { "$ref": "#/$defs/ScopeRepresentation" }, "uniqueItems": true }, "type": { "type": "string" } }, "additionalProperties": false } ``` </details>
properties:
config:
additionalProperties:
type: string
type: object
decisionStrategy:
description: |-
DecisionStrategy
<details><summary>JSON schema</summary>
```json { "type": "string", "enum": [ "AFFIRMATIVE", "UNANIMOUS", "CONSENSUS" ] } ``` </details>
enum:
- AFFIRMATIVE
- UNANIMOUS
- CONSENSUS
nullable: true
type: string
description:
nullable: true
type: string
id:
nullable: true
type: string
logic:
description: |-
Logic
<details><summary>JSON schema</summary>
```json { "type": "string", "enum": [ "POSITIVE", "NEGATIVE" ] } ``` </details>
enum:
- POSITIVE
- NEGATIVE
nullable: true
type: string
name:
nullable: true
type: string
owner:
nullable: true
type: string
policies:
items:
type: string
nullable: true
type: array
resourceType:
nullable: true
type: string
resources:
items:
type: string
nullable: true
type: array
resourcesData:
items:
description: |-
ResourceRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "_id": { "type": "string" }, "attributes": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } }, "displayName": { "type": "string" }, "icon_uri": { "type": "string" }, "name": { "type": "string" }, "owner": { "type": "object", "allOf": [ { "$ref": "#/$defs/ResourceOwnerRepresentation" } ] }, "ownerManagedAccess": { "type": "boolean" }, "scopes": { "type": "array", "items": { "$ref": "#/$defs/ScopeRepresentation" }, "uniqueItems": true }, "scopesUma": { "type": "array", "items": { "$ref": "#/$defs/ScopeRepresentation" }, "uniqueItems": true }, "type": { "type": "string" }, "uri": { "type": "string" }, "uris": { "type": "array", "items": { "type": "string" }, "uniqueItems": true } }, "additionalProperties": false } ``` </details>
properties:
_id:
nullable: true
type: string
attributes:
additionalProperties:
items:
type: string
type: array
type: object
displayName:
nullable: true
type: string
icon_uri:
nullable: true
type: string
name:
nullable: true
type: string
owner:
description: |-
ResourceOwnerRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "additionalProperties": false } ``` </details>
nullable: true
properties:
id:
nullable: true
type: string
name:
nullable: true
type: string
type: object
ownerManagedAccess:
nullable: true
type: boolean
scopes:
items:
description: |-
ScopeRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "displayName": { "type": "string" }, "iconUri": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "policies": { "type": "array", "items": { "$ref": "#/$defs/PolicyRepresentation" } }, "resources": { "type": "array", "items": { "$ref": "#/$defs/ResourceRepresentation" } } }, "additionalProperties": false } ``` </details>
properties:
displayName:
nullable: true
type: string
iconUri:
nullable: true
type: string
id:
nullable: true
type: string
name:
nullable: true
type: string
type: object
x-kubernetes-preserve-unknown-fields: true
nullable: true
type: array
scopesUma:
items:
description: |-
ScopeRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "displayName": { "type": "string" }, "iconUri": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "policies": { "type": "array", "items": { "$ref": "#/$defs/PolicyRepresentation" } }, "resources": { "type": "array", "items": { "$ref": "#/$defs/ResourceRepresentation" } } }, "additionalProperties": false } ``` </details>
properties:
displayName:
nullable: true
type: string
iconUri:
nullable: true
type: string
id:
nullable: true
type: string
name:
nullable: true
type: string
type: object
x-kubernetes-preserve-unknown-fields: true
nullable: true
type: array
type:
nullable: true
type: string
uri:
nullable: true
type: string
uris:
items:
type: string
nullable: true
type: array
type: object
nullable: true
type: array
scopes:
items:
type: string
nullable: true
type: array
scopesData:
items:
description: |-
ScopeRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "displayName": { "type": "string" }, "iconUri": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "policies": { "type": "array", "items": { "$ref": "#/$defs/PolicyRepresentation" } }, "resources": { "type": "array", "items": { "$ref": "#/$defs/ResourceRepresentation" } } }, "additionalProperties": false } ``` </details>
properties:
displayName:
nullable: true
type: string
iconUri:
nullable: true
type: string
id:
nullable: true
type: string
name:
nullable: true
type: string
resources:
items:
description: |-
ResourceRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "_id": { "type": "string" }, "attributes": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } }, "displayName": { "type": "string" }, "icon_uri": { "type": "string" }, "name": { "type": "string" }, "owner": { "type": "object", "allOf": [ { "$ref": "#/$defs/ResourceOwnerRepresentation" } ] }, "ownerManagedAccess": { "type": "boolean" }, "scopes": { "type": "array", "items": { "$ref": "#/$defs/ScopeRepresentation" }, "uniqueItems": true }, "scopesUma": { "type": "array", "items": { "$ref": "#/$defs/ScopeRepresentation" }, "uniqueItems": true }, "type": { "type": "string" }, "uri": { "type": "string" }, "uris": { "type": "array", "items": { "type": "string" }, "uniqueItems": true } }, "additionalProperties": false } ``` </details>
properties:
_id:
nullable: true
type: string
attributes:
additionalProperties:
items:
type: string
type: array
type: object
displayName:
nullable: true
type: string
icon_uri:
nullable: true
type: string
name:
nullable: true
type: string
owner:
description: |-
ResourceOwnerRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "additionalProperties": false } ``` </details>
nullable: true
properties:
id:
nullable: true
type: string
name:
nullable: true
type: string
type: object
ownerManagedAccess:
nullable: true
type: boolean
type:
nullable: true
type: string
uri:
nullable: true
type: string
uris:
items:
type: string
nullable: true
type: array
type: object
x-kubernetes-preserve-unknown-fields: true
type: array
type: object
x-kubernetes-preserve-unknown-fields: true
nullable: true
type: array
type:
nullable: true
type: string
type: object
type: array
policyEnforcementMode:
description: |-
PolicyEnforcementMode
<details><summary>JSON schema</summary>
```json { "type": "string", "enum": [ "ENFORCING", "PERMISSIVE", "DISABLED" ] } ``` </details>
enum:
- ENFORCING
- PERMISSIVE
- DISABLED
nullable: true
type: string
resources:
items:
description: |-
ResourceRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "_id": { "type": "string" }, "attributes": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } }, "displayName": { "type": "string" }, "icon_uri": { "type": "string" }, "name": { "type": "string" }, "owner": { "type": "object", "allOf": [ { "$ref": "#/$defs/ResourceOwnerRepresentation" } ] }, "ownerManagedAccess": { "type": "boolean" }, "scopes": { "type": "array", "items": { "$ref": "#/$defs/ScopeRepresentation" }, "uniqueItems": true }, "scopesUma": { "type": "array", "items": { "$ref": "#/$defs/ScopeRepresentation" }, "uniqueItems": true }, "type": { "type": "string" }, "uri": { "type": "string" }, "uris": { "type": "array", "items": { "type": "string" }, "uniqueItems": true } }, "additionalProperties": false } ``` </details>
properties:
_id:
nullable: true
type: string
attributes:
additionalProperties:
items:
type: string
type: array
type: object
displayName:
nullable: true
type: string
icon_uri:
nullable: true
type: string
name:
nullable: true
type: string
owner:
description: |-
ResourceOwnerRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "additionalProperties": false } ``` </details>
nullable: true
properties:
id:
nullable: true
type: string
name:
nullable: true
type: string
type: object
ownerManagedAccess:
nullable: true
type: boolean
scopes:
items:
description: |-
ScopeRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "displayName": { "type": "string" }, "iconUri": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "policies": { "type": "array", "items": { "$ref": "#/$defs/PolicyRepresentation" } }, "resources": { "type": "array", "items": { "$ref": "#/$defs/ResourceRepresentation" } } }, "additionalProperties": false } ``` </details>
properties:
displayName:
nullable: true
type: string
iconUri:
nullable: true
type: string
id:
nullable: true
type: string
name:
nullable: true
type: string
policies:
items:
description: |-
PolicyRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "config": { "type": "object", "additionalProperties": { "type": "string" } }, "decisionStrategy": { "$ref": "#/$defs/DecisionStrategy" }, "description": { "type": "string" }, "id": { "type": "string" }, "logic": { "$ref": "#/$defs/Logic" }, "name": { "type": "string" }, "owner": { "type": "string" }, "policies": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "resourceType": { "type": "string" }, "resources": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "resourcesData": { "type": "array", "items": { "$ref": "#/$defs/ResourceRepresentation" }, "uniqueItems": true }, "scopes": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "scopesData": { "type": "array", "items": { "$ref": "#/$defs/ScopeRepresentation" }, "uniqueItems": true }, "type": { "type": "string" } }, "additionalProperties": false } ``` </details>
properties:
config:
additionalProperties:
type: string
type: object
decisionStrategy:
description: |-
DecisionStrategy
<details><summary>JSON schema</summary>
```json { "type": "string", "enum": [ "AFFIRMATIVE", "UNANIMOUS", "CONSENSUS" ] } ``` </details>
enum:
- AFFIRMATIVE
- UNANIMOUS
- CONSENSUS
nullable: true
type: string
description:
nullable: true
type: string
id:
nullable: true
type: string
logic:
description: |-
Logic
<details><summary>JSON schema</summary>
```json { "type": "string", "enum": [ "POSITIVE", "NEGATIVE" ] } ``` </details>
enum:
- POSITIVE
- NEGATIVE
nullable: true
type: string
name:
nullable: true
type: string
owner:
nullable: true
type: string
policies:
items:
type: string
nullable: true
type: array
resourceType:
nullable: true
type: string
resources:
items:
type: string
nullable: true
type: array
scopes:
items:
type: string
nullable: true
type: array
type:
nullable: true
type: string
type: object
x-kubernetes-preserve-unknown-fields: true
type: array
type: object
x-kubernetes-preserve-unknown-fields: true
nullable: true
type: array
scopesUma:
items:
description: |-
ScopeRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "displayName": { "type": "string" }, "iconUri": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "policies": { "type": "array", "items": { "$ref": "#/$defs/PolicyRepresentation" } }, "resources": { "type": "array", "items": { "$ref": "#/$defs/ResourceRepresentation" } } }, "additionalProperties": false } ``` </details>
properties:
displayName:
nullable: true
type: string
iconUri:
nullable: true
type: string
id:
nullable: true
type: string
name:
nullable: true
type: string
policies:
items:
description: |-
PolicyRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "config": { "type": "object", "additionalProperties": { "type": "string" } }, "decisionStrategy": { "$ref": "#/$defs/DecisionStrategy" }, "description": { "type": "string" }, "id": { "type": "string" }, "logic": { "$ref": "#/$defs/Logic" }, "name": { "type": "string" }, "owner": { "type": "string" }, "policies": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "resourceType": { "type": "string" }, "resources": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "resourcesData": { "type": "array", "items": { "$ref": "#/$defs/ResourceRepresentation" }, "uniqueItems": true }, "scopes": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "scopesData": { "type": "array", "items": { "$ref": "#/$defs/ScopeRepresentation" }, "uniqueItems": true }, "type": { "type": "string" } }, "additionalProperties": false } ``` </details>
properties:
config:
additionalProperties:
type: string
type: object
decisionStrategy:
description: |-
DecisionStrategy
<details><summary>JSON schema</summary>
```json { "type": "string", "enum": [ "AFFIRMATIVE", "UNANIMOUS", "CONSENSUS" ] } ``` </details>
enum:
- AFFIRMATIVE
- UNANIMOUS
- CONSENSUS
nullable: true
type: string
description:
nullable: true
type: string
id:
nullable: true
type: string
logic:
description: |-
Logic
<details><summary>JSON schema</summary>
```json { "type": "string", "enum": [ "POSITIVE", "NEGATIVE" ] } ``` </details>
enum:
- POSITIVE
- NEGATIVE
nullable: true
type: string
name:
nullable: true
type: string
owner:
nullable: true
type: string
policies:
items:
type: string
nullable: true
type: array
resourceType:
nullable: true
type: string
resources:
items:
type: string
nullable: true
type: array
scopes:
items:
type: string
nullable: true
type: array
type:
nullable: true
type: string
type: object
x-kubernetes-preserve-unknown-fields: true
type: array
type: object
x-kubernetes-preserve-unknown-fields: true
nullable: true
type: array
type:
nullable: true
type: string
uri:
nullable: true
type: string
uris:
items:
type: string
nullable: true
type: array
type: object
type: array
scopes:
items:
description: |-
ScopeRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "displayName": { "type": "string" }, "iconUri": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "policies": { "type": "array", "items": { "$ref": "#/$defs/PolicyRepresentation" } }, "resources": { "type": "array", "items": { "$ref": "#/$defs/ResourceRepresentation" } } }, "additionalProperties": false } ``` </details>
properties:
displayName:
nullable: true
type: string
iconUri:
nullable: true
type: string
id:
nullable: true
type: string
name:
nullable: true
type: string
policies:
items:
description: |-
PolicyRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "config": { "type": "object", "additionalProperties": { "type": "string" } }, "decisionStrategy": { "$ref": "#/$defs/DecisionStrategy" }, "description": { "type": "string" }, "id": { "type": "string" }, "logic": { "$ref": "#/$defs/Logic" }, "name": { "type": "string" }, "owner": { "type": "string" }, "policies": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "resourceType": { "type": "string" }, "resources": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "resourcesData": { "type": "array", "items": { "$ref": "#/$defs/ResourceRepresentation" }, "uniqueItems": true }, "scopes": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "scopesData": { "type": "array", "items": { "$ref": "#/$defs/ScopeRepresentation" }, "uniqueItems": true }, "type": { "type": "string" } }, "additionalProperties": false } ``` </details>
properties:
config:
additionalProperties:
type: string
type: object
decisionStrategy:
description: |-
DecisionStrategy
<details><summary>JSON schema</summary>
```json { "type": "string", "enum": [ "AFFIRMATIVE", "UNANIMOUS", "CONSENSUS" ] } ``` </details>
enum:
- AFFIRMATIVE
- UNANIMOUS
- CONSENSUS
nullable: true
type: string
description:
nullable: true
type: string
id:
nullable: true
type: string
logic:
description: |-
Logic
<details><summary>JSON schema</summary>
```json { "type": "string", "enum": [ "POSITIVE", "NEGATIVE" ] } ``` </details>
enum:
- POSITIVE
- NEGATIVE
nullable: true
type: string
name:
nullable: true
type: string
owner:
nullable: true
type: string
policies:
items:
type: string
nullable: true
type: array
resourceType:
nullable: true
type: string
resources:
items:
type: string
nullable: true
type: array
resourcesData:
items:
description: |-
ResourceRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "_id": { "type": "string" }, "attributes": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } }, "displayName": { "type": "string" }, "icon_uri": { "type": "string" }, "name": { "type": "string" }, "owner": { "type": "object", "allOf": [ { "$ref": "#/$defs/ResourceOwnerRepresentation" } ] }, "ownerManagedAccess": { "type": "boolean" }, "scopes": { "type": "array", "items": { "$ref": "#/$defs/ScopeRepresentation" }, "uniqueItems": true }, "scopesUma": { "type": "array", "items": { "$ref": "#/$defs/ScopeRepresentation" }, "uniqueItems": true }, "type": { "type": "string" }, "uri": { "type": "string" }, "uris": { "type": "array", "items": { "type": "string" }, "uniqueItems": true } }, "additionalProperties": false } ``` </details>
properties:
_id:
nullable: true
type: string
attributes:
additionalProperties:
items:
type: string
type: array
type: object
displayName:
nullable: true
type: string
icon_uri:
nullable: true
type: string
name:
nullable: true
type: string
owner:
description: |-
ResourceOwnerRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "additionalProperties": false } ``` </details>
nullable: true
properties:
id:
nullable: true
type: string
name:
nullable: true
type: string
type: object
ownerManagedAccess:
nullable: true
type: boolean
type:
nullable: true
type: string
uri:
nullable: true
type: string
uris:
items:
type: string
nullable: true
type: array
type: object
x-kubernetes-preserve-unknown-fields: true
nullable: true
type: array
scopes:
items:
type: string
nullable: true
type: array
type:
nullable: true
type: string
type: object
x-kubernetes-preserve-unknown-fields: true
type: array
resources:
items:
description: |-
ResourceRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "_id": { "type": "string" }, "attributes": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } }, "displayName": { "type": "string" }, "icon_uri": { "type": "string" }, "name": { "type": "string" }, "owner": { "type": "object", "allOf": [ { "$ref": "#/$defs/ResourceOwnerRepresentation" } ] }, "ownerManagedAccess": { "type": "boolean" }, "scopes": { "type": "array", "items": { "$ref": "#/$defs/ScopeRepresentation" }, "uniqueItems": true }, "scopesUma": { "type": "array", "items": { "$ref": "#/$defs/ScopeRepresentation" }, "uniqueItems": true }, "type": { "type": "string" }, "uri": { "type": "string" }, "uris": { "type": "array", "items": { "type": "string" }, "uniqueItems": true } }, "additionalProperties": false } ``` </details>
properties:
_id:
nullable: true
type: string
attributes:
additionalProperties:
items:
type: string
type: array
type: object
displayName:
nullable: true
type: string
icon_uri:
nullable: true
type: string
name:
nullable: true
type: string
owner:
description: |-
ResourceOwnerRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "additionalProperties": false } ``` </details>
nullable: true
properties:
id:
nullable: true
type: string
name:
nullable: true
type: string
type: object
ownerManagedAccess:
nullable: true
type: boolean
type:
nullable: true
type: string
uri:
nullable: true
type: string
uris:
items:
type: string
nullable: true
type: array
type: object
x-kubernetes-preserve-unknown-fields: true
type: array
type: object
type: array
type: object
baseUrl:
description: Default URL to use when the auth server needs to redirect or link back to the client.
nullable: true
type: string
bearerOnly:
description: This is a special OIDC type. This client only allows bearer token requests and cannot participate in browser logins.
nullable: true
type: boolean
clientAuthenticatorType:
description: Client Authenticator used for authentication of this client against Keycloak server
enum:
- client-jwt
- client-secret
- client-secret-jwt
- client-x509
nullable: true
type: string
clientId:
description: The client identifier registered with the identity provider.
nullable: true
type: string
clientTemplate:
nullable: true
type: string
consentRequired:
description: If enabled, users have to consent to client access.
nullable: true
type: boolean
defaultClientScopes:
items:
type: string
type: array
defaultRoles:
items:
type: string
type: array
description:
description: Help text for the description of the new flow
nullable: true
type: string
directAccessGrantsEnabled:
description: This enables support for Direct Access Grants, which means that client has access to username/password of user and exchange it directly with Keycloak server for access token. In terms of OAuth2 specification, this enables support of 'Resource Owner Password Credentials Grant' for this client.
nullable: true
type: boolean
directGrantsOnly:
nullable: true
type: boolean
enabled:
description: Disabled clients cannot initiate a login or have obtained access tokens.
nullable: true
type: boolean
frontchannelLogout:
description: When true, logout requires a browser redirect to client. When false, server performs a background invocation for logout.
nullable: true
type: boolean
fullScopeAllowed:
description: Allows you to disable all restrictions.
nullable: true
type: boolean
id:
nullable: true
type: string
implicitFlowEnabled:
description: This enables support for OpenID Connect redirect based authentication without authorization code. In terms of OpenID Connect or OAuth2 specifications, this enables support of 'Implicit Flow' for this client.
nullable: true
type: boolean
name:
description: 'Specifies display name of the client. For example ''My Client''. Supports keys for localized values as well. For example: ${my_client}.'
nullable: true
type: string
nodeReRegistrationTimeout:
description: Interval to specify max time for registered clients cluster nodes to re-register. If cluster node will not send re-registration request to Keycloak within this time, it will be unregistered from Keycloak.
format: int32
nullable: true
type: integer
notBefore:
format: int32
nullable: true
type: integer
optionalClientScopes:
items:
type: string
type: array
origin:
nullable: true
type: string
protocol:
nullable: true
type: string
protocolMappers:
items:
description: |-
ProtocolMapperRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "config": { "type": "object", "additionalProperties": { "type": "string" } }, "consentRequired": { "type": "boolean" }, "consentText": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "protocol": { "type": "string", "enum": [ "openid-connect", "saml" ] }, "protocolMapper": { "type": "string" } }, "additionalProperties": false } ``` </details>
properties:
config:
additionalProperties:
type: string
type: object
consentRequired:
nullable: true
type: boolean
consentText:
nullable: true
type: string
id:
nullable: true
type: string
name:
nullable: true
type: string
protocol:
description: |-
ProtocolMapperRepresentationProtocol
<details><summary>JSON schema</summary>
```json { "type": "string", "enum": [ "openid-connect", "saml" ] } ``` </details>
enum:
- openid-connect
- saml
nullable: true
type: string
protocolMapper:
nullable: true
type: string
type: object
type: array
publicClient:
description: This defines the type of the OIDC client. When it's ON, the OIDC type is set to confidential access type. When it's OFF, it is set to public access type.
nullable: true
type: boolean
redirectUris:
description: Valid URI pattern a browser can redirect to after a successful login. Simple wildcards are allowed such as 'http://example.com/*'. Relative path can be specified too such as /my/relative/path/*. Relative paths are relative to the client root URL, or if none is specified the auth server root URL is used. For SAML, you must set valid URI patterns if you are relying on the consumer service URL embedded with the login request.
items:
type: string
type: array
registeredNodes:
additionalProperties:
format: int32
type: integer
type: object
registrationAccessToken:
description: The registration access token provides access for clients to the client registration service.
nullable: true
type: string
rootUrl:
description: Root URL appended to relative URLs
nullable: true
type: string
secret:
nullable: true
type: string
serviceAccountsEnabled:
description: Allows you to authenticate this client to Keycloak and retrieve access token dedicated to this client. In terms of OAuth2 specification, this enables support of 'Client Credentials Grant' for this client.
nullable: true
type: boolean
standardFlowEnabled:
description: This enables standard OpenID Connect redirect based authentication with authorization code. In terms of OpenID Connect or OAuth2 specifications, this enables support of 'Authorization Code Flow' for this client.
nullable: true
type: boolean
surrogateAuthRequired:
nullable: true
type: boolean
type:
nullable: true
type: string
useTemplateConfig:
nullable: true
type: boolean
useTemplateMappers:
nullable: true
type: boolean
useTemplateScope:
nullable: true
type: boolean
webOrigins:
description: Allowed CORS origins. To permit all origins of Valid Redirect URIs, add '+'. This does not include the '*' wildcard though. To permit all origins, explicitly add '*'.
items:
type: string
type: array
type: object
adminPermissionsEnabled:
nullable: true
type: boolean
adminTheme:
nullable: true
type: string
applicationScopeMappings:
additionalProperties:
items:
description: |-
ScopeMappingRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "client": { "type": "string" }, "clientScope": { "type": "string" }, "clientTemplate": { "type": "string" }, "roles": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "self": { "type": "string" } }, "additionalProperties": false } ``` </details>
properties:
client:
nullable: true
type: string
clientScope:
nullable: true
type: string
clientTemplate:
nullable: true
type: string
roles:
items:
type: string
nullable: true
type: array
self:
nullable: true
type: string
type: object
type: array
type: object
attributes:
description: |-
RealmRepresentationAttributes
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "adminEventsExpiration": { "title": "Expiration", "description": "Sets the expiration for events. Expired events are periodically deleted from the database.", "type": "string", "pattern": "^[0-9]*$" }, "cibaAuthRequestedUserHint": { "title": "Authentication Requested User Hint", "description": "The way of identifying the end-user for whom authentication is being requested. Currently only \"login_hint\" is supported.", "type": "string", "enum": [ "login_hint" ] }, "cibaBackchannelTokenDeliveryMode": { "title": "Backchannel Token Delivery Mode", "description": "Specifies how the CD (Consumption Device) gets the authentication result and related tokens. This mode will be used by default for the CIBA clients, which do not have other mode explicitly set.", "type": "string", "enum": [ "ping", "poll" ] }, "cibaExpiresIn": { "title": "Expires In", "description": "The expiration time of the \"auth_req_id\" in seconds since the authentication request was received.", "type": "string", "pattern": "^[0-9]*$" }, "cibaInterval": { "title": "Interval", "description": "The minimum amount of time in seconds that the CD (Consumption Device) must wait between polling requests to the token endpoint. If set to 0, the CD must use 5 as the default value according to the CIBA specification.", "type": "string", "pattern": "^[0-9]*$" }, "frontendUrl": { "title": "Frontend URL", "description": "Set the frontend URL for the realm. Use in combination with the default hostname provider to override the base URL for frontend requests for a specific realm.", "type": "string" } }, "additionalProperties": { "type": "string" } } ``` </details>
nullable: true
properties:
adminEventsExpiration:
description: Sets the expiration for events. Expired events are periodically deleted from the database.
nullable: true
type: string
cibaAuthRequestedUserHint:
description: The way of identifying the end-user for whom authentication is being requested. Currently only "login_hint" is supported.
enum:
- login_hint
nullable: true
type: string
cibaBackchannelTokenDeliveryMode:
description: Specifies how the CD (Consumption Device) gets the authentication result and related tokens. This mode will be used by default for the CIBA clients, which do not have other mode explicitly set.
enum:
- ping
- poll
nullable: true
type: string
cibaExpiresIn:
description: The expiration time of the "auth_req_id" in seconds since the authentication request was received.
nullable: true
type: string
cibaInterval:
description: The minimum amount of time in seconds that the CD (Consumption Device) must wait between polling requests to the token endpoint. If set to 0, the CD must use 5 as the default value according to the CIBA specification.
nullable: true
type: string
frontendUrl:
description: Set the frontend URL for the realm. Use in combination with the default hostname provider to override the base URL for frontend requests for a specific realm.
nullable: true
type: string
type: object
browserFlow:
nullable: true
type: string
browserSecurityHeaders:
description: |-
RealmRepresentationBrowserSecurityHeaders
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "contentSecurityPolicy": { "title": "Content-Security-Policy", "description": "Default value prevents pages from being included by non-origin iframes. <1>Learn more</1>", "type": "string" }, "contentSecurityPolicyReportOnly": { "title": "Content-Security-Policy-Report-Only", "description": "For testing Content Security Policies <1>Learn more</1>", "type": "string" }, "strictTransportSecurity": { "title": "HTTP Strict Transport Security (HSTS)", "description": "The Strict-Transport-Security HTTP header tells browsers to always use HTTPS. Once a browser sees this header, it will only visit the site over HTTPS for the time specified (1 year) at max-age, including the subdomains. <1>Learn more</1>", "type": "string" }, "xContentTypeOptions": { "title": "X-Content-Type-Options", "description": "The default value prevents Internet Explorer and Google Chrome from MIME-sniffing a response away from the declared content-type. <1>Learn more</1>", "type": "string" }, "xFrameOptions": { "title": "X-Frame-Options", "description": "Default value prevents pages from being included by non-origin iframes. <1>Learn more</1>", "type": "string" }, "xRobotsTag": { "title": "X-Robots-Tag", "description": "Prevent pages from appearing in search engines. <1>Learn more</1>", "type": "string" }, "xXSSProtection": { "title": "X-XSS-Protection", "description": "This header configures the Cross-site scripting (XSS) filter in your browser. Using the default behaviour, the browser will prevent rendering of the page when a XSS attack is detected. <1>Learn more</1>", "type": "string" } }, "additionalProperties": false } ``` </details>
nullable: true
properties:
contentSecurityPolicy:
description: Default value prevents pages from being included by non-origin iframes. <1>Learn more</1>
nullable: true
type: string
contentSecurityPolicyReportOnly:
description: For testing Content Security Policies <1>Learn more</1>
nullable: true
type: string
strictTransportSecurity:
description: The Strict-Transport-Security HTTP header tells browsers to always use HTTPS. Once a browser sees this header, it will only visit the site over HTTPS for the time specified (1 year) at max-age, including the subdomains. <1>Learn more</1>
nullable: true
type: string
xContentTypeOptions:
description: The default value prevents Internet Explorer and Google Chrome from MIME-sniffing a response away from the declared content-type. <1>Learn more</1>
nullable: true
type: string
xFrameOptions:
description: Default value prevents pages from being included by non-origin iframes. <1>Learn more</1>
nullable: true
type: string
xRobotsTag:
description: Prevent pages from appearing in search engines. <1>Learn more</1>
nullable: true
type: string
xXSSProtection:
description: This header configures the Cross-site scripting (XSS) filter in your browser. Using the default behaviour, the browser will prevent rendering of the page when a XSS attack is detected. <1>Learn more</1>
nullable: true
type: string
type: object
bruteForceProtected:
nullable: true
type: boolean
bruteForceStrategy:
description: Multiple means wait time will be increased only when number of failures are multiples of '{{failureFactor}}'. Linear means each new failure starting at '{{failureFactor}}' will increase wait time.
enum:
- LINEAR
- MULTIPLE
nullable: true
type: string
certificate:
nullable: true
type: string
clientAuthenticationFlow:
nullable: true
type: string
clientOfflineSessionIdleTimeout:
format: int32
nullable: true
type: integer
clientOfflineSessionMaxLifespan:
format: int32
nullable: true
type: integer
clientPolicies:
description: |-
ClientPoliciesRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "globalPolicies": { "type": "array", "items": { "$ref": "#/$defs/ClientPolicyRepresentation" } }, "policies": { "type": "array", "items": { "$ref": "#/$defs/ClientPolicyRepresentation" } } }, "additionalProperties": false } ``` </details>
nullable: true
properties:
globalPolicies:
items:
description: |-
ClientPolicyRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "conditions": { "type": "array", "items": { "$ref": "#/$defs/ClientPolicyConditionRepresentation" } }, "description": { "type": "string" }, "enabled": { "type": "boolean" }, "name": { "type": "string" }, "profiles": { "type": "array", "items": { "type": "string" } } }, "additionalProperties": false } ``` </details>
properties:
conditions:
items:
description: |-
ClientPolicyConditionRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "condition": { "type": "string" }, "configuration": { "type": "object" } }, "additionalProperties": false } ``` </details>
properties:
condition:
nullable: true
type: string
configuration:
additionalProperties: true
type: object
type: object
type: array
description:
nullable: true
type: string
enabled:
nullable: true
type: boolean
name:
nullable: true
type: string
profiles:
items:
type: string
type: array
type: object
type: array
policies:
items:
description: |-
ClientPolicyRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "conditions": { "type": "array", "items": { "$ref": "#/$defs/ClientPolicyConditionRepresentation" } }, "description": { "type": "string" }, "enabled": { "type": "boolean" }, "name": { "type": "string" }, "profiles": { "type": "array", "items": { "type": "string" } } }, "additionalProperties": false } ``` </details>
properties:
conditions:
items:
description: |-
ClientPolicyConditionRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "condition": { "type": "string" }, "configuration": { "type": "object" } }, "additionalProperties": false } ``` </details>
properties:
condition:
nullable: true
type: string
configuration:
additionalProperties: true
type: object
type: object
type: array
description:
nullable: true
type: string
enabled:
nullable: true
type: boolean
name:
nullable: true
type: string
profiles:
items:
type: string
type: array
type: object
type: array
type: object
clientProfiles:
description: |-
ClientProfilesRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "globalProfiles": { "type": "array", "items": { "$ref": "#/$defs/ClientProfileRepresentation" } }, "profiles": { "type": "array", "items": { "$ref": "#/$defs/ClientProfileRepresentation" } } }, "additionalProperties": false } ``` </details>
nullable: true
properties:
globalProfiles:
items:
description: |-
ClientProfileRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "description": { "type": "string" }, "executors": { "type": "array", "items": { "$ref": "#/$defs/ClientPolicyExecutorRepresentation" } }, "name": { "type": "string" } }, "additionalProperties": false } ``` </details>
properties:
description:
nullable: true
type: string
executors:
items:
description: |-
ClientPolicyExecutorRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "configuration": { "type": "object" }, "executor": { "type": "string" } }, "additionalProperties": false } ``` </details>
properties:
configuration:
additionalProperties: true
type: object
executor:
nullable: true
type: string
type: object
type: array
name:
nullable: true
type: string
type: object
type: array
profiles:
items:
description: |-
ClientProfileRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "description": { "type": "string" }, "executors": { "type": "array", "items": { "$ref": "#/$defs/ClientPolicyExecutorRepresentation" } }, "name": { "type": "string" } }, "additionalProperties": false } ``` </details>
properties:
description:
nullable: true
type: string
executors:
items:
description: |-
ClientPolicyExecutorRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "configuration": { "type": "object" }, "executor": { "type": "string" } }, "additionalProperties": false } ``` </details>
properties:
configuration:
additionalProperties: true
type: object
executor:
nullable: true
type: string
type: object
type: array
name:
nullable: true
type: string
type: object
type: array
type: object
clientScopeMappings:
additionalProperties:
items:
description: |-
ScopeMappingRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "client": { "type": "string" }, "clientScope": { "type": "string" }, "clientTemplate": { "type": "string" }, "roles": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "self": { "type": "string" } }, "additionalProperties": false } ``` </details>
properties:
client:
nullable: true
type: string
clientScope:
nullable: true
type: string
clientTemplate:
nullable: true
type: string
roles:
items:
type: string
nullable: true
type: array
self:
nullable: true
type: string
type: object
type: array
type: object
clientSessionIdleTimeout:
description: Time a client session is allowed to be idle before it expires. Tokens are invalidated when a client session is expired. The option does not affect the global user SSO session. If not set, it uses the standard SSO Session Idle value.
format: int32
nullable: true
type: integer
clientSessionMaxLifespan:
description: Max time before a client session is expired. Tokens are invalidated when a session is expired. The option does not affect the global user SSO session. If not set, it uses the standard SSO Session Max value.
format: int32
nullable: true
type: integer
clientTemplates:
items:
description: |-
ClientTemplateRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "attributes": { "type": "object", "additionalProperties": { "type": "string" } }, "bearerOnly": { "type": "boolean" }, "consentRequired": { "type": "boolean" }, "description": { "type": "string" }, "directAccessGrantsEnabled": { "type": "boolean" }, "frontchannelLogout": { "type": "boolean" }, "fullScopeAllowed": { "type": "boolean" }, "id": { "type": "string" }, "implicitFlowEnabled": { "type": "boolean" }, "name": { "type": "string" }, "protocol": { "type": "string" }, "protocolMappers": { "type": "array", "items": { "$ref": "#/$defs/ProtocolMapperRepresentation" } }, "publicClient": { "type": "boolean" }, "serviceAccountsEnabled": { "type": "boolean" }, "standardFlowEnabled": { "type": "boolean" } }, "additionalProperties": false } ``` </details>
properties:
attributes:
additionalProperties:
type: string
type: object
bearerOnly:
nullable: true
type: boolean
consentRequired:
nullable: true
type: boolean
description:
nullable: true
type: string
directAccessGrantsEnabled:
nullable: true
type: boolean
frontchannelLogout:
nullable: true
type: boolean
fullScopeAllowed:
nullable: true
type: boolean
id:
nullable: true
type: string
implicitFlowEnabled:
nullable: true
type: boolean
name:
nullable: true
type: string
protocol:
nullable: true
type: string
protocolMappers:
items:
description: |-
ProtocolMapperRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "config": { "type": "object", "additionalProperties": { "type": "string" } }, "consentRequired": { "type": "boolean" }, "consentText": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "protocol": { "type": "string", "enum": [ "openid-connect", "saml" ] }, "protocolMapper": { "type": "string" } }, "additionalProperties": false } ``` </details>
properties:
config:
additionalProperties:
type: string
type: object
consentRequired:
nullable: true
type: boolean
consentText:
nullable: true
type: string
id:
nullable: true
type: string
name:
nullable: true
type: string
protocol:
description: |-
ProtocolMapperRepresentationProtocol
<details><summary>JSON schema</summary>
```json { "type": "string", "enum": [ "openid-connect", "saml" ] } ``` </details>
enum:
- openid-connect
- saml
nullable: true
type: string
protocolMapper:
nullable: true
type: string
type: object
type: array
publicClient:
nullable: true
type: boolean
serviceAccountsEnabled:
nullable: true
type: boolean
standardFlowEnabled:
nullable: true
type: boolean
type: object
type: array
codeSecret:
nullable: true
type: string
defaultDefaultClientScopes:
items:
type: string
type: array
defaultGroups:
items:
type: string
type: array
defaultLocale:
nullable: true
type: string
defaultOptionalClientScopes:
items:
type: string
type: array
defaultRole:
description: |-
RoleRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "attributes": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } }, "clientRole": { "type": "boolean" }, "composite": { "type": "boolean" }, "composites": { "$ref": "#/$defs/Composites" }, "containerId": { "type": "string" }, "description": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "scopeParamRequired": { "type": "boolean" } }, "additionalProperties": false } ``` </details>
nullable: true
properties:
attributes:
additionalProperties:
items:
type: string
type: array
type: object
clientRole:
nullable: true
type: boolean
composite:
nullable: true
type: boolean
composites:
description: |-
Composites
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "application": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } }, "client": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } }, "realm": { "type": "array", "items": { "type": "string" }, "uniqueItems": true } }, "additionalProperties": false } ``` </details>
nullable: true
properties:
application:
additionalProperties:
items:
type: string
type: array
type: object
client:
additionalProperties:
items:
type: string
type: array
type: object
realm:
items:
type: string
nullable: true
type: array
type: object
containerId:
nullable: true
type: string
description:
nullable: true
type: string
id:
nullable: true
type: string
name:
nullable: true
type: string
scopeParamRequired:
nullable: true
type: boolean
type: object
defaultRoles:
items:
type: string
type: array
defaultSignatureAlgorithm:
description: Default algorithm used to sign tokens for the realm
enum:
- EdDSA
- ES256
- ES384
- ES512
- HS256
- HS384
- HS512
- PS256
- PS384
- PS512
- RS256
- RS384
- RS512
nullable: true
type: string
directGrantFlow:
nullable: true
type: string
displayName:
nullable: true
type: string
displayNameHtml:
nullable: true
type: string
dockerAuthenticationFlow:
nullable: true
type: string
duplicateEmailsAllowed:
description: Allow multiple users to have the same email address. Changing this setting will also clear the user's cache. It is recommended to manually update email constraints of existing users in the database after switching off support for duplicate email addresses.
nullable: true
type: boolean
editUsernameAllowed:
description: If enabled, the username field is editable, readonly otherwise.
nullable: true
type: boolean
emailTheme:
description: Select a theme for emails that are sent by the server.
nullable: true
type: string
enabled:
nullable: true
type: boolean
enabledEventTypes:
items:
type: string
type: array
eventsEnabled:
description: If enabled, user events are saved to the database, which makes events available to the admin and account management UIs.
nullable: true
type: boolean
eventsExpiration:
description: Sets the expiration for events. Expired events are periodically deleted from the database.
format: int64
nullable: true
type: integer
eventsListeners:
description: Configure what listeners receive events for the realm.
items:
type: string
type: array
failureFactor:
description: Max login failures
format: int32
nullable: true
type: integer
firstBrokerLoginFlow:
nullable: true
type: string
id:
nullable: true
type: string
identityProviderMappers:
items:
description: |-
IdentityProviderMapperRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "config": { "type": "object", "properties": { "attribute.friendly.name": { "title": "Friendly name", "description": "Friendly name of attribute to search for in assertion. You can leave this blank and specify a name instead.", "type": "string" }, "attribute.name.format": { "type": "string", "enum": [ "ATTRIBUTE_FORMAT_BASIC", "ATTRIBUTE_FORMAT_URI", "ATTRIBUTE_FORMAT_UNSPECIFIED" ] }, "syncMode": { "title": "Sync mode override", "description": "Overrides the default sync mode of the IDP for this mapper. Values are: 'legacy' to keep the behaviour before this option was introduced, 'import' to only import the user once during first login of the user with this identity provider, 'force' to always update the user during every login with this identity provider and 'inherit' to use the sync mode defined in the identity provider for this mapper.", "type": "string", "enum": [ "INHERIT", "IMPORT", "LEGACY", "FORCE" ] }, "user.attribute": { "title": "User Attribute Name", "description": "Name of user attribute you want to hardcode", "type": "string" } }, "additionalProperties": { "type": "string" } }, "id": { "type": "string" }, "identityProviderAlias": { "type": "string" }, "identityProviderMapper": { "type": "string" }, "name": { "title": "Name", "description": "Name of the mapper.", "type": "string" } }, "additionalProperties": false } ``` </details>
properties:
config:
description: |-
IdentityProviderMapperRepresentationConfig
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "attribute.friendly.name": { "title": "Friendly name", "description": "Friendly name of attribute to search for in assertion. You can leave this blank and specify a name instead.", "type": "string" }, "attribute.name.format": { "type": "string", "enum": [ "ATTRIBUTE_FORMAT_BASIC", "ATTRIBUTE_FORMAT_URI", "ATTRIBUTE_FORMAT_UNSPECIFIED" ] }, "syncMode": { "title": "Sync mode override", "description": "Overrides the default sync mode of the IDP for this mapper. Values are: 'legacy' to keep the behaviour before this option was introduced, 'import' to only import the user once during first login of the user with this identity provider, 'force' to always update the user during every login with this identity provider and 'inherit' to use the sync mode defined in the identity provider for this mapper.", "type": "string", "enum": [ "INHERIT", "IMPORT", "LEGACY", "FORCE" ] }, "user.attribute": { "title": "User Attribute Name", "description": "Name of user attribute you want to hardcode", "type": "string" } }, "additionalProperties": { "type": "string" } } ``` </details>
nullable: true
properties:
attribute.friendly.name:
description: Friendly name of attribute to search for in assertion. You can leave this blank and specify a name instead.
nullable: true
type: string
attribute.name.format:
description: |-
IdentityProviderMapperRepresentationConfigAttributeNameFormat
<details><summary>JSON schema</summary>
```json { "type": "string", "enum": [ "ATTRIBUTE_FORMAT_BASIC", "ATTRIBUTE_FORMAT_URI", "ATTRIBUTE_FORMAT_UNSPECIFIED" ] } ``` </details>
enum:
- ATTRIBUTE_FORMAT_BASIC
- ATTRIBUTE_FORMAT_URI
- ATTRIBUTE_FORMAT_UNSPECIFIED
nullable: true
type: string
syncMode:
description: 'Overrides the default sync mode of the IDP for this mapper. Values are: ''legacy'' to keep the behaviour before this option was introduced, ''import'' to only import the user once during first login of the user with this identity provider, ''force'' to always update the user during every login with this identity provider and ''inherit'' to use the sync mode defined in the identity provider for this mapper.'
enum:
- INHERIT
- IMPORT
- LEGACY
- FORCE
nullable: true
type: string
user.attribute:
description: Name of user attribute you want to hardcode
nullable: true
type: string
type: object
id:
nullable: true
type: string
identityProviderAlias:
nullable: true
type: string
identityProviderMapper:
nullable: true
type: string
name:
description: Name of the mapper.
nullable: true
type: string
type: object
type: array
identityProviders:
items:
description: |-
IdentityProviderRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "addReadTokenRoleOnCreate": { "title": "Stored tokens readable", "description": "Enable/disable if new users can read any stored tokens. This assigns the broker.read-token role.", "type": "boolean" }, "alias": { "title": "Alias", "description": "The alias uniquely identifies an identity provider and it is also used to build the redirect uri.", "type": "string" }, "authenticateByDefault": { "type": "boolean" }, "config": { "type": "object", "properties": { "allowCreate": { "title": "Allow create", "description": "Allow the external identity provider to create a new identifier to represent the principal.", "type": "string", "enum": [ "true", "false", "" ] }, "allowedClockSkew": { "title": "Allowed clock skew", "description": "Clock skew in seconds that is tolerated when validating identity provider tokens. Default value is zero.", "type": "string", "pattern": "^[0-9]*$" }, "attributeConsumingServiceIndex": { "title": "Attribute Consuming Service Index", "description": "Index of the Attribute Consuming Service profile to request during authentication.", "type": "string", "pattern": "^[0-9]*$" }, "authnContextClassRefs": { "title": "AuthnContext ClassRefs", "description": "Ordered list of requested AuthnContext ClassRefs.", "type": "string" }, "authnContextComparisonType": { "title": "Comparison", "description": "Specifies the comparison method used to evaluate the requested context classes or statements. The default is \"Exact\".", "type": "string", "enum": [ "exact", "minimum", "maximum", "better" ] }, "authnContextDeclRefs": { "title": "AuthnContext DeclRefs", "description": "Ordered list of requested AuthnContext DeclRefs.", "type": "string" }, "backchannelSupported": { "title": "Backchannel logout", "description": "Does the external IDP support backchannel logout?", "type": "string", "enum": [ "true", "false", "" ] }, "encryptionAlgorithm": { "title": "Encryption Algorithm", "description": "Encryption algorithm, which is used by SAML IDP for encryption of SAML documents, assertions or IDs. The corresponding decryption key for decrypt SAML document parts will be chosen based on this configured algorithm and should be available in realm keys for the encryption (ENC) usage. If algorithm is not configured, then any supported algorithm is allowed and decryption key will be chosen based on the algorithm configured in SAML document itself.", "type": "string" }, "entityId": { "title": "Service provider entity ID", "description": "The Entity ID that will be used to uniquely identify this SAML Service Provider.", "type": "string" }, "forceAuthn": { "title": "Force authentication", "description": "Indicates whether the identity provider must authenticate the presenter directly rather than rely on a previous security context.", "type": "string", "enum": [ "true", "false", "" ] }, "hideOnLoginPage": { "title": "Hide on login page", "description": "If hidden, login with this provider is possible only if requested explicitly, for example using the 'kc_idp_hint' parameter.", "type": "string", "enum": [ "true", "false", "" ] }, "idpEntityId": { "title": "Identity provider entity ID", "description": "The Entity ID used to validate the Issuer for received SAML assertions. If empty, no Issuer validation is performed.", "type": "string" }, "loginHint": { "title": "Pass subject", "description": "During login phase, forward an optional login_hint query parameter to SAML AuthnRequest's Subject.", "type": "string", "enum": [ "true", "false", "" ] }, "nameIDPolicyFormat": { "title": "NameID policy format", "description": "Specifies the URI reference corresponding to a name identifier format.", "type": "string" }, "postBindingAuthnRequest": { "title": "HTTP-POST binding for AuthnRequest", "description": "Indicates whether the AuthnRequest must be sent using HTTP-POST binding. If false, HTTP-REDIRECT binding will be used.", "type": "string", "enum": [ "true", "false", "" ] }, "postBindingLogout": { "title": "HTTP-POST binding logout", "description": "Indicates whether to respond to requests using HTTP-POST binding. If false, HTTP-REDIRECT binding will be used.", "type": "string", "enum": [ "true", "false", "" ] }, "postBindingResponse": { "title": "HTTP-POST binding response", "description": "Indicates whether to respond to requests using HTTP-POST binding. If false, HTTP-REDIRECT binding will be used.", "type": "string", "enum": [ "true", "false", "" ] }, "principalAttribute": { "title": "Principal attribute", "description": "Name or Friendly Name of the attribute used to identify external users.", "type": "string" }, "principalType": { "title": "Principal type", "description": "Way to identify and track external users from the assertion. Default is using Subject NameID, alternatively you can set up identifying attribute.", "type": "string", "enum": [ "SUBJECT", "ATTRIBUTE", "FRIENDLY_ATTRIBUTE" ] }, "signSpMetadata": { "title": "Sign service provider metadata", "description": "Enable/disable signature of the provider SAML metadata.", "type": "string", "enum": [ "true", "false", "" ] }, "signatureAlgorithm": { "title": "Signature algorithm", "description": "The signature algorithm to use to sign documents. Note that 'SHA1' based algorithms are deprecated and can be removed in the future. It is recommended to stick to some more secure algorithm instead of '*_SHA1'.", "type": "string" }, "signingCertificate": { "title": "Validating X509 certificates", "description": "The public certificates Keycloak uses to validate the signatures of SAML requests and responses from the external IDP when Use metadata descriptor URL is OFF. Multiple certificates can be entered separated by comma (,). The certificates can be re-imported from the Metadata descriptor URL clicking the Import Keys action in the identity provider page. The action downloads the current certificates in the metadata endpoint and assigns them to the config in this same option. You need to click Save to definitely store the re-imported certificates.", "type": "string" }, "singleSignOnServiceUrl": { "title": "Single Sign-On service URL", "description": "The Url that must be used to send authentication requests (SAML AuthnRequest).", "type": "string" }, "syncMode": { "title": "Sync mode", "description": "Default sync mode for all mappers. The sync mode determines when user data will be synced using the mappers. Possible values are: 'legacy' to keep the behaviour before this option was introduced, 'import' to only import the user once during first login of the user with this identity provider, 'force' to always update the user during every login with this identity provider.", "type": "string", "enum": [ "IMPORT", "LEGACY", "FORCE" ] }, "validateSignature": { "title": "Validate Signatures", "description": "Enable/disable signature validation of external IDP signatures.", "type": "string", "enum": [ "true", "false", "" ] }, "wantAssertionsEncrypted": { "title": "Want Assertions encrypted", "description": "Indicates whether this service provider expects an encrypted Assertion.", "type": "string", "enum": [ "true", "false", "" ] }, "wantAssertionsSigned": { "title": "Want Assertions signed", "description": "Indicates whether this service provider expects a signed Assertion.", "type": "string", "enum": [ "true", "false", "" ] }, "wantAuthnRequestsSigned": { "title": "Want AuthnRequests signed", "description": "Indicates whether the identity provider expects a signed AuthnRequest.", "type": "string", "enum": [ "true", "false", "" ] }, "xmlSigKeyInfoKeyNameTransformer": { "title": "SAML signature key name", "description": "Signed SAML documents contain identification of signing key in KeyName element. For Keycloak / RH-SSO counter-party, use KEY_ID, for MS AD FS use CERT_SUBJECT, for others check and use NONE if no other option works.", "type": "string", "enum": [ "NONE", "KEY_ID", "CERT_SUBJECT" ] } }, "additionalProperties": { "type": "string" } }, "displayName": { "title": "Display name", "description": "Friendly name for Identity Providers.", "type": "string" }, "enabled": { "title": "Enabled", "type": "boolean" }, "firstBrokerLoginFlowAlias": { "title": "First login flow override", "description": "Alias of authentication flow, which is triggered after first login with this identity provider. Term 'First Login' means that no Keycloak account is currently linked to the authenticated identity provider account.", "type": "string" }, "hideOnLogin": { "title": "Hide on login page", "description": "If hidden, login with this provider is possible only if requested explicitly, for example using the 'kc_idp_hint' parameter.", "type": "boolean" }, "internalId": { "type": "string" }, "linkOnly": { "title": "Account linking only", "description": "If true, users cannot log in through this provider. They can only link to this provider. This is useful if you don't want to allow login from the provider, but want to integrate with a provider.", "type": "boolean" }, "organizationId": { "type": "string" }, "postBrokerLoginFlowAlias": { "title": "Post login flow", "description": "Alias of authentication flow, which is triggered after each login with this identity provider. Useful if you want additional verification of each user authenticated with this identity provider (for example OTP). Leave this to \"None\" if you need no any additional authenticators to be triggered after login with this identity provider. Also note that authenticator implementations must assume that user is already set in ClientSession as identity provider already set it.", "type": "string" }, "providerId": { "type": "string" }, "storeToken": { "title": "Store tokens", "description": "Enable/disable if tokens must be stored after authenticating users.", "type": "boolean" }, "trustEmail": { "title": "Trust Email", "description": "If enabled, email provided by this provider is not verified even if verification is enabled for the realm.", "type": "boolean" }, "updateProfileFirstLogin": { "type": "boolean" }, "updateProfileFirstLoginMode": { "type": "string" } }, "additionalProperties": false } ``` </details>
properties:
addReadTokenRoleOnCreate:
description: Enable/disable if new users can read any stored tokens. This assigns the broker.read-token role.
nullable: true
type: boolean
alias:
description: The alias uniquely identifies an identity provider and it is also used to build the redirect uri.
nullable: true
type: string
authenticateByDefault:
nullable: true
type: boolean
config:
description: |-
IdentityProviderRepresentationConfig
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "allowCreate": { "title": "Allow create", "description": "Allow the external identity provider to create a new identifier to represent the principal.", "type": "string", "enum": [ "true", "false", "" ] }, "allowedClockSkew": { "title": "Allowed clock skew", "description": "Clock skew in seconds that is tolerated when validating identity provider tokens. Default value is zero.", "type": "string", "pattern": "^[0-9]*$" }, "attributeConsumingServiceIndex": { "title": "Attribute Consuming Service Index", "description": "Index of the Attribute Consuming Service profile to request during authentication.", "type": "string", "pattern": "^[0-9]*$" }, "authnContextClassRefs": { "title": "AuthnContext ClassRefs", "description": "Ordered list of requested AuthnContext ClassRefs.", "type": "string" }, "authnContextComparisonType": { "title": "Comparison", "description": "Specifies the comparison method used to evaluate the requested context classes or statements. The default is \"Exact\".", "type": "string", "enum": [ "exact", "minimum", "maximum", "better" ] }, "authnContextDeclRefs": { "title": "AuthnContext DeclRefs", "description": "Ordered list of requested AuthnContext DeclRefs.", "type": "string" }, "backchannelSupported": { "title": "Backchannel logout", "description": "Does the external IDP support backchannel logout?", "type": "string", "enum": [ "true", "false", "" ] }, "encryptionAlgorithm": { "title": "Encryption Algorithm", "description": "Encryption algorithm, which is used by SAML IDP for encryption of SAML documents, assertions or IDs. The corresponding decryption key for decrypt SAML document parts will be chosen based on this configured algorithm and should be available in realm keys for the encryption (ENC) usage. If algorithm is not configured, then any supported algorithm is allowed and decryption key will be chosen based on the algorithm configured in SAML document itself.", "type": "string" }, "entityId": { "title": "Service provider entity ID", "description": "The Entity ID that will be used to uniquely identify this SAML Service Provider.", "type": "string" }, "forceAuthn": { "title": "Force authentication", "description": "Indicates whether the identity provider must authenticate the presenter directly rather than rely on a previous security context.", "type": "string", "enum": [ "true", "false", "" ] }, "hideOnLoginPage": { "title": "Hide on login page", "description": "If hidden, login with this provider is possible only if requested explicitly, for example using the 'kc_idp_hint' parameter.", "type": "string", "enum": [ "true", "false", "" ] }, "idpEntityId": { "title": "Identity provider entity ID", "description": "The Entity ID used to validate the Issuer for received SAML assertions. If empty, no Issuer validation is performed.", "type": "string" }, "loginHint": { "title": "Pass subject", "description": "During login phase, forward an optional login_hint query parameter to SAML AuthnRequest's Subject.", "type": "string", "enum": [ "true", "false", "" ] }, "nameIDPolicyFormat": { "title": "NameID policy format", "description": "Specifies the URI reference corresponding to a name identifier format.", "type": "string" }, "postBindingAuthnRequest": { "title": "HTTP-POST binding for AuthnRequest", "description": "Indicates whether the AuthnRequest must be sent using HTTP-POST binding. If false, HTTP-REDIRECT binding will be used.", "type": "string", "enum": [ "true", "false", "" ] }, "postBindingLogout": { "title": "HTTP-POST binding logout", "description": "Indicates whether to respond to requests using HTTP-POST binding. If false, HTTP-REDIRECT binding will be used.", "type": "string", "enum": [ "true", "false", "" ] }, "postBindingResponse": { "title": "HTTP-POST binding response", "description": "Indicates whether to respond to requests using HTTP-POST binding. If false, HTTP-REDIRECT binding will be used.", "type": "string", "enum": [ "true", "false", "" ] }, "principalAttribute": { "title": "Principal attribute", "description": "Name or Friendly Name of the attribute used to identify external users.", "type": "string" }, "principalType": { "title": "Principal type", "description": "Way to identify and track external users from the assertion. Default is using Subject NameID, alternatively you can set up identifying attribute.", "type": "string", "enum": [ "SUBJECT", "ATTRIBUTE", "FRIENDLY_ATTRIBUTE" ] }, "signSpMetadata": { "title": "Sign service provider metadata", "description": "Enable/disable signature of the provider SAML metadata.", "type": "string", "enum": [ "true", "false", "" ] }, "signatureAlgorithm": { "title": "Signature algorithm", "description": "The signature algorithm to use to sign documents. Note that 'SHA1' based algorithms are deprecated and can be removed in the future. It is recommended to stick to some more secure algorithm instead of '*_SHA1'.", "type": "string" }, "signingCertificate": { "title": "Validating X509 certificates", "description": "The public certificates Keycloak uses to validate the signatures of SAML requests and responses from the external IDP when Use metadata descriptor URL is OFF. Multiple certificates can be entered separated by comma (,). The certificates can be re-imported from the Metadata descriptor URL clicking the Import Keys action in the identity provider page. The action downloads the current certificates in the metadata endpoint and assigns them to the config in this same option. You need to click Save to definitely store the re-imported certificates.", "type": "string" }, "singleSignOnServiceUrl": { "title": "Single Sign-On service URL", "description": "The Url that must be used to send authentication requests (SAML AuthnRequest).", "type": "string" }, "syncMode": { "title": "Sync mode", "description": "Default sync mode for all mappers. The sync mode determines when user data will be synced using the mappers. Possible values are: 'legacy' to keep the behaviour before this option was introduced, 'import' to only import the user once during first login of the user with this identity provider, 'force' to always update the user during every login with this identity provider.", "type": "string", "enum": [ "IMPORT", "LEGACY", "FORCE" ] }, "validateSignature": { "title": "Validate Signatures", "description": "Enable/disable signature validation of external IDP signatures.", "type": "string", "enum": [ "true", "false", "" ] }, "wantAssertionsEncrypted": { "title": "Want Assertions encrypted", "description": "Indicates whether this service provider expects an encrypted Assertion.", "type": "string", "enum": [ "true", "false", "" ] }, "wantAssertionsSigned": { "title": "Want Assertions signed", "description": "Indicates whether this service provider expects a signed Assertion.", "type": "string", "enum": [ "true", "false", "" ] }, "wantAuthnRequestsSigned": { "title": "Want AuthnRequests signed", "description": "Indicates whether the identity provider expects a signed AuthnRequest.", "type": "string", "enum": [ "true", "false", "" ] }, "xmlSigKeyInfoKeyNameTransformer": { "title": "SAML signature key name", "description": "Signed SAML documents contain identification of signing key in KeyName element. For Keycloak / RH-SSO counter-party, use KEY_ID, for MS AD FS use CERT_SUBJECT, for others check and use NONE if no other option works.", "type": "string", "enum": [ "NONE", "KEY_ID", "CERT_SUBJECT" ] } }, "additionalProperties": { "type": "string" } } ``` </details>
nullable: true
properties:
allowCreate:
description: Allow the external identity provider to create a new identifier to represent the principal.
enum:
- 'true'
- 'false'
- ''
nullable: true
type: string
allowedClockSkew:
description: Clock skew in seconds that is tolerated when validating identity provider tokens. Default value is zero.
nullable: true
type: string
attributeConsumingServiceIndex:
description: Index of the Attribute Consuming Service profile to request during authentication.
nullable: true
type: string
authnContextClassRefs:
description: Ordered list of requested AuthnContext ClassRefs.
nullable: true
type: string
authnContextComparisonType:
description: Specifies the comparison method used to evaluate the requested context classes or statements. The default is "Exact".
enum:
- exact
- minimum
- maximum
- better
nullable: true
type: string
authnContextDeclRefs:
description: Ordered list of requested AuthnContext DeclRefs.
nullable: true
type: string
backchannelSupported:
description: Does the external IDP support backchannel logout?
enum:
- 'true'
- 'false'
- ''
nullable: true
type: string
encryptionAlgorithm:
description: Encryption algorithm, which is used by SAML IDP for encryption of SAML documents, assertions or IDs. The corresponding decryption key for decrypt SAML document parts will be chosen based on this configured algorithm and should be available in realm keys for the encryption (ENC) usage. If algorithm is not configured, then any supported algorithm is allowed and decryption key will be chosen based on the algorithm configured in SAML document itself.
nullable: true
type: string
entityId:
description: The Entity ID that will be used to uniquely identify this SAML Service Provider.
nullable: true
type: string
forceAuthn:
description: Indicates whether the identity provider must authenticate the presenter directly rather than rely on a previous security context.
enum:
- 'true'
- 'false'
- ''
nullable: true
type: string
hideOnLoginPage:
description: If hidden, login with this provider is possible only if requested explicitly, for example using the 'kc_idp_hint' parameter.
enum:
- 'true'
- 'false'
- ''
nullable: true
type: string
idpEntityId:
description: The Entity ID used to validate the Issuer for received SAML assertions. If empty, no Issuer validation is performed.
nullable: true
type: string
loginHint:
description: During login phase, forward an optional login_hint query parameter to SAML AuthnRequest's Subject.
enum:
- 'true'
- 'false'
- ''
nullable: true
type: string
nameIDPolicyFormat:
description: Specifies the URI reference corresponding to a name identifier format.
nullable: true
type: string
postBindingAuthnRequest:
description: Indicates whether the AuthnRequest must be sent using HTTP-POST binding. If false, HTTP-REDIRECT binding will be used.
enum:
- 'true'
- 'false'
- ''
nullable: true
type: string
postBindingLogout:
description: Indicates whether to respond to requests using HTTP-POST binding. If false, HTTP-REDIRECT binding will be used.
enum:
- 'true'
- 'false'
- ''
nullable: true
type: string
postBindingResponse:
description: Indicates whether to respond to requests using HTTP-POST binding. If false, HTTP-REDIRECT binding will be used.
enum:
- 'true'
- 'false'
- ''
nullable: true
type: string
principalAttribute:
description: Name or Friendly Name of the attribute used to identify external users.
nullable: true
type: string
principalType:
description: Way to identify and track external users from the assertion. Default is using Subject NameID, alternatively you can set up identifying attribute.
enum:
- SUBJECT
- ATTRIBUTE
- FRIENDLY_ATTRIBUTE
nullable: true
type: string
signSpMetadata:
description: Enable/disable signature of the provider SAML metadata.
enum:
- 'true'
- 'false'
- ''
nullable: true
type: string
signatureAlgorithm:
description: The signature algorithm to use to sign documents. Note that 'SHA1' based algorithms are deprecated and can be removed in the future. It is recommended to stick to some more secure algorithm instead of '*_SHA1'.
nullable: true
type: string
signingCertificate:
description: The public certificates Keycloak uses to validate the signatures of SAML requests and responses from the external IDP when Use metadata descriptor URL is OFF. Multiple certificates can be entered separated by comma (,). The certificates can be re-imported from the Metadata descriptor URL clicking the Import Keys action in the identity provider page. The action downloads the current certificates in the metadata endpoint and assigns them to the config in this same option. You need to click Save to definitely store the re-imported certificates.
nullable: true
type: string
singleSignOnServiceUrl:
description: The Url that must be used to send authentication requests (SAML AuthnRequest).
nullable: true
type: string
syncMode:
description: 'Default sync mode for all mappers. The sync mode determines when user data will be synced using the mappers. Possible values are: ''legacy'' to keep the behaviour before this option was introduced, ''import'' to only import the user once during first login of the user with this identity provider, ''force'' to always update the user during every login with this identity provider.'
enum:
- IMPORT
- LEGACY
- FORCE
nullable: true
type: string
validateSignature:
description: Enable/disable signature validation of external IDP signatures.
enum:
- 'true'
- 'false'
- ''
nullable: true
type: string
wantAssertionsEncrypted:
description: Indicates whether this service provider expects an encrypted Assertion.
enum:
- 'true'
- 'false'
- ''
nullable: true
type: string
wantAssertionsSigned:
description: Indicates whether this service provider expects a signed Assertion.
enum:
- 'true'
- 'false'
- ''
nullable: true
type: string
wantAuthnRequestsSigned:
description: Indicates whether the identity provider expects a signed AuthnRequest.
enum:
- 'true'
- 'false'
- ''
nullable: true
type: string
xmlSigKeyInfoKeyNameTransformer:
description: Signed SAML documents contain identification of signing key in KeyName element. For Keycloak / RH-SSO counter-party, use KEY_ID, for MS AD FS use CERT_SUBJECT, for others check and use NONE if no other option works.
enum:
- NONE
- KEY_ID
- CERT_SUBJECT
nullable: true
type: string
type: object
displayName:
description: Friendly name for Identity Providers.
nullable: true
type: string
enabled:
nullable: true
type: boolean
firstBrokerLoginFlowAlias:
description: Alias of authentication flow, which is triggered after first login with this identity provider. Term 'First Login' means that no Keycloak account is currently linked to the authenticated identity provider account.
nullable: true
type: string
hideOnLogin:
description: If hidden, login with this provider is possible only if requested explicitly, for example using the 'kc_idp_hint' parameter.
nullable: true
type: boolean
internalId:
nullable: true
type: string
linkOnly:
description: If true, users cannot log in through this provider. They can only link to this provider. This is useful if you don't want to allow login from the provider, but want to integrate with a provider.
nullable: true
type: boolean
organizationId:
nullable: true
type: string
postBrokerLoginFlowAlias:
description: Alias of authentication flow, which is triggered after each login with this identity provider. Useful if you want additional verification of each user authenticated with this identity provider (for example OTP). Leave this to "None" if you need no any additional authenticators to be triggered after login with this identity provider. Also note that authenticator implementations must assume that user is already set in ClientSession as identity provider already set it.
nullable: true
type: string
providerId:
nullable: true
type: string
storeToken:
description: Enable/disable if tokens must be stored after authenticating users.
nullable: true
type: boolean
trustEmail:
description: If enabled, email provided by this provider is not verified even if verification is enabled for the realm.
nullable: true
type: boolean
updateProfileFirstLogin:
nullable: true
type: boolean
updateProfileFirstLoginMode:
nullable: true
type: string
type: object
type: array
internationalizationEnabled:
description: If enabled, you can choose which locales you support for this realm and which locale is the default.
nullable: true
type: boolean
keycloakVersion:
nullable: true
type: string
localizationTexts:
additionalProperties:
additionalProperties:
type: string
type: object
type: object
loginTheme:
description: Select theme for login, OTP, grant, registration and forgot password pages.
nullable: true
type: string
loginWithEmailAllowed:
description: Allow users to log in with their email address.
nullable: true
type: boolean
maxDeltaTimeSeconds:
description: When will failure count be reset?
format: int32
nullable: true
type: integer
maxFailureWaitSeconds:
description: Max time a user will be locked out.
format: int32
nullable: true
type: integer
maxTemporaryLockouts:
description: The number of temporary lockouts permitted before the user is permanently locked out.
format: int32
nullable: true
type: integer
minimumQuickLoginWaitSeconds:
description: How long to wait after a quick login failure.
format: int32
nullable: true
type: integer
notBefore:
format: int32
nullable: true
type: integer
oAuth2DeviceCodeLifespan:
format: int32
nullable: true
type: integer
oAuth2DevicePollingInterval:
format: int32
nullable: true
type: integer
oauth2DeviceCodeLifespan:
description: Max time before the device code and user code are expired. This value needs to be a long enough lifetime to be usable (allowing the user to retrieve their secondary device, navigate to the verification URI, login, etc.), but should be sufficiently short to limit the usability of a code obtained for phishing.
format: int32
nullable: true
type: integer
oauth2DevicePollingInterval:
description: The minimum amount of time in seconds that the client should wait between polling requests to the token endpoint.
format: int32
nullable: true
type: integer
offlineSessionIdleTimeout:
description: Time an offline session is allowed to be idle before it expires. You need to use offline token to refresh at least once within this period; otherwise offline session will expire.
format: int32
nullable: true
type: integer
offlineSessionMaxLifespan:
description: Max time before an offline session is expired regardless of activity.
format: int32
nullable: true
type: integer
offlineSessionMaxLifespanEnabled:
description: Enable offline session maximum lifetime
nullable: true
type: boolean
organizationsEnabled:
nullable: true
type: boolean
otpPolicyAlgorithm:
description: What hashing algorithm should be used to generate the OTP.
nullable: true
type: string
otpPolicyCodeReusable:
description: Possibility to use the same OTP code again after successful authentication.
nullable: true
type: boolean
otpPolicyDigits:
description: How many digits should the OTP have?
format: int32
nullable: true
type: integer
otpPolicyInitialCounter:
format: int32
nullable: true
type: integer
otpPolicyLookAheadWindow:
description: How far around (extra token periods or counts) should the server look just in case the token generator and server are out of time sync or counter sync?
format: int32
nullable: true
type: integer
otpPolicyPeriod:
description: How many seconds should an OTP token be valid? Defaults to 30 seconds.
format: int32
nullable: true
type: integer
otpPolicyType:
description: totp is Time-Based One Time Password. 'hotp' is a counter base one time password in which the server keeps a counter to hash against.
enum:
- totp
- hotp
nullable: true
type: string
otpSupportedApplications:
items:
type: string
type: array
passwordCredentialGrantAllowed:
nullable: true
type: boolean
passwordPolicy:
nullable: true
type: string
permanentLockout:
nullable: true
type: boolean
privateKey:
nullable: true
type: string
publicKey:
nullable: true
type: string
quickLoginCheckMilliSeconds:
description: If a failure happens concurrently too quickly, lock out the user.
format: int64
nullable: true
type: integer
realm:
nullable: true
type: string
x-kubernetes-validations:
- message: Value is immutable
rule: self == oldSelf
realmCacheEnabled:
nullable: true
type: boolean
refreshTokenMaxReuse:
description: Maximum number of times a refresh token can be reused. When a different token is used, revocation is immediate.
format: int32
nullable: true
type: integer
registrationAllowed:
description: Enable/disable the registration page. A link for registration will show on login page too.
nullable: true
type: boolean
registrationEmailAsUsername:
description: Allow users to set email as username.
nullable: true
type: boolean
registrationFlow:
nullable: true
type: string
rememberMe:
description: Show checkbox on login page to allow user to remain logged in between browser restarts until session expires.
nullable: true
type: boolean
requiredCredentials:
items:
type: string
nullable: true
type: array
resetCredentialsFlow:
nullable: true
type: string
resetPasswordAllowed:
description: Show a link on login page for user to click when they have forgotten their credentials.
nullable: true
type: boolean
revokeRefreshToken:
description: If enabled a refresh token can only be used up to 'Refresh Token Max Reuse' and is revoked when a different token is used. Otherwise refresh tokens are not revoked when used and can be used multiple times.
nullable: true
type: boolean
roles:
description: |-
RolesRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "application": { "type": "object", "additionalProperties": { "type": "array", "items": { "$ref": "#/$defs/RoleRepresentation" } } }, "client": { "type": "object", "additionalProperties": { "type": "array", "items": { "$ref": "#/$defs/RoleRepresentation" } } }, "realm": { "type": "array", "items": { "$ref": "#/$defs/RoleRepresentation" } } }, "additionalProperties": false } ``` </details>
nullable: true
properties:
application:
additionalProperties:
items:
description: |-
RoleRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "attributes": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } }, "clientRole": { "type": "boolean" }, "composite": { "type": "boolean" }, "composites": { "$ref": "#/$defs/Composites" }, "containerId": { "type": "string" }, "description": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "scopeParamRequired": { "type": "boolean" } }, "additionalProperties": false } ``` </details>
properties:
attributes:
additionalProperties:
items:
type: string
type: array
type: object
clientRole:
nullable: true
type: boolean
composite:
nullable: true
type: boolean
composites:
description: |-
Composites
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "application": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } }, "client": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } }, "realm": { "type": "array", "items": { "type": "string" }, "uniqueItems": true } }, "additionalProperties": false } ``` </details>
nullable: true
properties:
application:
additionalProperties:
items:
type: string
type: array
type: object
client:
additionalProperties:
items:
type: string
type: array
type: object
realm:
items:
type: string
nullable: true
type: array
type: object
containerId:
nullable: true
type: string
description:
nullable: true
type: string
id:
nullable: true
type: string
name:
nullable: true
type: string
scopeParamRequired:
nullable: true
type: boolean
type: object
type: array
type: object
client:
additionalProperties:
items:
description: |-
RoleRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "attributes": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } }, "clientRole": { "type": "boolean" }, "composite": { "type": "boolean" }, "composites": { "$ref": "#/$defs/Composites" }, "containerId": { "type": "string" }, "description": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "scopeParamRequired": { "type": "boolean" } }, "additionalProperties": false } ``` </details>
properties:
attributes:
additionalProperties:
items:
type: string
type: array
type: object
clientRole:
nullable: true
type: boolean
composite:
nullable: true
type: boolean
composites:
description: |-
Composites
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "application": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } }, "client": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } }, "realm": { "type": "array", "items": { "type": "string" }, "uniqueItems": true } }, "additionalProperties": false } ``` </details>
nullable: true
properties:
application:
additionalProperties:
items:
type: string
type: array
type: object
client:
additionalProperties:
items:
type: string
type: array
type: object
realm:
items:
type: string
nullable: true
type: array
type: object
containerId:
nullable: true
type: string
description:
nullable: true
type: string
id:
nullable: true
type: string
name:
nullable: true
type: string
scopeParamRequired:
nullable: true
type: boolean
type: object
type: array
type: object
realm:
items:
description: |-
RoleRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "attributes": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } }, "clientRole": { "type": "boolean" }, "composite": { "type": "boolean" }, "composites": { "$ref": "#/$defs/Composites" }, "containerId": { "type": "string" }, "description": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" }, "scopeParamRequired": { "type": "boolean" } }, "additionalProperties": false } ``` </details>
properties:
attributes:
additionalProperties:
items:
type: string
type: array
type: object
clientRole:
nullable: true
type: boolean
composite:
nullable: true
type: boolean
composites:
description: |-
Composites
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "application": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } }, "client": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } }, "realm": { "type": "array", "items": { "type": "string" }, "uniqueItems": true } }, "additionalProperties": false } ``` </details>
nullable: true
properties:
application:
additionalProperties:
items:
type: string
type: array
type: object
client:
additionalProperties:
items:
type: string
type: array
type: object
realm:
items:
type: string
nullable: true
type: array
type: object
containerId:
nullable: true
type: string
description:
nullable: true
type: string
id:
nullable: true
type: string
name:
nullable: true
type: string
scopeParamRequired:
nullable: true
type: boolean
type: object
type: array
type: object
scopeMappings:
items:
description: |-
ScopeMappingRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "client": { "type": "string" }, "clientScope": { "type": "string" }, "clientTemplate": { "type": "string" }, "roles": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "self": { "type": "string" } }, "additionalProperties": false } ``` </details>
properties:
client:
nullable: true
type: string
clientScope:
nullable: true
type: string
clientTemplate:
nullable: true
type: string
roles:
items:
type: string
nullable: true
type: array
self:
nullable: true
type: string
type: object
type: array
smtpServer:
description: |-
RealmRepresentationSmtpServer
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "auth": { "title": "Authentication", "type": "string", "enum": [ "true", "false", "" ] }, "envelopeFrom": { "title": "Envelope from", "description": "An email address used for bounces (optional).", "type": "string" }, "from": { "title": "From", "type": "string" }, "fromDisplayName": { "title": "From display name", "description": "A user-friendly name for the 'From' address (optional).", "type": "string" }, "host": { "title": "Host", "type": "string" }, "password": { "title": "Password", "description": "SMTP password. This field is able to obtain its value from vault, use ${vault.ID} format.", "type": "string" }, "port": { "title": "Port", "type": "string" }, "replyTo": { "title": "Reply to", "type": "string" }, "replyToDisplayName": { "title": "Reply to display name", "description": "A user-friendly name for the 'Reply-To' address (optional).", "type": "string" }, "ssl": { "title": "Enable SSL", "type": "string", "enum": [ "true", "false", "" ] }, "starttls": { "title": "Enable StartTLS", "type": "string", "enum": [ "true", "false", "" ] }, "user": { "title": "Username", "type": "string" } }, "additionalProperties": false } ``` </details>
nullable: true
properties:
auth:
description: |-
Authentication
<details><summary>JSON schema</summary>
```json { "title": "Authentication", "type": "string", "enum": [ "true", "false", "" ] } ``` </details>
enum:
- 'true'
- 'false'
- ''
nullable: true
type: string
envelopeFrom:
description: An email address used for bounces (optional).
nullable: true
type: string
from:
nullable: true
type: string
fromDisplayName:
description: A user-friendly name for the 'From' address (optional).
nullable: true
type: string
host:
nullable: true
type: string
password:
description: SMTP password. This field is able to obtain its value from vault, use ${vault.ID} format.
nullable: true
type: string
port:
nullable: true
type: string
replyTo:
nullable: true
type: string
replyToDisplayName:
description: A user-friendly name for the 'Reply-To' address (optional).
nullable: true
type: string
ssl:
description: |-
EnableSsl
<details><summary>JSON schema</summary>
```json { "title": "Enable SSL", "type": "string", "enum": [ "true", "false", "" ] } ``` </details>
enum:
- 'true'
- 'false'
- ''
nullable: true
type: string
starttls:
description: |-
EnableStartTls
<details><summary>JSON schema</summary>
```json { "title": "Enable StartTLS", "type": "string", "enum": [ "true", "false", "" ] } ``` </details>
enum:
- 'true'
- 'false'
- ''
nullable: true
type: string
user:
nullable: true
type: string
type: object
social:
nullable: true
type: boolean
socialProviders:
additionalProperties:
type: string
type: object
sslRequired:
description: Is HTTPS required? 'None' means HTTPS is not required for any client IP address. 'External requests' means localhost and private IP addresses can access without HTTPS. 'All requests' means HTTPS is required for all IP addresses.
enum:
- all
- external
- none
nullable: true
type: string
ssoSessionIdleTimeout:
description: Time a session is allowed to be idle before it expires. Tokens and browser sessions are invalidated when a session is expired.
format: int32
nullable: true
type: integer
ssoSessionIdleTimeoutRememberMe:
description: Time a remember me session is allowed to be idle before it expires. Tokens and browser sessions are invalidated when a session is expired. If not set it uses the standard SSO Session Idle value.
format: int32
nullable: true
type: integer
ssoSessionMaxLifespan:
description: Max time before a session is expired. Tokens and browser sessions are invalidated when a session is expired.
format: int32
nullable: true
type: integer
ssoSessionMaxLifespanRememberMe:
description: Max time before a session is expired when a user has set the remember me option. Tokens and browser sessions are invalidated when a session is expired. If not set it uses the standard SSO Session Max value.
format: int32
nullable: true
type: integer
supportedLocales:
items:
type: string
nullable: true
type: array
updateProfileOnInitialSocialLogin:
nullable: true
type: boolean
userCacheEnabled:
nullable: true
type: boolean
userFederationMappers:
items:
description: |-
UserFederationMapperRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "config": { "type": "object", "additionalProperties": { "type": "string" } }, "federationMapperType": { "type": "string" }, "federationProviderDisplayName": { "type": "string" }, "id": { "type": "string" }, "name": { "type": "string" } }, "additionalProperties": false } ``` </details>
properties:
config:
additionalProperties:
type: string
type: object
federationMapperType:
nullable: true
type: string
federationProviderDisplayName:
nullable: true
type: string
id:
nullable: true
type: string
name:
nullable: true
type: string
type: object
type: array
userFederationProviders:
items:
description: |-
UserFederationProviderRepresentation
<details><summary>JSON schema</summary>
```json { "type": "object", "properties": { "changedSyncPeriod": { "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "config": { "type": "object", "additionalProperties": { "type": "string" } }, "displayName": { "type": "string" }, "fullSyncPeriod": { "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "id": { "type": "string" }, "lastSync": { "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "priority": { "type": "integer", "format": "int32", "maximum": 2147483647.0, "minimum": -2147483648.0 }, "providerName": { "type": "string" } }, "additionalProperties": false } ``` </details>
properties:
changedSyncPeriod:
format: int32
nullable: true
type: integer
config:
additionalProperties:
type: string
type: object
displayName:
nullable: true
type: string
fullSyncPeriod:
format: int32
nullable: true
type: integer
id:
nullable: true
type: string
lastSync:
format: int32
nullable: true
type: integer
priority:
format: int32
nullable: true
type: integer
providerName:
nullable: true
type: string
type: object
type: array
userManagedAccessAllowed:
description: If enabled, users are allowed to manage their resources and permissions using the Account Management UI.
nullable: true
type: boolean
verifiableCredentialsEnabled:
nullable: true
type: boolean
verifyEmail:
description: Require user to verify their email address after initial login or after address changes are submitted.
nullable: true
type: boolean
waitIncrementSeconds:
description: When failure threshold has been met, how much time should the user be locked out?
format: int32
nullable: true
type: integer
webAuthnPolicyAcceptableAaguids:
description: The list of allowed AAGUIDs of which an authenticator can be registered. An AAGUID is a 128-bit identifier indicating the authenticator's type (e.g., make and model).
items:
type: string
type: array
webAuthnPolicyAttestationConveyancePreference:
description: Communicates to an authenticator the preference of how to generate an attestation statement.
enum:
- not specified
- none
- indirect
- direct
nullable: true
type: string
webAuthnPolicyAuthenticatorAttachment:
description: Communicates to an authenticator an acceptable attachment pattern.
enum:
- not specified
- platform
- cross-platform
nullable: true
type: string
webAuthnPolicyAvoidSameAuthenticatorRegister:
description: Avoid registering an authenticator that has already been registered.
nullable: true
type: boolean
webAuthnPolicyCreateTimeout:
description: The timeout value for creating the user's public key credential in seconds. If set to 0, this timeout option is not adapted.
format: int32
nullable: true
type: integer
webAuthnPolicyExtraOrigins:
items:
type: string
type: array
webAuthnPolicyPasswordlessAcceptableAaguids:
description: The list of allowed AAGUIDs of which an authenticator can be registered. An AAGUID is a 128-bit identifier indicating the authenticator's type (e.g., make and model).
items:
type: string
type: array
webAuthnPolicyPasswordlessAttestationConveyancePreference:
description: Communicates to an authenticator the preference of how to generate an attestation statement.
enum:
- not specified
- none
- indirect
- direct
nullable: true
type: string
webAuthnPolicyPasswordlessAuthenticatorAttachment:
description: Communicates to an authenticator an acceptable attachment pattern.
enum:
- not specified
- platform
- cross-platform
nullable: true
type: string
webAuthnPolicyPasswordlessAvoidSameAuthenticatorRegister:
description: Avoid registering an authenticator that has already been registered.
nullable: true
type: boolean
webAuthnPolicyPasswordlessCreateTimeout:
description: The timeout value for creating the user's public key credential in seconds. If set to 0, this timeout option is not adapted.
format: int32
nullable: true
type: integer
webAuthnPolicyPasswordlessExtraOrigins:
items:
type: string
type: array
webAuthnPolicyPasswordlessRequireResidentKey:
description: It tells an authenticator whether to create a public key credential as a Discoverable Credential.
enum:
- not specified
- Yes
- No
nullable: true
type: string
webAuthnPolicyPasswordlessRpEntityName:
description: Human-readable server name as WebAuthn Relying Party
nullable: true
type: string
webAuthnPolicyPasswordlessRpId:
description: The WebAuthn Relying Party ID (RpID). It must be the origin's effective domain, e.g. 'company.com' or 'auth.company.com'.
nullable: true
type: string
webAuthnPolicyPasswordlessSignatureAlgorithms:
description: The signature algorithms that should be used for the Authentication Assertion.
items:
description: |-
SignatureAlgorithmsItem
<details><summary>JSON schema</summary>
```json { "type": "string", "enum": [ "Ed25519", "ES256", "ES384", "ES512", "RS256", "RS384", "RS512", "RS1" ] } ``` </details>
enum:
- Ed25519
- ES256
- ES384
- ES512
- RS256
- RS384
- RS512
- RS1
type: string
type: array
webAuthnPolicyPasswordlessUserVerificationRequirement:
description: Communicates to an authenticator whether to require to verify a user.
enum:
- not specified
- required
- preferred
- discouraged
nullable: true
type: string
webAuthnPolicyRequireResidentKey:
description: It tells an authenticator whether to create a public key credential as a Discoverable Credential.
enum:
- not specified
- Yes
- No
nullable: true
type: string
webAuthnPolicyRpEntityName:
description: Human-readable server name as WebAuthn Relying Party
nullable: true
type: string
webAuthnPolicyRpId:
description: The WebAuthn Relying Party ID (RpID). It must be the origin's effective domain, e.g. 'company.com' or 'auth.company.com'.
nullable: true
type: string
webAuthnPolicySignatureAlgorithms:
description: The signature algorithms that should be used for the Authentication Assertion.
items:
description: |-
SignatureAlgorithmsItem
<details><summary>JSON schema</summary>
```json { "type": "string", "enum": [ "Ed25519", "ES256", "ES384", "ES512", "RS256", "RS384", "RS512", "RS1" ] } ``` </details>
enum:
- Ed25519
- ES256
- ES384
- ES512
- RS256
- RS384
- RS512
- RS1
type: string
type: array
webAuthnPolicyUserVerificationRequirement:
description: Communicates to an authenticator whether to require to verify a user.
enum:
- not specified
- required
- preferred
- discouraged
nullable: true
type: string
type: object
x-kubernetes-validations:
- message: Value is immutable
rule: has(self.realm) == has(oldSelf.realm)
instanceRef:
description: The name of the namespaced instance to which this object belongs to.
type: string
x-kubernetes-validations:
- message: Value is immutable
rule: self == oldSelf
options:
description: Options for the request to the Keycloak Admin API.
nullable: true
type: object
patchFrom:
additionalProperties:
description: EnvVarSource represents a source for the value of an EnvVar.
properties:
configMapKeyRef:
description: Selects a key of a ConfigMap.
properties:
key:
description: The key to select.
type: string
name:
description: 'Name of the referent. This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
type: string
optional:
description: Specify whether the ConfigMap or its key must be defined
type: boolean
required:
- key
- name
type: object
fieldRef:
description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels[''<KEY>'']`, `metadata.annotations[''<KEY>'']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.'
properties:
apiVersion:
description: Version of the schema the FieldPath is written in terms of, defaults to "v1".
type: string
fieldPath:
description: Path of the field to select in the specified API version.
type: string
required:
- fieldPath
type: object
resourceFieldRef:
description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.'
properties:
containerName:
description: 'Container name: required for volumes, optional for env vars'
type: string
divisor:
description: Specifies the output format of the exposed resources, defaults to "1"
type: string
resource:
description: 'Required: resource to select'
type: string
required:
- resource
type: object
secretKeyRef:
description: Selects a key of a secret in the pod's namespace
properties:
key:
description: The key of the secret to select from. Must be a valid secret key.
type: string
name:
description: 'Name of the referent. This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
type: string
optional:
description: Specify whether the Secret or its key must be defined
type: boolean
required:
- key
- name
type: object
valueAs:
enum:
- auto
- string
- number
- yaml
- json
- bool
nullable: true
type: string
type: object
description: Defines additional values that can be loaded from secrets or configmaps. Field selectors are not supported. For more informations see [the patches documentation](../configuration/patches.md).
type: object
patchFrom2:
items:
description: EnvVarSource represents a source for the value of an EnvVar.
properties:
configMapKeyRef:
description: Selects a key of a ConfigMap.
properties:
key:
description: The key to select.
type: string
name:
description: 'Name of the referent. This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
type: string
optional:
description: Specify whether the ConfigMap or its key must be defined
type: boolean
required:
- key
- name
type: object
fieldRef:
description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels[''<KEY>'']`, `metadata.annotations[''<KEY>'']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.'
properties:
apiVersion:
description: Version of the schema the FieldPath is written in terms of, defaults to "v1".
type: string
fieldPath:
description: Path of the field to select in the specified API version.
type: string
required:
- fieldPath
type: object
path:
type: string
resourceFieldRef:
description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.'
properties:
containerName:
description: 'Container name: required for volumes, optional for env vars'
type: string
divisor:
description: Specifies the output format of the exposed resources, defaults to "1"
type: string
resource:
description: 'Required: resource to select'
type: string
required:
- resource
type: object
secretKeyRef:
description: Selects a key of a secret in the pod's namespace
properties:
key:
description: The key of the secret to select from. Must be a valid secret key.
type: string
name:
description: 'Name of the referent. This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
type: string
optional:
description: Specify whether the Secret or its key must be defined
type: boolean
required:
- key
- name
type: object
valueAs:
enum:
- auto
- string
- number
- yaml
- json
- bool
nullable: true
type: string
required:
- path
type: object
type: array
required:
- definition
type: object
status:
nullable: true
properties:
conditions:
items:
properties:
lastTransitionTime:
description: Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.
format: date-time
nullable: true
type: string
message:
nullable: true
type: string
reason:
nullable: true
type: string
status:
type: string
type:
type: string
required:
- status
- type
type: object
type: array
instance:
anyOf:
- required:
- instanceRef
- required:
- clusterInstanceRef
properties:
clusterInstanceRef:
description: The name of the cluster instance to which this object belongs to.
type: string
x-kubernetes-validations:
- message: Value is immutable
rule: self == oldSelf
instanceRef:
description: The name of the namespaced instance to which this object belongs to.
type: string
x-kubernetes-validations:
- message: Value is immutable
rule: self == oldSelf
type: object
message:
type: string
ready:
type: boolean
resourcePath:
type: string
status:
type: string
required:
- ready
type: object
required:
- spec
title: KeycloakRealm
type: object
served: true
storage: true
subresources:
status: {}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment