diff --git a/README.md b/README.md index ff101c202a22c0384d415346133633e97751780f..885764e45eccbdd36a271e95a8bc480cbbed6af9 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ with environment variables which will be injected in its container. ## Prerequisites -* Install [docker](https://docs.docker.com/engine/install/) and [docker-compose](https://docs.docker.com/compose/install/). +* Install [docker](https://docs.docker.com/engine/install/) and [docker-compose version 1.27+](https://docs.docker.com/compose/install/). * [Install Go](https://golang.org/doc/install) and set the [`$GOPATH` variable](https://github.com/golang/go/wiki/SettingGOPATH). @@ -126,6 +126,23 @@ the `root` token. > Warning: Never use Vault DEV mode in production! +### Keycloak + +Keycloak is used for service-to-service authentication. Keycloak server runs in development mode and contains +preconfigured `client_id` and `client_secret` for every service. It is available at `localhost:8500` on the host machine or +at `http://keycloak:8080` inside the docker-compose network. + +Example request for JWT token acquire: +```shell +curl --location --request POST 'localhost:8500/realms/workspace/protocol/openid-connect/token' \ +--header 'Content-Type: application/x-www-form-urlencoded' \ +--data-urlencode 'client_id=workspace' \ +--data-urlencode 'grant_type=client_credentials' \ +--data-urlencode 'client_secret=79bdTGYCKLz9wYSY61vpQF5d4CyZBpsZ' +``` + +Example JWKS URL for acquiring public keys for validating tokens: `localhost:8500/realms/workspace/protocol/openid-connect/certs` + ### License [Apache 2.0 license](LICENSE) diff --git a/docker-compose.yml b/docker-compose.yml index 3600dc78c66a3ac5e43d053e129dc25a96b50ee4..8a04c883c435e00267270158324d85098ecb1c8b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,4 +1,4 @@ -version: '3.4' +version: '3.8' services: nginx: @@ -28,10 +28,16 @@ services: ports: - "8081:8080" depends_on: - - mongo - - cache - - task - - signer + mongo: + condition: service_started + cache: + condition: service_started + task: + condition: service_started + signer: + condition: service_started + keycloak: + condition: service_healthy task: container_name: task @@ -45,8 +51,12 @@ services: ports: - "8082:8080" depends_on: - - mongo - - cache + mongo: + condition: service_started + cache: + condition: service_started + keycloak: + condition: service_healthy cache: container_name: cache @@ -60,8 +70,12 @@ services: ports: - "8083:8080" depends_on: - - redis - - nats + redis: + condition: service_started + nats: + condition: service_started + keycloak: + condition: service_healthy infohub: container_name: infohub @@ -75,9 +89,14 @@ services: ports: - "8084:8080" depends_on: - - mongo - - policy - - signer + mongo: + condition: service_started + policy: + condition: service_started + signer: + condition: service_started + keycloak: + condition: service_healthy signer: container_name: signer @@ -92,8 +111,12 @@ services: - "8085:8080" - "2112:2112" depends_on: - - vault - - vault-init + vault: + condition: service_started + vault-init: + condition: service_started + keycloak: + condition: service_healthy didresolver: container_name: didresolver @@ -181,3 +204,24 @@ services: - "8222:8222" - "6222:6222" - "4222:4222" + + keycloak: + container_name: keycloak + image: quay.io/keycloak/keycloak:18.0.0 + environment: + KEYCLOAK_ADMIN: admin + KEYCLOAK_ADMIN_PASSWORD: admin + command: + - start-dev + - --import-realm + - --health-enabled=true + volumes: + - ./keycloak/config.json:/opt/keycloak/data/import/config.json + healthcheck: + test: [ "CMD-SHELL", "curl -f localhost:8080/health || exit 1" ] + interval: 3s + timeout: 2s + retries: 10 + start_period: 5s + ports: + - "8500:8080" diff --git a/env/cache.env b/env/cache.env index 0f36d567951423349d606a6c1db648d7cf06134e..ac8c9ef70a374f149aea787435ea9512956e72e8 100644 --- a/env/cache.env +++ b/env/cache.env @@ -10,6 +10,9 @@ REDIS_PASS="" REDIS_DB=0 REDIS_EXPIRATION="1h" NATS_ADDR="nats:4222" -AUTH_ENABLED="true" -AUTH_JWK_URL="http://jwks:8080/key" +AUTH_ENABLED="false" +AUTH_JWK_URL="http://keycloak:8080/realms/workspace/protocol/openid-connect/certs" AUTH_REFRESH_INTERVAL="1h" +OAUTH_CLIENT_ID="workspace" +OAUTH_CLIENT_SECRET="79bdTGYCKLz9wYSY61vpQF5d4CyZBpsZ" +OAUTH_TOKEN_URL="http://keycloak:8080/realms/workspace/protocol/openid-connect/token" diff --git a/env/infohub.env b/env/infohub.env index ac2077170ca587927e5476629abea6460d1b803a..12732536f1c3b7d74a9ef212dfa98e4f8482a479 100644 --- a/env/infohub.env +++ b/env/infohub.env @@ -11,3 +11,9 @@ CACHE_ADDR="http://cache:8080" POLICY_ADDR="http://policy:8080" SIGNER_ADDR="http://signer:8080" ISSUER_URI="did:web:17a1-2a00-4802-2c0-9295-59ff-6a60-b735-32ea.eu.ngrok.io:policy:policy:example:returnDID:1.0:evaluation" +AUTH_ENABLED="false" +AUTH_JWK_URL="http://keycloak:8080/realms/workspace/protocol/openid-connect/certs" +AUTH_REFRESH_INTERVAL="1h" +OAUTH_CLIENT_ID="workspace" +OAUTH_CLIENT_SECRET="79bdTGYCKLz9wYSY61vpQF5d4CyZBpsZ" +OAUTH_TOKEN_URL="http://keycloak:8080/realms/workspace/protocol/openid-connect/token" diff --git a/env/policy.env b/env/policy.env index abf02c5845c8254834ddfaa9c6b3a0a0eeaed473..b8a5a9d4ed011709448e35120b7b085850277829 100644 --- a/env/policy.env +++ b/env/policy.env @@ -14,3 +14,9 @@ TASK_ADDR="http://task:8080" SIGNER_ADDR="http://signer:8080" DID_RESOLVER_ADDR="http://didresolver:8080" OCM_ADDR="https://gaiax.vereign.com/ocm" +AUTH_ENABLED="false" +AUTH_JWK_URL="http://keycloak:8080/realms/workspace/protocol/openid-connect/certs" +AUTH_REFRESH_INTERVAL="1h" +OAUTH_CLIENT_ID="workspace" +OAUTH_CLIENT_SECRET="79bdTGYCKLz9wYSY61vpQF5d4CyZBpsZ" +OAUTH_TOKEN_URL="http://keycloak:8080/realms/workspace/protocol/openid-connect/token" diff --git a/env/signer.env b/env/signer.env index ca37a56055b28d5a0f859960cd55c1b8d3afd037..a07c5818973a0301a56fcffea922c4e2849a32aa 100644 --- a/env/signer.env +++ b/env/signer.env @@ -9,3 +9,6 @@ VAULT_TOKEN=root VAULT_SIGNING_KEY="key1" VAULT_SUPPORTED_KEYS="ed25519,ecdsa-p256,ecdsa-p384,ecdsa-p521" CREDENTIAL_ISSUER="did:web:17a1-2a00-4802-2c0-9295-59ff-6a60-b735-32ea.eu.ngrok.io:policy:policy:example:returnDID:1.0:evaluation" +AUTH_ENABLED="false" +AUTH_JWK_URL="http://keycloak:8080/realms/workspace/protocol/openid-connect/certs" +AUTH_REFRESH_INTERVAL="1h" \ No newline at end of file diff --git a/env/task.env b/env/task.env index 88d518562cae57ae453a22a7f6884172d5e4a37b..12c0a0fd8861cddc21d5103f771b366a0a69bc35 100644 --- a/env/task.env +++ b/env/task.env @@ -9,4 +9,9 @@ MONGO_USER="root" MONGO_PASS="root" POLICY_ADDR="http://policy:8080" CACHE_ADDR="http://cache:8080" - +AUTH_ENABLED="false" +AUTH_JWK_URL="http://keycloak:8080/realms/workspace/protocol/openid-connect/certs" +AUTH_REFRESH_INTERVAL="1h" +OAUTH_CLIENT_ID="workspace" +OAUTH_CLIENT_SECRET="79bdTGYCKLz9wYSY61vpQF5d4CyZBpsZ" +OAUTH_TOKEN_URL="http://keycloak:8080/realms/workspace/protocol/openid-connect/token" diff --git a/keycloak/config.json b/keycloak/config.json new file mode 100755 index 0000000000000000000000000000000000000000..7feaef64fa9c1f5d467a31e03983889aa75c6370 --- /dev/null +++ b/keycloak/config.json @@ -0,0 +1,1885 @@ +{ + "id" : "workspace", + "realm" : "workspace", + "notBefore" : 0, + "defaultSignatureAlgorithm" : "RS256", + "revokeRefreshToken" : false, + "refreshTokenMaxReuse" : 0, + "accessTokenLifespan" : 300, + "accessTokenLifespanForImplicitFlow" : 900, + "ssoSessionIdleTimeout" : 1800, + "ssoSessionMaxLifespan" : 36000, + "ssoSessionIdleTimeoutRememberMe" : 0, + "ssoSessionMaxLifespanRememberMe" : 0, + "offlineSessionIdleTimeout" : 2592000, + "offlineSessionMaxLifespanEnabled" : false, + "offlineSessionMaxLifespan" : 5184000, + "clientSessionIdleTimeout" : 0, + "clientSessionMaxLifespan" : 0, + "clientOfflineSessionIdleTimeout" : 0, + "clientOfflineSessionMaxLifespan" : 0, + "accessCodeLifespan" : 60, + "accessCodeLifespanUserAction" : 300, + "accessCodeLifespanLogin" : 1800, + "actionTokenGeneratedByAdminLifespan" : 43200, + "actionTokenGeneratedByUserLifespan" : 300, + "oauth2DeviceCodeLifespan" : 600, + "oauth2DevicePollingInterval" : 5, + "enabled" : true, + "sslRequired" : "external", + "registrationAllowed" : false, + "registrationEmailAsUsername" : false, + "rememberMe" : false, + "verifyEmail" : false, + "loginWithEmailAllowed" : true, + "duplicateEmailsAllowed" : false, + "resetPasswordAllowed" : false, + "editUsernameAllowed" : false, + "bruteForceProtected" : false, + "permanentLockout" : false, + "maxFailureWaitSeconds" : 900, + "minimumQuickLoginWaitSeconds" : 60, + "waitIncrementSeconds" : 60, + "quickLoginCheckMilliSeconds" : 1000, + "maxDeltaTimeSeconds" : 43200, + "failureFactor" : 30, + "roles" : { + "realm" : [ { + "id" : "1c526b7a-28c0-47a5-aec0-29f943075f91", + "name" : "uma_authorization", + "description" : "${role_uma_authorization}", + "composite" : false, + "clientRole" : false, + "containerId" : "workspace", + "attributes" : { } + }, { + "id" : "b26c1bab-a4d3-4ca2-ad30-dc105874ee96", + "name" : "default-roles-workspace", + "description" : "${role_default-roles}", + "composite" : true, + "composites" : { + "realm" : [ "offline_access", "uma_authorization" ], + "client" : { + "account" : [ "manage-account", "view-profile" ] + } + }, + "clientRole" : false, + "containerId" : "workspace", + "attributes" : { } + }, { + "id" : "5d066a2a-170a-4e18-93c8-c41693182373", + "name" : "offline_access", + "description" : "${role_offline-access}", + "composite" : false, + "clientRole" : false, + "containerId" : "workspace", + "attributes" : { } + } ], + "client" : { + "realm-management" : [ { + "id" : "88096272-d90e-4f76-ba17-840ee69db754", + "name" : "create-client", + "description" : "${role_create-client}", + "composite" : false, + "clientRole" : true, + "containerId" : "601c29ae-ce82-452e-9b12-b408ccde392f", + "attributes" : { } + }, { + "id" : "765d436c-af28-4e14-9408-c82820f3e372", + "name" : "manage-realm", + "description" : "${role_manage-realm}", + "composite" : false, + "clientRole" : true, + "containerId" : "601c29ae-ce82-452e-9b12-b408ccde392f", + "attributes" : { } + }, { + "id" : "a4143506-925d-429c-958a-e18ecbd56c09", + "name" : "view-authorization", + "description" : "${role_view-authorization}", + "composite" : false, + "clientRole" : true, + "containerId" : "601c29ae-ce82-452e-9b12-b408ccde392f", + "attributes" : { } + }, { + "id" : "e4891fb9-e1fa-4033-a4ff-56e5352dce16", + "name" : "impersonation", + "description" : "${role_impersonation}", + "composite" : false, + "clientRole" : true, + "containerId" : "601c29ae-ce82-452e-9b12-b408ccde392f", + "attributes" : { } + }, { + "id" : "907f9311-aecd-451d-8807-80da72a99fbf", + "name" : "manage-identity-providers", + "description" : "${role_manage-identity-providers}", + "composite" : false, + "clientRole" : true, + "containerId" : "601c29ae-ce82-452e-9b12-b408ccde392f", + "attributes" : { } + }, { + "id" : "732a76cd-56e2-4fa9-957a-903b6bc44a95", + "name" : "view-users", + "description" : "${role_view-users}", + "composite" : true, + "composites" : { + "client" : { + "realm-management" : [ "query-groups", "query-users" ] + } + }, + "clientRole" : true, + "containerId" : "601c29ae-ce82-452e-9b12-b408ccde392f", + "attributes" : { } + }, { + "id" : "d3eec519-c389-466e-b41f-530779ad3d59", + "name" : "manage-authorization", + "description" : "${role_manage-authorization}", + "composite" : false, + "clientRole" : true, + "containerId" : "601c29ae-ce82-452e-9b12-b408ccde392f", + "attributes" : { } + }, { + "id" : "732c2aca-c712-4a5b-8df6-5a9b5d9a9835", + "name" : "query-clients", + "description" : "${role_query-clients}", + "composite" : false, + "clientRole" : true, + "containerId" : "601c29ae-ce82-452e-9b12-b408ccde392f", + "attributes" : { } + }, { + "id" : "641a0557-6674-406c-8bc4-3a7bf279e40c", + "name" : "query-users", + "description" : "${role_query-users}", + "composite" : false, + "clientRole" : true, + "containerId" : "601c29ae-ce82-452e-9b12-b408ccde392f", + "attributes" : { } + }, { + "id" : "904cbf7c-3068-4dba-9733-18b74366e860", + "name" : "view-identity-providers", + "description" : "${role_view-identity-providers}", + "composite" : false, + "clientRole" : true, + "containerId" : "601c29ae-ce82-452e-9b12-b408ccde392f", + "attributes" : { } + }, { + "id" : "5ec30d1b-8cd3-4982-ad20-9d4650572ee6", + "name" : "view-events", + "description" : "${role_view-events}", + "composite" : false, + "clientRole" : true, + "containerId" : "601c29ae-ce82-452e-9b12-b408ccde392f", + "attributes" : { } + }, { + "id" : "a96452be-2801-4674-be18-f747f5c80f0f", + "name" : "manage-clients", + "description" : "${role_manage-clients}", + "composite" : false, + "clientRole" : true, + "containerId" : "601c29ae-ce82-452e-9b12-b408ccde392f", + "attributes" : { } + }, { + "id" : "0a7f2d45-7725-40b0-a21a-f8554341e780", + "name" : "view-clients", + "description" : "${role_view-clients}", + "composite" : true, + "composites" : { + "client" : { + "realm-management" : [ "query-clients" ] + } + }, + "clientRole" : true, + "containerId" : "601c29ae-ce82-452e-9b12-b408ccde392f", + "attributes" : { } + }, { + "id" : "3dc64ab3-9b0c-4bee-b952-793966f69a93", + "name" : "realm-admin", + "description" : "${role_realm-admin}", + "composite" : true, + "composites" : { + "client" : { + "realm-management" : [ "create-client", "manage-realm", "view-authorization", "impersonation", "view-users", "manage-identity-providers", "manage-authorization", "query-users", "query-clients", "view-identity-providers", "view-events", "view-clients", "manage-clients", "view-realm", "query-groups", "manage-events", "query-realms", "manage-users" ] + } + }, + "clientRole" : true, + "containerId" : "601c29ae-ce82-452e-9b12-b408ccde392f", + "attributes" : { } + }, { + "id" : "d68a606e-f4f1-4594-b7cf-4b03d88bf1d6", + "name" : "view-realm", + "description" : "${role_view-realm}", + "composite" : false, + "clientRole" : true, + "containerId" : "601c29ae-ce82-452e-9b12-b408ccde392f", + "attributes" : { } + }, { + "id" : "0badd04d-f7cd-48b4-8977-aed9dd6a7576", + "name" : "query-groups", + "description" : "${role_query-groups}", + "composite" : false, + "clientRole" : true, + "containerId" : "601c29ae-ce82-452e-9b12-b408ccde392f", + "attributes" : { } + }, { + "id" : "039099f1-0b07-4e23-bff7-059c61fb4dfa", + "name" : "manage-events", + "description" : "${role_manage-events}", + "composite" : false, + "clientRole" : true, + "containerId" : "601c29ae-ce82-452e-9b12-b408ccde392f", + "attributes" : { } + }, { + "id" : "c8876ad0-ff8b-4c07-b613-6e9ee27dffda", + "name" : "query-realms", + "description" : "${role_query-realms}", + "composite" : false, + "clientRole" : true, + "containerId" : "601c29ae-ce82-452e-9b12-b408ccde392f", + "attributes" : { } + }, { + "id" : "dab08df7-f16d-46bd-8fed-4d3af256a481", + "name" : "manage-users", + "description" : "${role_manage-users}", + "composite" : false, + "clientRole" : true, + "containerId" : "601c29ae-ce82-452e-9b12-b408ccde392f", + "attributes" : { } + } ], + "workspace" : [ ], + "security-admin-console" : [ ], + "admin-cli" : [ ], + "account-console" : [ ], + "broker" : [ { + "id" : "e8383f80-dca9-44f6-b87a-06197be407bf", + "name" : "read-token", + "description" : "${role_read-token}", + "composite" : false, + "clientRole" : true, + "containerId" : "d8ff5a88-70e9-4255-b952-c8a7ac2fe45a", + "attributes" : { } + } ], + "account" : [ { + "id" : "1d34a5b2-2f7f-4c91-bc74-71b0a06db79d", + "name" : "view-applications", + "description" : "${role_view-applications}", + "composite" : false, + "clientRole" : true, + "containerId" : "91ee30e5-b866-47f8-a85b-0d8c9a8bbd1a", + "attributes" : { } + }, { + "id" : "75d9c49a-c7ac-4d01-9aab-3a631953a81d", + "name" : "view-consent", + "description" : "${role_view-consent}", + "composite" : false, + "clientRole" : true, + "containerId" : "91ee30e5-b866-47f8-a85b-0d8c9a8bbd1a", + "attributes" : { } + }, { + "id" : "8fbbdc70-82de-4993-8728-2f12e1e47885", + "name" : "delete-account", + "description" : "${role_delete-account}", + "composite" : false, + "clientRole" : true, + "containerId" : "91ee30e5-b866-47f8-a85b-0d8c9a8bbd1a", + "attributes" : { } + }, { + "id" : "06d84f72-07a5-47fd-8c2d-0c551003328d", + "name" : "manage-account", + "description" : "${role_manage-account}", + "composite" : true, + "composites" : { + "client" : { + "account" : [ "manage-account-links" ] + } + }, + "clientRole" : true, + "containerId" : "91ee30e5-b866-47f8-a85b-0d8c9a8bbd1a", + "attributes" : { } + }, { + "id" : "e9948c4f-4001-4322-bd7c-bcc53ab57b3d", + "name" : "manage-consent", + "description" : "${role_manage-consent}", + "composite" : true, + "composites" : { + "client" : { + "account" : [ "view-consent" ] + } + }, + "clientRole" : true, + "containerId" : "91ee30e5-b866-47f8-a85b-0d8c9a8bbd1a", + "attributes" : { } + }, { + "id" : "aaa57ba7-a8bc-4aac-998c-889e91ba4cb2", + "name" : "view-profile", + "description" : "${role_view-profile}", + "composite" : false, + "clientRole" : true, + "containerId" : "91ee30e5-b866-47f8-a85b-0d8c9a8bbd1a", + "attributes" : { } + }, { + "id" : "b966c1e2-26c7-43ea-8a28-c87812afcfcf", + "name" : "manage-account-links", + "description" : "${role_manage-account-links}", + "composite" : false, + "clientRole" : true, + "containerId" : "91ee30e5-b866-47f8-a85b-0d8c9a8bbd1a", + "attributes" : { } + } ] + } + }, + "groups" : [ ], + "defaultRole" : { + "id" : "b26c1bab-a4d3-4ca2-ad30-dc105874ee96", + "name" : "default-roles-workspace", + "description" : "${role_default-roles}", + "composite" : true, + "clientRole" : false, + "containerId" : "workspace" + }, + "requiredCredentials" : [ "password" ], + "otpPolicyType" : "totp", + "otpPolicyAlgorithm" : "HmacSHA1", + "otpPolicyInitialCounter" : 0, + "otpPolicyDigits" : 6, + "otpPolicyLookAheadWindow" : 1, + "otpPolicyPeriod" : 30, + "otpSupportedApplications" : [ "FreeOTP", "Google Authenticator" ], + "webAuthnPolicyRpEntityName" : "keycloak", + "webAuthnPolicySignatureAlgorithms" : [ "ES256" ], + "webAuthnPolicyRpId" : "", + "webAuthnPolicyAttestationConveyancePreference" : "not specified", + "webAuthnPolicyAuthenticatorAttachment" : "not specified", + "webAuthnPolicyRequireResidentKey" : "not specified", + "webAuthnPolicyUserVerificationRequirement" : "not specified", + "webAuthnPolicyCreateTimeout" : 0, + "webAuthnPolicyAvoidSameAuthenticatorRegister" : false, + "webAuthnPolicyAcceptableAaguids" : [ ], + "webAuthnPolicyPasswordlessRpEntityName" : "keycloak", + "webAuthnPolicyPasswordlessSignatureAlgorithms" : [ "ES256" ], + "webAuthnPolicyPasswordlessRpId" : "", + "webAuthnPolicyPasswordlessAttestationConveyancePreference" : "not specified", + "webAuthnPolicyPasswordlessAuthenticatorAttachment" : "not specified", + "webAuthnPolicyPasswordlessRequireResidentKey" : "not specified", + "webAuthnPolicyPasswordlessUserVerificationRequirement" : "not specified", + "webAuthnPolicyPasswordlessCreateTimeout" : 0, + "webAuthnPolicyPasswordlessAvoidSameAuthenticatorRegister" : false, + "webAuthnPolicyPasswordlessAcceptableAaguids" : [ ], + "users" : [ { + "id" : "1c9732e6-1a50-43aa-a21b-9218f1ce1003", + "createdTimestamp" : 1666785775228, + "username" : "service-account-workspace", + "enabled" : true, + "totp" : false, + "emailVerified" : false, + "serviceAccountClientId" : "workspace", + "credentials" : [ ], + "disableableCredentialTypes" : [ ], + "requiredActions" : [ ], + "realmRoles" : [ "default-roles-workspace" ], + "notBefore" : 0, + "groups" : [ ] + }, { + "id" : "e95d61a5-a3f3-498c-8de8-ed2907c4839f", + "createdTimestamp" : 1666784357923, + "username" : "signer", + "enabled" : true, + "totp" : false, + "emailVerified" : false, + "credentials" : [ { + "id" : "38f10b1e-bdc5-458d-b25a-99e70b49853d", + "type" : "password", + "createdDate" : 1666784368658, + "secretData" : "{\"value\":\"Z4nmpZQdCIud4I+OBH9HolRiyyc42ne51BbGmNitTH6twSZCe+qd25riOAkVBilphHzEUrbVYOmh7QeRNVmLWg==\",\"salt\":\"gEJ5XnTMnevuZPk6wZIUvQ==\",\"additionalParameters\":{}}", + "credentialData" : "{\"hashIterations\":27500,\"algorithm\":\"pbkdf2-sha256\",\"additionalParameters\":{}}" + } ], + "disableableCredentialTypes" : [ ], + "requiredActions" : [ ], + "realmRoles" : [ "default-roles-workspace" ], + "notBefore" : 0, + "groups" : [ ] + } ], + "scopeMappings" : [ { + "clientScope" : "offline_access", + "roles" : [ "offline_access" ] + } ], + "clientScopeMappings" : { + "account" : [ { + "client" : "account-console", + "roles" : [ "manage-account" ] + } ] + }, + "clients" : [ { + "id" : "91ee30e5-b866-47f8-a85b-0d8c9a8bbd1a", + "clientId" : "account", + "name" : "${client_account}", + "rootUrl" : "${authBaseUrl}", + "baseUrl" : "/realms/workspace/account/", + "surrogateAuthRequired" : false, + "enabled" : true, + "alwaysDisplayInConsole" : false, + "clientAuthenticatorType" : "client-secret", + "redirectUris" : [ "/realms/workspace/account/*" ], + "webOrigins" : [ ], + "notBefore" : 0, + "bearerOnly" : false, + "consentRequired" : false, + "standardFlowEnabled" : true, + "implicitFlowEnabled" : false, + "directAccessGrantsEnabled" : false, + "serviceAccountsEnabled" : false, + "publicClient" : true, + "frontchannelLogout" : false, + "protocol" : "openid-connect", + "attributes" : { }, + "authenticationFlowBindingOverrides" : { }, + "fullScopeAllowed" : false, + "nodeReRegistrationTimeout" : 0, + "defaultClientScopes" : [ "web-origins", "acr", "roles", "profile", "email" ], + "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] + }, { + "id" : "684d6aa5-714e-4c29-b195-4f2d2dcc5593", + "clientId" : "account-console", + "name" : "${client_account-console}", + "rootUrl" : "${authBaseUrl}", + "baseUrl" : "/realms/workspace/account/", + "surrogateAuthRequired" : false, + "enabled" : true, + "alwaysDisplayInConsole" : false, + "clientAuthenticatorType" : "client-secret", + "redirectUris" : [ "/realms/workspace/account/*" ], + "webOrigins" : [ ], + "notBefore" : 0, + "bearerOnly" : false, + "consentRequired" : false, + "standardFlowEnabled" : true, + "implicitFlowEnabled" : false, + "directAccessGrantsEnabled" : false, + "serviceAccountsEnabled" : false, + "publicClient" : true, + "frontchannelLogout" : false, + "protocol" : "openid-connect", + "attributes" : { + "pkce.code.challenge.method" : "S256" + }, + "authenticationFlowBindingOverrides" : { }, + "fullScopeAllowed" : false, + "nodeReRegistrationTimeout" : 0, + "protocolMappers" : [ { + "id" : "a23f97e6-2f46-4a2c-8506-dc837f1c116d", + "name" : "audience resolve", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-audience-resolve-mapper", + "consentRequired" : false, + "config" : { } + } ], + "defaultClientScopes" : [ "web-origins", "acr", "roles", "profile", "email" ], + "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] + }, { + "id" : "6ba2bf58-3032-4f5e-bbdc-b1b55b3cafcf", + "clientId" : "admin-cli", + "name" : "${client_admin-cli}", + "surrogateAuthRequired" : false, + "enabled" : true, + "alwaysDisplayInConsole" : false, + "clientAuthenticatorType" : "client-secret", + "redirectUris" : [ ], + "webOrigins" : [ ], + "notBefore" : 0, + "bearerOnly" : false, + "consentRequired" : false, + "standardFlowEnabled" : false, + "implicitFlowEnabled" : false, + "directAccessGrantsEnabled" : true, + "serviceAccountsEnabled" : false, + "publicClient" : true, + "frontchannelLogout" : false, + "protocol" : "openid-connect", + "attributes" : { }, + "authenticationFlowBindingOverrides" : { }, + "fullScopeAllowed" : false, + "nodeReRegistrationTimeout" : 0, + "defaultClientScopes" : [ "web-origins", "acr", "roles", "profile", "email" ], + "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] + }, { + "id" : "d8ff5a88-70e9-4255-b952-c8a7ac2fe45a", + "clientId" : "broker", + "name" : "${client_broker}", + "surrogateAuthRequired" : false, + "enabled" : true, + "alwaysDisplayInConsole" : false, + "clientAuthenticatorType" : "client-secret", + "redirectUris" : [ ], + "webOrigins" : [ ], + "notBefore" : 0, + "bearerOnly" : true, + "consentRequired" : false, + "standardFlowEnabled" : true, + "implicitFlowEnabled" : false, + "directAccessGrantsEnabled" : false, + "serviceAccountsEnabled" : false, + "publicClient" : false, + "frontchannelLogout" : false, + "protocol" : "openid-connect", + "attributes" : { }, + "authenticationFlowBindingOverrides" : { }, + "fullScopeAllowed" : false, + "nodeReRegistrationTimeout" : 0, + "defaultClientScopes" : [ "web-origins", "acr", "roles", "profile", "email" ], + "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] + }, { + "id" : "601c29ae-ce82-452e-9b12-b408ccde392f", + "clientId" : "realm-management", + "name" : "${client_realm-management}", + "surrogateAuthRequired" : false, + "enabled" : true, + "alwaysDisplayInConsole" : false, + "clientAuthenticatorType" : "client-secret", + "redirectUris" : [ ], + "webOrigins" : [ ], + "notBefore" : 0, + "bearerOnly" : true, + "consentRequired" : false, + "standardFlowEnabled" : true, + "implicitFlowEnabled" : false, + "directAccessGrantsEnabled" : false, + "serviceAccountsEnabled" : false, + "publicClient" : false, + "frontchannelLogout" : false, + "protocol" : "openid-connect", + "attributes" : { }, + "authenticationFlowBindingOverrides" : { }, + "fullScopeAllowed" : false, + "nodeReRegistrationTimeout" : 0, + "defaultClientScopes" : [ "web-origins", "acr", "roles", "profile", "email" ], + "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] + }, { + "id" : "0769b24b-b997-40ea-a4ec-4c017d3bc89c", + "clientId" : "security-admin-console", + "name" : "${client_security-admin-console}", + "rootUrl" : "${authAdminUrl}", + "baseUrl" : "/admin/workspace/console/", + "surrogateAuthRequired" : false, + "enabled" : true, + "alwaysDisplayInConsole" : false, + "clientAuthenticatorType" : "client-secret", + "redirectUris" : [ "/admin/workspace/console/*" ], + "webOrigins" : [ "+" ], + "notBefore" : 0, + "bearerOnly" : false, + "consentRequired" : false, + "standardFlowEnabled" : true, + "implicitFlowEnabled" : false, + "directAccessGrantsEnabled" : false, + "serviceAccountsEnabled" : false, + "publicClient" : true, + "frontchannelLogout" : false, + "protocol" : "openid-connect", + "attributes" : { + "pkce.code.challenge.method" : "S256" + }, + "authenticationFlowBindingOverrides" : { }, + "fullScopeAllowed" : false, + "nodeReRegistrationTimeout" : 0, + "protocolMappers" : [ { + "id" : "2522f1da-d381-47e9-910c-17e1fc9341cc", + "name" : "locale", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "userinfo.token.claim" : "true", + "user.attribute" : "locale", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "locale", + "jsonType.label" : "String" + } + } ], + "defaultClientScopes" : [ "web-origins", "acr", "roles", "profile", "email" ], + "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] + }, { + "id" : "3bf9b7e9-cb9d-408c-97e0-1a22f9c6ac53", + "clientId" : "workspace", + "rootUrl" : "http://localhost:8500/", + "adminUrl" : "http://localhost:8500/", + "surrogateAuthRequired" : false, + "enabled" : true, + "alwaysDisplayInConsole" : false, + "clientAuthenticatorType" : "client-secret", + "secret" : "79bdTGYCKLz9wYSY61vpQF5d4CyZBpsZ", + "redirectUris" : [ "http://localhost:8500/*" ], + "webOrigins" : [ "http://localhost:8500" ], + "notBefore" : 0, + "bearerOnly" : false, + "consentRequired" : false, + "standardFlowEnabled" : false, + "implicitFlowEnabled" : false, + "directAccessGrantsEnabled" : false, + "serviceAccountsEnabled" : true, + "publicClient" : false, + "frontchannelLogout" : false, + "protocol" : "openid-connect", + "attributes" : { + "access.token.lifespan" : "3600", + "saml.force.post.binding" : "false", + "saml.multivalued.roles" : "false", + "frontchannel.logout.session.required" : "false", + "oauth2.device.authorization.grant.enabled" : "false", + "backchannel.logout.revoke.offline.tokens" : "false", + "saml.server.signature.keyinfo.ext" : "false", + "use.refresh.tokens" : "false", + "oidc.ciba.grant.enabled" : "false", + "backchannel.logout.session.required" : "true", + "client_credentials.use_refresh_token" : "false", + "require.pushed.authorization.requests" : "false", + "saml.client.signature" : "false", + "saml.allow.ecp.flow" : "false", + "id.token.as.detached.signature" : "false", + "saml.assertion.signature" : "false", + "client.secret.creation.time" : "1666783980", + "saml.encrypt" : "false", + "saml.server.signature" : "false", + "exclude.session.state.from.auth.response" : "false", + "saml.artifact.binding" : "false", + "saml_force_name_id_format" : "false", + "acr.loa.map" : "{}", + "tls.client.certificate.bound.access.tokens" : "false", + "saml.authnstatement" : "false", + "display.on.consent.screen" : "false", + "token.response.type.bearer.lower-case" : "false", + "saml.onetimeuse.condition" : "false" + }, + "authenticationFlowBindingOverrides" : { + "direct_grant" : "4a4ecd57-0047-4916-89d1-a8b86850d648", + "browser" : "43e280fc-b6d6-4eed-906f-6e312abdb664" + }, + "fullScopeAllowed" : true, + "nodeReRegistrationTimeout" : -1, + "protocolMappers" : [ { + "id" : "6b09eee9-d37c-4d25-879a-c0e9d79a2b1c", + "name" : "Client ID", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usersessionmodel-note-mapper", + "consentRequired" : false, + "config" : { + "user.session.note" : "clientId", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "clientId", + "jsonType.label" : "String" + } + }, { + "id" : "c033ad91-09ed-4a12-b560-9ea70b9e000f", + "name" : "Client Host", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usersessionmodel-note-mapper", + "consentRequired" : false, + "config" : { + "user.session.note" : "clientHost", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "clientHost", + "jsonType.label" : "String" + } + }, { + "id" : "b900d147-9753-49b0-8afd-00269e064936", + "name" : "Client IP Address", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usersessionmodel-note-mapper", + "consentRequired" : false, + "config" : { + "user.session.note" : "clientAddress", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "clientAddress", + "jsonType.label" : "String" + } + } ], + "defaultClientScopes" : [ "web-origins", "acr", "roles", "profile", "email" ], + "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] + } ], + "clientScopes" : [ { + "id" : "940b2557-8009-48f7-b856-5f4396df463b", + "name" : "web-origins", + "description" : "OpenID Connect scope for add allowed web origins to the access token", + "protocol" : "openid-connect", + "attributes" : { + "include.in.token.scope" : "false", + "display.on.consent.screen" : "false", + "consent.screen.text" : "" + }, + "protocolMappers" : [ { + "id" : "adfcd344-6c9c-4923-ad80-c7a71a920428", + "name" : "allowed web origins", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-allowed-origins-mapper", + "consentRequired" : false, + "config" : { } + } ] + }, { + "id" : "dccea698-7706-4f4e-af80-3b0b7aed0df4", + "name" : "roles", + "description" : "OpenID Connect scope for add user roles to the access token", + "protocol" : "openid-connect", + "attributes" : { + "include.in.token.scope" : "false", + "display.on.consent.screen" : "true", + "consent.screen.text" : "${rolesScopeConsentText}" + }, + "protocolMappers" : [ { + "id" : "03de2044-d565-4dad-97c7-bb127cbf5c87", + "name" : "client roles", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-client-role-mapper", + "consentRequired" : false, + "config" : { + "user.attribute" : "foo", + "access.token.claim" : "true", + "claim.name" : "resource_access.${client_id}.roles", + "jsonType.label" : "String", + "multivalued" : "true" + } + }, { + "id" : "085c7590-822f-46ef-a2d5-bae5665d06b1", + "name" : "audience resolve", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-audience-resolve-mapper", + "consentRequired" : false, + "config" : { } + }, { + "id" : "818d871e-abc9-408c-992c-33cd9445467f", + "name" : "realm roles", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-realm-role-mapper", + "consentRequired" : false, + "config" : { + "user.attribute" : "foo", + "access.token.claim" : "true", + "claim.name" : "realm_access.roles", + "jsonType.label" : "String", + "multivalued" : "true" + } + } ] + }, { + "id" : "3e932ca1-1169-4b98-b5e8-821e1678a8c2", + "name" : "role_list", + "description" : "SAML role list", + "protocol" : "saml", + "attributes" : { + "consent.screen.text" : "${samlRoleListScopeConsentText}", + "display.on.consent.screen" : "true" + }, + "protocolMappers" : [ { + "id" : "4db78a1a-5eff-427c-a729-3811b33fa2d8", + "name" : "role list", + "protocol" : "saml", + "protocolMapper" : "saml-role-list-mapper", + "consentRequired" : false, + "config" : { + "single" : "false", + "attribute.nameformat" : "Basic", + "attribute.name" : "Role" + } + } ] + }, { + "id" : "ff8d7148-3b1c-434f-82e5-2a06639a594d", + "name" : "microprofile-jwt", + "description" : "Microprofile - JWT built-in scope", + "protocol" : "openid-connect", + "attributes" : { + "include.in.token.scope" : "true", + "display.on.consent.screen" : "false" + }, + "protocolMappers" : [ { + "id" : "581331a9-f58c-44af-8871-40c9db911175", + "name" : "upn", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-property-mapper", + "consentRequired" : false, + "config" : { + "userinfo.token.claim" : "true", + "user.attribute" : "username", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "upn", + "jsonType.label" : "String" + } + }, { + "id" : "3a5a3cdf-98ca-4297-a610-f20d6596f6ea", + "name" : "groups", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-realm-role-mapper", + "consentRequired" : false, + "config" : { + "multivalued" : "true", + "user.attribute" : "foo", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "groups", + "jsonType.label" : "String" + } + } ] + }, { + "id" : "e7c4c3d2-8ae9-469d-bd67-262171d3aec8", + "name" : "address", + "description" : "OpenID Connect built-in scope: address", + "protocol" : "openid-connect", + "attributes" : { + "include.in.token.scope" : "true", + "display.on.consent.screen" : "true", + "consent.screen.text" : "${addressScopeConsentText}" + }, + "protocolMappers" : [ { + "id" : "f9aa0066-0101-4429-9364-4f1a1d4222c6", + "name" : "address", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-address-mapper", + "consentRequired" : false, + "config" : { + "user.attribute.formatted" : "formatted", + "user.attribute.country" : "country", + "user.attribute.postal_code" : "postal_code", + "userinfo.token.claim" : "true", + "user.attribute.street" : "street", + "id.token.claim" : "true", + "user.attribute.region" : "region", + "access.token.claim" : "true", + "user.attribute.locality" : "locality" + } + } ] + }, { + "id" : "116d668b-c651-45e8-bf86-4eeeb5f15ab8", + "name" : "profile", + "description" : "OpenID Connect built-in scope: profile", + "protocol" : "openid-connect", + "attributes" : { + "include.in.token.scope" : "true", + "display.on.consent.screen" : "true", + "consent.screen.text" : "${profileScopeConsentText}" + }, + "protocolMappers" : [ { + "id" : "8f2d9d2c-f4e4-4a4e-85c7-467009799c27", + "name" : "middle name", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "userinfo.token.claim" : "true", + "user.attribute" : "middleName", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "middle_name", + "jsonType.label" : "String" + } + }, { + "id" : "31acc2d9-f2db-4954-ad59-3df731c2ef0b", + "name" : "nickname", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "userinfo.token.claim" : "true", + "user.attribute" : "nickname", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "nickname", + "jsonType.label" : "String" + } + }, { + "id" : "cac418c2-beaf-4476-9f3e-fe4bacc325c9", + "name" : "zoneinfo", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "userinfo.token.claim" : "true", + "user.attribute" : "zoneinfo", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "zoneinfo", + "jsonType.label" : "String" + } + }, { + "id" : "1408f824-2e67-459b-aea7-264b65906fe7", + "name" : "locale", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "userinfo.token.claim" : "true", + "user.attribute" : "locale", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "locale", + "jsonType.label" : "String" + } + }, { + "id" : "5e02164d-f50c-4b45-9e35-e02f5cd04cea", + "name" : "family name", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-property-mapper", + "consentRequired" : false, + "config" : { + "userinfo.token.claim" : "true", + "user.attribute" : "lastName", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "family_name", + "jsonType.label" : "String" + } + }, { + "id" : "ece559ef-6dd7-41e5-adfe-07cd8d4792c6", + "name" : "gender", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "userinfo.token.claim" : "true", + "user.attribute" : "gender", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "gender", + "jsonType.label" : "String" + } + }, { + "id" : "3f1ea1f0-ea30-486c-8735-38b7a890478f", + "name" : "given name", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-property-mapper", + "consentRequired" : false, + "config" : { + "userinfo.token.claim" : "true", + "user.attribute" : "firstName", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "given_name", + "jsonType.label" : "String" + } + }, { + "id" : "9281d2ea-b77e-4be6-851e-3bcf72851de4", + "name" : "full name", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-full-name-mapper", + "consentRequired" : false, + "config" : { + "id.token.claim" : "true", + "access.token.claim" : "true", + "userinfo.token.claim" : "true" + } + }, { + "id" : "b0701d18-9ebe-4ac0-bd6c-f0dcbdcd8440", + "name" : "username", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-property-mapper", + "consentRequired" : false, + "config" : { + "userinfo.token.claim" : "true", + "user.attribute" : "username", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "preferred_username", + "jsonType.label" : "String" + } + }, { + "id" : "6d250a51-da6b-4c89-a9d5-350be8542718", + "name" : "website", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "userinfo.token.claim" : "true", + "user.attribute" : "website", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "website", + "jsonType.label" : "String" + } + }, { + "id" : "fa0111d1-10ca-4915-a58f-10348dbc6ad3", + "name" : "picture", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "userinfo.token.claim" : "true", + "user.attribute" : "picture", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "picture", + "jsonType.label" : "String" + } + }, { + "id" : "a7b30dbd-82a4-4be4-88c0-9b256910399c", + "name" : "updated at", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "userinfo.token.claim" : "true", + "user.attribute" : "updatedAt", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "updated_at", + "jsonType.label" : "long" + } + }, { + "id" : "0c771fb7-9c49-4358-a9f8-d636db6d2a2a", + "name" : "birthdate", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "userinfo.token.claim" : "true", + "user.attribute" : "birthdate", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "birthdate", + "jsonType.label" : "String" + } + }, { + "id" : "0f67d221-254c-454e-8148-832a089a772f", + "name" : "profile", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "userinfo.token.claim" : "true", + "user.attribute" : "profile", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "profile", + "jsonType.label" : "String" + } + } ] + }, { + "id" : "29363996-9330-4536-9c87-bff67af5882e", + "name" : "acr", + "description" : "OpenID Connect scope for add acr (authentication context class reference) to the token", + "protocol" : "openid-connect", + "attributes" : { + "include.in.token.scope" : "false", + "display.on.consent.screen" : "false" + }, + "protocolMappers" : [ { + "id" : "aaa4a9dc-4d62-4941-8afc-d25d7539908d", + "name" : "acr loa level", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-acr-mapper", + "consentRequired" : false, + "config" : { + "id.token.claim" : "true", + "access.token.claim" : "true" + } + } ] + }, { + "id" : "23c17eda-4e0c-479d-ab8e-c38672241c76", + "name" : "email", + "description" : "OpenID Connect built-in scope: email", + "protocol" : "openid-connect", + "attributes" : { + "include.in.token.scope" : "true", + "display.on.consent.screen" : "true", + "consent.screen.text" : "${emailScopeConsentText}" + }, + "protocolMappers" : [ { + "id" : "eaa32e7e-693f-44be-9178-243d5cab3db5", + "name" : "email", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-property-mapper", + "consentRequired" : false, + "config" : { + "userinfo.token.claim" : "true", + "user.attribute" : "email", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "email", + "jsonType.label" : "String" + } + }, { + "id" : "fc3190df-a543-43d9-bcc3-c0ed1726fb74", + "name" : "email verified", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-property-mapper", + "consentRequired" : false, + "config" : { + "userinfo.token.claim" : "true", + "user.attribute" : "emailVerified", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "email_verified", + "jsonType.label" : "boolean" + } + } ] + }, { + "id" : "1ee99458-3ff2-4742-b008-5685646d8016", + "name" : "offline_access", + "description" : "OpenID Connect built-in scope: offline_access", + "protocol" : "openid-connect", + "attributes" : { + "consent.screen.text" : "${offlineAccessScopeConsentText}", + "display.on.consent.screen" : "true" + } + }, { + "id" : "7976bdeb-8636-47e3-a8c0-58eafbfdb63c", + "name" : "phone", + "description" : "OpenID Connect built-in scope: phone", + "protocol" : "openid-connect", + "attributes" : { + "include.in.token.scope" : "true", + "display.on.consent.screen" : "true", + "consent.screen.text" : "${phoneScopeConsentText}" + }, + "protocolMappers" : [ { + "id" : "b30fdd74-4ee8-42d1-9d4a-2b140559c403", + "name" : "phone number verified", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "userinfo.token.claim" : "true", + "user.attribute" : "phoneNumberVerified", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "phone_number_verified", + "jsonType.label" : "boolean" + } + }, { + "id" : "b12022f3-403d-48e2-a05c-39ece78e94c7", + "name" : "phone number", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "userinfo.token.claim" : "true", + "user.attribute" : "phoneNumber", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "phone_number", + "jsonType.label" : "String" + } + } ] + } ], + "defaultDefaultClientScopes" : [ "role_list", "profile", "email", "roles", "web-origins", "acr" ], + "defaultOptionalClientScopes" : [ "offline_access", "address", "phone", "microprofile-jwt" ], + "browserSecurityHeaders" : { + "contentSecurityPolicyReportOnly" : "", + "xContentTypeOptions" : "nosniff", + "xRobotsTag" : "none", + "xFrameOptions" : "SAMEORIGIN", + "contentSecurityPolicy" : "frame-src 'self'; frame-ancestors 'self'; object-src 'none';", + "xXSSProtection" : "1; mode=block", + "strictTransportSecurity" : "max-age=31536000; includeSubDomains" + }, + "smtpServer" : { }, + "eventsEnabled" : false, + "eventsListeners" : [ "jboss-logging" ], + "enabledEventTypes" : [ ], + "adminEventsEnabled" : false, + "adminEventsDetailsEnabled" : false, + "identityProviders" : [ ], + "identityProviderMappers" : [ ], + "components" : { + "org.keycloak.services.clientregistration.policy.ClientRegistrationPolicy" : [ { + "id" : "e0066bd7-e9fe-450a-8445-2a1d566b4ce0", + "name" : "Allowed Client Scopes", + "providerId" : "allowed-client-templates", + "subType" : "anonymous", + "subComponents" : { }, + "config" : { + "allow-default-scopes" : [ "true" ] + } + }, { + "id" : "b13748f7-f1ed-491a-a7bd-e025199b5077", + "name" : "Full Scope Disabled", + "providerId" : "scope", + "subType" : "anonymous", + "subComponents" : { }, + "config" : { } + }, { + "id" : "9c441c99-9602-4917-b5c1-59b6cf5ecd35", + "name" : "Allowed Protocol Mapper Types", + "providerId" : "allowed-protocol-mappers", + "subType" : "anonymous", + "subComponents" : { }, + "config" : { + "allowed-protocol-mapper-types" : [ "oidc-full-name-mapper", "oidc-usermodel-attribute-mapper", "oidc-sha256-pairwise-sub-mapper", "oidc-usermodel-property-mapper", "oidc-address-mapper", "saml-user-attribute-mapper", "saml-user-property-mapper", "saml-role-list-mapper" ] + } + }, { + "id" : "18028b17-78ac-476c-b7f2-691540c5fc51", + "name" : "Allowed Client Scopes", + "providerId" : "allowed-client-templates", + "subType" : "authenticated", + "subComponents" : { }, + "config" : { + "allow-default-scopes" : [ "true" ] + } + }, { + "id" : "bb0a56dc-98bb-4369-ab58-3a7af6431737", + "name" : "Consent Required", + "providerId" : "consent-required", + "subType" : "anonymous", + "subComponents" : { }, + "config" : { } + }, { + "id" : "5f88c6ec-1267-476f-882d-81ce3f1b34a3", + "name" : "Max Clients Limit", + "providerId" : "max-clients", + "subType" : "anonymous", + "subComponents" : { }, + "config" : { + "max-clients" : [ "200" ] + } + }, { + "id" : "46ba84aa-79f0-4bd6-878e-f6b12c1ece68", + "name" : "Allowed Protocol Mapper Types", + "providerId" : "allowed-protocol-mappers", + "subType" : "authenticated", + "subComponents" : { }, + "config" : { + "allowed-protocol-mapper-types" : [ "saml-user-attribute-mapper", "oidc-address-mapper", "saml-role-list-mapper", "oidc-sha256-pairwise-sub-mapper", "oidc-full-name-mapper", "oidc-usermodel-property-mapper", "oidc-usermodel-attribute-mapper", "saml-user-property-mapper" ] + } + }, { + "id" : "0ec2625b-e6e2-4f74-8a97-96365f14591f", + "name" : "Trusted Hosts", + "providerId" : "trusted-hosts", + "subType" : "anonymous", + "subComponents" : { }, + "config" : { + "host-sending-registration-request-must-match" : [ "true" ], + "client-uris-must-match" : [ "true" ] + } + } ], + "org.keycloak.keys.KeyProvider" : [ { + "id" : "f99df0e5-f7f8-4efc-b148-64c4443085e2", + "name" : "rsa-enc-generated", + "providerId" : "rsa-enc-generated", + "subComponents" : { }, + "config" : { + "privateKey" : [ "MIIEowIBAAKCAQEAkpCN6rfjcPfVOX1G7TBVOVTH/oTijxrXdFrUc3TW28xvTHnnDnlHMhjl96IGuveMnktapvmxx5J/9KpRKtZLRGzpDScHyEwYw/eX/b5jfmI86MvcprH40qUV6G20VNNHneK5RHLBFgqaBbK+ov8HEKuGCFOdDtKcmynCa5CLEetGXvFXpAne5oMa+dOJJ+6RsnrsVYfj317LF90uAHSfwtu3C9XL682uh6jPtChwNNP8PQzOjTLl8h8NOJNJE2kZphgvBwTAOidABUMUXD2h7raLas7jTl181TbH8p5b5XeqihBn/EXaEuAGrPFnDBcJv57r9trJbHRV6FxV1PR06wIDAQABAoIBAGJHgIKGMINODLLyKJ9gK6W4DivDm9BuJU+moJOTI4hb+74CeEeiV3VmcL6u7WhuGuMCkJUrFmVG/XpowujArdQCW/wv0e4j6O9vlYHXKwxSf5lzKlC1Qq6teJVVCvlee8WJhMY7VPKcxU9Q3riZ3nj1K3ll6AlKfS0mwXIziK3IXFCqk0IvwmDQbKFXfF2TrSTosXcEIQE1B3NZ0lFT2Jn7yVjPQmIjFXkAcQP8EX2cg7agorZIK8/zK/fAitxPgXbfDd043WBDf5/bl78aIa/MnMnqtXxQVULW94sET6wPr+kWX5078kRVcTqU6v8FDmJH0q8V6cH+Wy/yuPDFgOECgYEAzELbikF1royhlaaPJAji1fls7psJDXOtPaYbY7gXu7zveETVDdaco1KmxGa7/W19r+mOg2L1k4Q54uLCB/304kVX1JYw55tCzr0Pn7QSiKp/6RcbzeHiPwziM11tidK7y2Jyi7YnqR3Aa/Q3XzrmyzU9rsg9WtFZbfGsXoxaR2MCgYEAt7BqjLUzDdOsGxKU/vlGLjLo7Z4JBqWJ9bE47ohn1MMCxRUs4UJ4GnsHaj2/RqXXZy+YefvRcq13lGi8L680o9Ttw2ZiYHvvbgMPEq60gIPY+45pACfEUReuhXLbZ9Qgf6ZW2HdnHZqoYr1xwJXZ8I4McJpSZZm3z3LoQbv55tkCgYBJILqGoe7m4fRLpojipsfHQXgtaJXyGfLw+lId/l+I2BiH32TDgo0rr8CC2iD9l0CDRUO/aCNxf8pVn0dGIzaT9619L5Qspxpg97DrRUXJZflLUvmiWPduCUfGifFYgXi4VPObb0h9tGgafiGA146fO91sgMXuiLrSsM48P1Vm7wKBgEUNp/B/idLP2SpQQPzdPtnNP61cNK5v+r4HQozBcK8WJGtse3OvJjFmQLJaxhZL7/8VcG+jD+jZd1OuT9hpOBPCzyMe0SrOTIMB2V+/l5GcfyyKK8ToLjACBBScyghtQU5bfNhhgr0pT9XWu/WXH9gDvn9yNDmHoQb2foN/pAF5AoGBAIgbqGX1En34P24eVm1hKABxFJBB2kAAh4O7Uf3eN29AjE31nxjmoSMk+8cqTIgYmCn8/cpddddskriBvozycvc63bVKQKKamKyhg0jlwNXPJbFW91lGoi/dLrP3efbNTMaWLAUSkDurajw6jrqBUZFcx/zz9s0+4YhauzPY7juh" ], + "keyUse" : [ "ENC" ], + "certificate" : [ "MIICoTCCAYkCBgGEFBCzazANBgkqhkiG9w0BAQsFADAUMRIwEAYDVQQDDAl3b3Jrc3BhY2UwHhcNMjIxMDI2MTEzMDQ5WhcNMzIxMDI2MTEzMjI5WjAUMRIwEAYDVQQDDAl3b3Jrc3BhY2UwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCSkI3qt+Nw99U5fUbtMFU5VMf+hOKPGtd0WtRzdNbbzG9MeecOeUcyGOX3oga694yeS1qm+bHHkn/0qlEq1ktEbOkNJwfITBjD95f9vmN+Yjzoy9ymsfjSpRXobbRU00ed4rlEcsEWCpoFsr6i/wcQq4YIU50O0pybKcJrkIsR60Ze8VekCd7mgxr504kn7pGyeuxVh+PfXssX3S4AdJ/C27cL1cvrza6HqM+0KHA00/w9DM6NMuXyHw04k0kTaRmmGC8HBMA6J0AFQxRcPaHutotqzuNOXXzVNsfynlvld6qKEGf8RdoS4Aas8WcMFwm/nuv22slsdFXoXFXU9HTrAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAEA9oSzfIM1KQO3lDDj+cBFVAlFd4iZsmYQVkYxlPu7ipRGJfve3I7hSTVUisy499ybVWpZuhAgNASwD0Tf4dwJeRer8c5EuK7yhbkLQ4PiAb3Um75G7zwQhHEGG8Mb+N+cpSVyI3P4gNcEBIND9ilO/nj4qDpB9AaDal2rALG9tC1Rh/0rgmbv0Y1Bm5n5quGem4kwZl0SvVfuPc7TAi1bY5fwK0eEQSLWsoT/+ZWc/eqDPWZMihF+lKjXHdWwPW9hGwbgHQTP8c+35au7x5H30subU1UqzhpqzJF8fkGyd4QiAdD0hbfPRNf2MIy2aKeP1afWnBcH15teMo+eQ7Vo=" ], + "priority" : [ "100" ], + "algorithm" : [ "RSA-OAEP" ] + } + }, { + "id" : "a5915b2a-8b94-446d-8209-05a6a1993442", + "name" : "rsa-generated", + "providerId" : "rsa-generated", + "subComponents" : { }, + "config" : { + "privateKey" : [ "MIIEogIBAAKCAQEAlKbQCmhCAS3tCnth6DkcmNyz3SMe5AxVrX8KZuC9du35o7LqUe3Uec09KxA0YXmppcnm2rahe0PhWpOyK53NZcnyVaDBVfKa3QDtx+6ROWWHGdTMKEvaZQ+zRF8TKMstNA83OxQdxAFQykfWz6tWHmoS9pb3XQ/gGWhrWlK4z4/NhddeVlAl3vkAhVKa/7npE/c5T8VPNRnB3f2tbPfZZlTTDZIm3cxXYDR5IRGy5wGqHUhcpAfg4G4D6s6D9mMESuEWWQnVSYUWpOr6ugOISq8Xp2ys1ds7aQD/fako89iUtodCkYyUJpHzw4OlAqrhE63RR4lAmN76wyGcAnLtoQIDAQABAoIBAG5HLnF6FPVhB8hN7j1kGSYCHWFBi8osqGcUpzfZJFWViCx8L79mC8nsi6Nl2yYxJrz6gsvgzv1uR0F17qjS4azQ23nQz30ehOrNpJk9D/mfq1Frf6WpWDS/KAPh8InD6R4E57lpXAer3i6iiub3OeVIVhcfuhUNEPhocbPJSJeZ+p2D+NsrJjw2lnG2C2RiFg/ae0BaAk72YafDTbrXySc+xohIp/7oYQAiFJ7gYxUSS94UzDma9PvlGJaBmor7vNZpruAPYjVMmvARSPavmWQ3rV/0SKqR/MG20hOBh00faKxefvO2rQ5RZRQPrKAVoiCFPY7QUMyf0Es3FhqpfF0CgYEAx8UizVR/tS4/IihvaBxSTxc6pyl5UGRmIfHqrsrtES5L0u8G6BLLI3lRu6Y0fd0F/Spz7e8m5BulisdmI56fh6sreBDxAtslE3rMrBLWl9fY4Ur3fJZsN4+761PL3tqJYCRkx8KDvaGOh9ba71sdngrHyUE+PIhM/S1D3JRpjasCgYEAvn455qdiu5mHCbYpCfaOzODCLZNSTh44kX0lx3SsJYL6eWyLhzSbMNWwOZNqsIV/YqlvzZ0kLoRrBRBgoBf0pVSC1kKA8yLsIoA2WAEsslapPLfuPiOF/zYgwO+4Z/daqfxhMdAdq1JvwB8ec5h9xm1x/yLhNYXzBbnCNpEZ7eMCgYAHYsN5ofEiyrXs1l/gEoP8hphVi9P/Y+bexGnv0nLXWsXU4592vxMhmZ+q92cjbCOHi6VDm77tWhRRwDOHh5rQUkTGKKIwf9esE7MzfXLPpFxRYAssYQdZOogxGCUGdT/0/QN42zkxrqJtZUUs6kp7CF0AlNfvNv7ZsW273wTUBwKBgEAYMp00JtleX/xZiVdr2UKAQXWaQzA7pOb3B9YjoKSCfIqMhin4/lqhG8lTm6tHT8Q/pHm3bOwl6+hpSUm0pcFXPSqgd8jXMEKvhxl3U7WxyQHAFW5c/4IOkVi5j/+TT7MwUveywbjaZPVsww87+N3iB2BEOSiMKGf9x6YajnHnAoGAa5dfz7t8mB/0mMyzqk9a5sWNY5+3OtONBe8LCLVc49MZZCMWNIsM9V9Pb2KtbptPy8tKkgzCHLnLgFhfKSv+ArB39PyH2UFYZWZOBOfU8iZIJQ860YXyK4KXmdO43cqTXREnFL1LWRHNo3lWX0mOq3MXc7JvaTTt6Urlkau7poc=" ], + "keyUse" : [ "SIG" ], + "certificate" : [ "MIICoTCCAYkCBgGEFBCy0jANBgkqhkiG9w0BAQsFADAUMRIwEAYDVQQDDAl3b3Jrc3BhY2UwHhcNMjIxMDI2MTEzMDQ5WhcNMzIxMDI2MTEzMjI5WjAUMRIwEAYDVQQDDAl3b3Jrc3BhY2UwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCUptAKaEIBLe0Ke2HoORyY3LPdIx7kDFWtfwpm4L127fmjsupR7dR5zT0rEDRheamlyebatqF7Q+Fak7Irnc1lyfJVoMFV8prdAO3H7pE5ZYcZ1MwoS9plD7NEXxMoyy00Dzc7FB3EAVDKR9bPq1YeahL2lvddD+AZaGtaUrjPj82F115WUCXe+QCFUpr/uekT9zlPxU81GcHd/a1s99lmVNMNkibdzFdgNHkhEbLnAaodSFykB+DgbgPqzoP2YwRK4RZZCdVJhRak6vq6A4hKrxenbKzV2ztpAP99qSjz2JS2h0KRjJQmkfPDg6UCquETrdFHiUCY3vrDIZwCcu2hAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAGftTJ9CvjZnkOgKx8QZuDwmT5FfSUQMSsVmWDML8+HUGT/t/ZYYebLXqSVu1ig6G+LL96wxAWeWhZegB3cIkbpCJy6Fr0GRVMpbagB5/hHyF+mHJ4rRV/b/N5+cCcxFEllp2KUW9wLSJPoHKwL66Xias9MMr+AyaHKvWU5oA5tNPl1ljeu/kIYVCB03r/KsAjyGW4dC7zsbdMMVpKNhZI5KfydwSH40zHZCOSXXutaBYefare2MhrV0juX+yoCeuAJLK7dHNqeeDZOHo/Vqip+XFSDR5UkjmpjTrLquiVnFwvKG1yk9AO8rM/PwKR/t5L60cpsW3+96hVjjOkkMrZ8=" ], + "priority" : [ "100" ] + } + }, { + "id" : "a6fdf757-aaf5-4996-ac42-a161505b5b8b", + "name" : "hmac-generated", + "providerId" : "hmac-generated", + "subComponents" : { }, + "config" : { + "kid" : [ "3b241b88-b87f-4d01-bfd0-4c4bf8da41b5" ], + "secret" : [ "xfFIz9tJIM2BFlnvEfFg1ZcNCJJh14LYKGWQIFW-fHNKrHv18MnCWzb4xAEe2IGK2diRUE7BifyZYGppAc2Cig" ], + "priority" : [ "100" ], + "algorithm" : [ "HS256" ] + } + }, { + "id" : "b51a7097-8ceb-4775-bbb0-8415c19b02b1", + "name" : "aes-generated", + "providerId" : "aes-generated", + "subComponents" : { }, + "config" : { + "kid" : [ "1925490f-36b6-404e-8ae8-1f92d4f0425e" ], + "secret" : [ "oIx5m32a854CgZ7ZFPtIJA" ], + "priority" : [ "100" ] + } + } ] + }, + "internationalizationEnabled" : false, + "supportedLocales" : [ ], + "authenticationFlows" : [ { + "id" : "7631336c-e417-4ecc-a59d-122821b3ce81", + "alias" : "Account verification options", + "description" : "Method with which to verity the existing account", + "providerId" : "basic-flow", + "topLevel" : false, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "idp-email-verification", + "authenticatorFlow" : false, + "requirement" : "ALTERNATIVE", + "priority" : 10, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticatorFlow" : true, + "requirement" : "ALTERNATIVE", + "priority" : 20, + "autheticatorFlow" : true, + "flowAlias" : "Verify Existing Account by Re-authentication", + "userSetupAllowed" : false + } ] + }, { + "id" : "258c2127-3a30-4bab-853f-a587530c3b9b", + "alias" : "Authentication Options", + "description" : "Authentication options.", + "providerId" : "basic-flow", + "topLevel" : false, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "basic-auth", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 10, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticator" : "basic-auth-otp", + "authenticatorFlow" : false, + "requirement" : "DISABLED", + "priority" : 20, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticator" : "auth-spnego", + "authenticatorFlow" : false, + "requirement" : "DISABLED", + "priority" : 30, + "autheticatorFlow" : false, + "userSetupAllowed" : false + } ] + }, { + "id" : "7d81a6d9-4d03-4e62-b88f-1120567c2011", + "alias" : "Browser - Conditional OTP", + "description" : "Flow to determine if the OTP is required for the authentication", + "providerId" : "basic-flow", + "topLevel" : false, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "conditional-user-configured", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 10, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticator" : "auth-otp-form", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 20, + "autheticatorFlow" : false, + "userSetupAllowed" : false + } ] + }, { + "id" : "11faf1fe-3295-49a1-930f-ba3325a660ab", + "alias" : "Direct Grant - Conditional OTP", + "description" : "Flow to determine if the OTP is required for the authentication", + "providerId" : "basic-flow", + "topLevel" : false, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "conditional-user-configured", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 10, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticator" : "direct-grant-validate-otp", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 20, + "autheticatorFlow" : false, + "userSetupAllowed" : false + } ] + }, { + "id" : "15650875-afc5-453f-93a0-d583128f3290", + "alias" : "First broker login - Conditional OTP", + "description" : "Flow to determine if the OTP is required for the authentication", + "providerId" : "basic-flow", + "topLevel" : false, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "conditional-user-configured", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 10, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticator" : "auth-otp-form", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 20, + "autheticatorFlow" : false, + "userSetupAllowed" : false + } ] + }, { + "id" : "f0b232a5-e235-4f22-be36-143e6481a2dc", + "alias" : "Handle Existing Account", + "description" : "Handle what to do if there is existing account with same email/username like authenticated identity provider", + "providerId" : "basic-flow", + "topLevel" : false, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "idp-confirm-link", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 10, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticatorFlow" : true, + "requirement" : "REQUIRED", + "priority" : 20, + "autheticatorFlow" : true, + "flowAlias" : "Account verification options", + "userSetupAllowed" : false + } ] + }, { + "id" : "7603e3d5-c254-4540-a9f0-df264476848f", + "alias" : "Reset - Conditional OTP", + "description" : "Flow to determine if the OTP should be reset or not. Set to REQUIRED to force.", + "providerId" : "basic-flow", + "topLevel" : false, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "conditional-user-configured", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 10, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticator" : "reset-otp", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 20, + "autheticatorFlow" : false, + "userSetupAllowed" : false + } ] + }, { + "id" : "59742bbc-7b18-41d5-8c86-c7c8004fd608", + "alias" : "User creation or linking", + "description" : "Flow for the existing/non-existing user alternatives", + "providerId" : "basic-flow", + "topLevel" : false, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticatorConfig" : "create unique user config", + "authenticator" : "idp-create-user-if-unique", + "authenticatorFlow" : false, + "requirement" : "ALTERNATIVE", + "priority" : 10, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticatorFlow" : true, + "requirement" : "ALTERNATIVE", + "priority" : 20, + "autheticatorFlow" : true, + "flowAlias" : "Handle Existing Account", + "userSetupAllowed" : false + } ] + }, { + "id" : "14d3d5f1-d181-4265-b921-b573d80d3a6e", + "alias" : "Verify Existing Account by Re-authentication", + "description" : "Reauthentication of existing account", + "providerId" : "basic-flow", + "topLevel" : false, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "idp-username-password-form", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 10, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticatorFlow" : true, + "requirement" : "CONDITIONAL", + "priority" : 20, + "autheticatorFlow" : true, + "flowAlias" : "First broker login - Conditional OTP", + "userSetupAllowed" : false + } ] + }, { + "id" : "43e280fc-b6d6-4eed-906f-6e312abdb664", + "alias" : "browser", + "description" : "browser based authentication", + "providerId" : "basic-flow", + "topLevel" : true, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "auth-cookie", + "authenticatorFlow" : false, + "requirement" : "ALTERNATIVE", + "priority" : 10, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticator" : "auth-spnego", + "authenticatorFlow" : false, + "requirement" : "DISABLED", + "priority" : 20, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticator" : "identity-provider-redirector", + "authenticatorFlow" : false, + "requirement" : "ALTERNATIVE", + "priority" : 25, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticatorFlow" : true, + "requirement" : "ALTERNATIVE", + "priority" : 30, + "autheticatorFlow" : true, + "flowAlias" : "forms", + "userSetupAllowed" : false + } ] + }, { + "id" : "50c732b5-f9de-4d1d-ad6f-b502ad85fcd0", + "alias" : "clients", + "description" : "Base authentication for clients", + "providerId" : "client-flow", + "topLevel" : true, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "client-secret", + "authenticatorFlow" : false, + "requirement" : "ALTERNATIVE", + "priority" : 10, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticator" : "client-jwt", + "authenticatorFlow" : false, + "requirement" : "ALTERNATIVE", + "priority" : 20, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticator" : "client-secret-jwt", + "authenticatorFlow" : false, + "requirement" : "ALTERNATIVE", + "priority" : 30, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticator" : "client-x509", + "authenticatorFlow" : false, + "requirement" : "ALTERNATIVE", + "priority" : 40, + "autheticatorFlow" : false, + "userSetupAllowed" : false + } ] + }, { + "id" : "4a4ecd57-0047-4916-89d1-a8b86850d648", + "alias" : "direct grant", + "description" : "OpenID Connect Resource Owner Grant", + "providerId" : "basic-flow", + "topLevel" : true, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "direct-grant-validate-username", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 10, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticator" : "direct-grant-validate-password", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 20, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticatorFlow" : true, + "requirement" : "CONDITIONAL", + "priority" : 30, + "autheticatorFlow" : true, + "flowAlias" : "Direct Grant - Conditional OTP", + "userSetupAllowed" : false + } ] + }, { + "id" : "ca557f1e-8863-4f62-aa3f-b5ee357b1bfb", + "alias" : "docker auth", + "description" : "Used by Docker clients to authenticate against the IDP", + "providerId" : "basic-flow", + "topLevel" : true, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "docker-http-basic-authenticator", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 10, + "autheticatorFlow" : false, + "userSetupAllowed" : false + } ] + }, { + "id" : "12c8619b-953e-47cb-be0c-91c23104e11a", + "alias" : "first broker login", + "description" : "Actions taken after first broker login with identity provider account, which is not yet linked to any Keycloak account", + "providerId" : "basic-flow", + "topLevel" : true, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticatorConfig" : "review profile config", + "authenticator" : "idp-review-profile", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 10, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticatorFlow" : true, + "requirement" : "REQUIRED", + "priority" : 20, + "autheticatorFlow" : true, + "flowAlias" : "User creation or linking", + "userSetupAllowed" : false + } ] + }, { + "id" : "ced73c79-5847-49ec-abb6-0c2481d65d76", + "alias" : "forms", + "description" : "Username, password, otp and other auth forms.", + "providerId" : "basic-flow", + "topLevel" : false, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "auth-username-password-form", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 10, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticatorFlow" : true, + "requirement" : "CONDITIONAL", + "priority" : 20, + "autheticatorFlow" : true, + "flowAlias" : "Browser - Conditional OTP", + "userSetupAllowed" : false + } ] + }, { + "id" : "5f7fe35f-a018-483b-9501-c7fafeb6cd69", + "alias" : "http challenge", + "description" : "An authentication flow based on challenge-response HTTP Authentication Schemes", + "providerId" : "basic-flow", + "topLevel" : true, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "no-cookie-redirect", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 10, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticatorFlow" : true, + "requirement" : "REQUIRED", + "priority" : 20, + "autheticatorFlow" : true, + "flowAlias" : "Authentication Options", + "userSetupAllowed" : false + } ] + }, { + "id" : "9a37cda7-731f-448b-87ee-7700080ac7a2", + "alias" : "registration", + "description" : "registration flow", + "providerId" : "basic-flow", + "topLevel" : true, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "registration-page-form", + "authenticatorFlow" : true, + "requirement" : "REQUIRED", + "priority" : 10, + "autheticatorFlow" : true, + "flowAlias" : "registration form", + "userSetupAllowed" : false + } ] + }, { + "id" : "719fbc94-8477-4e26-b383-dbe06780d14e", + "alias" : "registration form", + "description" : "registration form", + "providerId" : "form-flow", + "topLevel" : false, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "registration-user-creation", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 20, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticator" : "registration-profile-action", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 40, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticator" : "registration-password-action", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 50, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticator" : "registration-recaptcha-action", + "authenticatorFlow" : false, + "requirement" : "DISABLED", + "priority" : 60, + "autheticatorFlow" : false, + "userSetupAllowed" : false + } ] + }, { + "id" : "3d9f5eeb-752c-4720-935e-8e810eec6aaf", + "alias" : "reset credentials", + "description" : "Reset credentials for a user if they forgot their password or something", + "providerId" : "basic-flow", + "topLevel" : true, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "reset-credentials-choose-user", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 10, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticator" : "reset-credential-email", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 20, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticator" : "reset-password", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 30, + "autheticatorFlow" : false, + "userSetupAllowed" : false + }, { + "authenticatorFlow" : true, + "requirement" : "CONDITIONAL", + "priority" : 40, + "autheticatorFlow" : true, + "flowAlias" : "Reset - Conditional OTP", + "userSetupAllowed" : false + } ] + }, { + "id" : "57386993-0407-43eb-8994-cb9b50a6386a", + "alias" : "saml ecp", + "description" : "SAML ECP Profile Authentication Flow", + "providerId" : "basic-flow", + "topLevel" : true, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "http-basic-authenticator", + "authenticatorFlow" : false, + "requirement" : "REQUIRED", + "priority" : 10, + "autheticatorFlow" : false, + "userSetupAllowed" : false + } ] + } ], + "authenticatorConfig" : [ { + "id" : "377719f3-5189-411a-8900-791c5323f058", + "alias" : "create unique user config", + "config" : { + "require.password.update.after.registration" : "false" + } + }, { + "id" : "2cf372e5-ad11-402c-a4b7-ce4c59dd44e1", + "alias" : "review profile config", + "config" : { + "update.profile.on.first.login" : "missing" + } + } ], + "requiredActions" : [ { + "alias" : "CONFIGURE_TOTP", + "name" : "Configure OTP", + "providerId" : "CONFIGURE_TOTP", + "enabled" : true, + "defaultAction" : false, + "priority" : 10, + "config" : { } + }, { + "alias" : "terms_and_conditions", + "name" : "Terms and Conditions", + "providerId" : "terms_and_conditions", + "enabled" : false, + "defaultAction" : false, + "priority" : 20, + "config" : { } + }, { + "alias" : "UPDATE_PASSWORD", + "name" : "Update Password", + "providerId" : "UPDATE_PASSWORD", + "enabled" : true, + "defaultAction" : false, + "priority" : 30, + "config" : { } + }, { + "alias" : "UPDATE_PROFILE", + "name" : "Update Profile", + "providerId" : "UPDATE_PROFILE", + "enabled" : true, + "defaultAction" : false, + "priority" : 40, + "config" : { } + }, { + "alias" : "VERIFY_EMAIL", + "name" : "Verify Email", + "providerId" : "VERIFY_EMAIL", + "enabled" : true, + "defaultAction" : false, + "priority" : 50, + "config" : { } + }, { + "alias" : "delete_account", + "name" : "Delete Account", + "providerId" : "delete_account", + "enabled" : false, + "defaultAction" : false, + "priority" : 60, + "config" : { } + }, { + "alias" : "update_user_locale", + "name" : "Update User Locale", + "providerId" : "update_user_locale", + "enabled" : true, + "defaultAction" : false, + "priority" : 1000, + "config" : { } + } ], + "browserFlow" : "browser", + "registrationFlow" : "registration", + "directGrantFlow" : "direct grant", + "resetCredentialsFlow" : "reset credentials", + "clientAuthenticationFlow" : "clients", + "dockerAuthenticationFlow" : "docker auth", + "attributes" : { + "cibaBackchannelTokenDeliveryMode" : "poll", + "cibaExpiresIn" : "120", + "cibaAuthRequestedUserHint" : "login_hint", + "oauth2DeviceCodeLifespan" : "600", + "oauth2DevicePollingInterval" : "5", + "parRequestUriLifespan" : "60", + "cibaInterval" : "5" + }, + "keycloakVersion" : "18.0.0", + "userManagedAccessAllowed" : false, + "clientProfiles" : { + "profiles" : [ ] + }, + "clientPolicies" : { + "policies" : [ ] + } +} \ No newline at end of file