From e0b30c1e162efd04183eb47dbb63c695b221679f Mon Sep 17 00:00:00 2001 From: Julius Krah Date: Tue, 21 Jan 2020 12:53:48 +0000 Subject: [PATCH] minor improvement to get it to work --- etc/docker-compose.yml | 7 + etc/realms/one-realm.json | 3630 ++++++++--------- etc/realms/two-realm.json | 3535 ++++++++-------- .../inbox/ApplicationProperties.java | 32 + .../springone2019/inbox/InboxApplication.java | 1 + .../springone2019/inbox/IndexController.java | 16 + .../security/SecurityControllerAdvice.java | 9 + .../SignedJwtExchangeFilterFunction.java | 1 + .../TenantClientRegistrationRepository.java | 45 +- .../inbox/user/WebClientUserService.java | 2 +- inbox/src/main/resources/application.yml | 6 +- .../src/main/resources/templates/layout.html | 11 +- message/pom.xml | 4 - .../message/MessageInitializer.java | 27 +- .../TenantAuthenticationManagerResolver.java | 3 +- .../message/tenant/TenantJWSKeySelector.java | 1 - .../tenant/TenantJwtIssuerValidator.java | 1 - .../message/tenant/TenantResolver.java | 2 + message/src/main/resources/application.yml | 3 + .../jzheaux/springone2019/tenant/Client.java | 10 + .../tenant/TenantController.java | 13 +- tenant/src/main/resources/application.yml | 2 +- user/pom.xml | 4 - .../user/MongoUserInitiailizer.java | 8 +- .../springone2019/user/UserController.java | 2 +- user/src/main/resources/application.yml | 9 +- 26 files changed, 3714 insertions(+), 3670 deletions(-) create mode 100644 inbox/src/main/java/io/jzheaux/springone2019/inbox/ApplicationProperties.java diff --git a/etc/docker-compose.yml b/etc/docker-compose.yml index e687ff3..8cd0999 100644 --- a/etc/docker-compose.yml +++ b/etc/docker-compose.yml @@ -29,3 +29,10 @@ services: - "two:172.17.0.1" - "three:172.17.0.1" - "four:172.17.0.1" + mongodb: + image: mongo:4 + ports: + - '27017:27017' + environment: + - MONGO_INITDB_ROOT_USERNAME=root + - MONGO_INITDB_ROOT_PASSWORD=pwd \ No newline at end of file diff --git a/etc/realms/one-realm.json b/etc/realms/one-realm.json index c4c433d..5360b78 100644 --- a/etc/realms/one-realm.json +++ b/etc/realms/one-realm.json @@ -1,1921 +1,1779 @@ { - "id": "one", - "realm": "one", - "displayName": "One", - "notBefore": 0, - "revokeRefreshToken": false, - "refreshTokenMaxReuse": 0, - "accessTokenLifespan": 3600, - "accessTokenLifespanForImplicitFlow": 900, - "ssoSessionIdleTimeout": 1800, - "ssoSessionMaxLifespan": 36000, - "offlineSessionIdleTimeout": 2592000, - "offlineSessionMaxLifespanEnabled": false, - "offlineSessionMaxLifespan": 5184000, - "accessCodeLifespan": 60, - "accessCodeLifespanUserAction": 300, - "accessCodeLifespanLogin": 1800, - "actionTokenGeneratedByAdminLifespan": 43200, - "actionTokenGeneratedByUserLifespan": 300, - "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": "800b2f07-156c-41a3-bd94-99dd129d0d8e", - "name": "admin", - "composite": false, - "clientRole": false, - "containerId": "one" - }, - { - "id": "f9e18db8-c1ee-47a6-b56e-5c6397ad8470", - "name": "offline_access", - "description": "${role_offline-access}", - "composite": false, - "clientRole": false, - "containerId": "one" - }, - { - "id": "dd81765e-bb78-4d53-8135-4560ae9acbfd", - "name": "uma_authorization", - "description": "${role_uma_authorization}", - "composite": false, - "clientRole": false, - "containerId": "one" - } - ], - "client": { - "realm-management": [ - { - "id": "9b11c6fa-2dad-4837-9709-1e3bda1b3cae", - "name": "manage-realm", - "description": "${role_manage-realm}", - "composite": false, - "clientRole": true, - "containerId": "df9ee6ee-e7c0-47f3-8c96-bea98a008f91" - }, - { - "id": "3034cc94-da4c-4c6b-880a-14df88a10b2f", - "name": "manage-users", - "description": "${role_manage-users}", - "composite": false, - "clientRole": true, - "containerId": "df9ee6ee-e7c0-47f3-8c96-bea98a008f91" - }, - { - "id": "cc8ac609-a64e-4d08-b298-d2f156a0f811", - "name": "manage-events", - "description": "${role_manage-events}", - "composite": false, - "clientRole": true, - "containerId": "df9ee6ee-e7c0-47f3-8c96-bea98a008f91" - }, - { - "id": "4cbd13ff-136c-45e7-bf2a-26054bb0735c", - "name": "view-users", - "description": "${role_view-users}", - "composite": true, - "composites": { - "client": { - "realm-management": [ - "query-groups", - "query-users" - ] - } - }, - "clientRole": true, - "containerId": "df9ee6ee-e7c0-47f3-8c96-bea98a008f91" - }, - { - "id": "f999d262-d1f0-4f6c-bd97-cac49c0174e8", - "name": "view-events", - "description": "${role_view-events}", - "composite": false, - "clientRole": true, - "containerId": "df9ee6ee-e7c0-47f3-8c96-bea98a008f91" - }, - { - "id": "bdec47e0-c4df-4626-be48-a7b03edcd87d", - "name": "manage-identity-providers", - "description": "${role_manage-identity-providers}", - "composite": false, - "clientRole": true, - "containerId": "df9ee6ee-e7c0-47f3-8c96-bea98a008f91" - }, - { - "id": "b9061164-9a29-4a8d-a76f-f35cbe7844cb", - "name": "realm-admin", - "description": "${role_realm-admin}", - "composite": true, - "composites": { - "client": { - "realm-management": [ - "manage-realm", - "manage-users", - "manage-events", - "view-users", - "manage-identity-providers", - "view-events", - "view-realm", - "view-identity-providers", - "query-clients", - "create-client", - "impersonation", - "query-groups", - "view-clients", - "manage-clients", - "view-authorization", - "manage-authorization", - "query-realms", - "query-users" - ] - } - }, - "clientRole": true, - "containerId": "df9ee6ee-e7c0-47f3-8c96-bea98a008f91" - }, - { - "id": "8b60c626-80d6-435a-a59e-f4ede4070ab5", - "name": "view-realm", - "description": "${role_view-realm}", - "composite": false, - "clientRole": true, - "containerId": "df9ee6ee-e7c0-47f3-8c96-bea98a008f91" - }, - { - "id": "250508df-0e46-4f94-a92a-8850c497361f", - "name": "view-identity-providers", - "description": "${role_view-identity-providers}", - "composite": false, - "clientRole": true, - "containerId": "df9ee6ee-e7c0-47f3-8c96-bea98a008f91" - }, - { - "id": "4f3b0bfb-db04-4bff-b674-2a0b8f620793", - "name": "query-clients", - "description": "${role_query-clients}", - "composite": false, - "clientRole": true, - "containerId": "df9ee6ee-e7c0-47f3-8c96-bea98a008f91" - }, - { - "id": "91bc20a6-d8eb-4b26-a666-d2d7bee074d8", - "name": "create-client", - "description": "${role_create-client}", - "composite": false, - "clientRole": true, - "containerId": "df9ee6ee-e7c0-47f3-8c96-bea98a008f91" - }, - { - "id": "bb4dd019-f6d4-47f9-a4b8-451e189954ed", - "name": "view-clients", - "description": "${role_view-clients}", - "composite": true, - "composites": { - "client": { - "realm-management": [ - "query-clients" - ] - } - }, - "clientRole": true, - "containerId": "df9ee6ee-e7c0-47f3-8c96-bea98a008f91" - }, - { - "id": "29e93f57-a56f-4ec3-8136-f3b8d60d27cc", - "name": "query-groups", - "description": "${role_query-groups}", - "composite": false, - "clientRole": true, - "containerId": "df9ee6ee-e7c0-47f3-8c96-bea98a008f91" - }, - { - "id": "0208a8b3-1538-4d6a-b9c8-9077f989a3cf", - "name": "impersonation", - "description": "${role_impersonation}", - "composite": false, - "clientRole": true, - "containerId": "df9ee6ee-e7c0-47f3-8c96-bea98a008f91" - }, - { - "id": "6e4daccf-989b-49fe-b352-f7956f7c41fd", - "name": "manage-clients", - "description": "${role_manage-clients}", - "composite": false, - "clientRole": true, - "containerId": "df9ee6ee-e7c0-47f3-8c96-bea98a008f91" - }, - { - "id": "08aec794-5b25-4a31-bc0b-06fb069c0edc", - "name": "view-authorization", - "description": "${role_view-authorization}", - "composite": false, - "clientRole": true, - "containerId": "df9ee6ee-e7c0-47f3-8c96-bea98a008f91" - }, - { - "id": "ecc98cea-8677-4eca-a4c9-c78bca57726f", - "name": "manage-authorization", - "description": "${role_manage-authorization}", - "composite": false, - "clientRole": true, - "containerId": "df9ee6ee-e7c0-47f3-8c96-bea98a008f91" + "id" : "one", + "realm" : "one", + "notBefore" : 1578599126, + "revokeRefreshToken" : false, + "refreshTokenMaxReuse" : 0, + "accessTokenLifespan" : 300, + "accessTokenLifespanForImplicitFlow" : 900, + "ssoSessionIdleTimeout" : 1800, + "ssoSessionMaxLifespan" : 36000, + "ssoSessionIdleTimeoutRememberMe" : 0, + "ssoSessionMaxLifespanRememberMe" : 0, + "offlineSessionIdleTimeout" : 2592000, + "offlineSessionMaxLifespanEnabled" : false, + "offlineSessionMaxLifespan" : 5184000, + "accessCodeLifespan" : 60, + "accessCodeLifespanUserAction" : 300, + "accessCodeLifespanLogin" : 1800, + "actionTokenGeneratedByAdminLifespan" : 43200, + "actionTokenGeneratedByUserLifespan" : 300, + "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" : "0c3f5c2c-3711-4d96-8605-4a9aafd7f501", + "name" : "uma_authorization", + "description" : "${role_uma_authorization}", + "composite" : false, + "clientRole" : false, + "containerId" : "one", + "attributes" : { } + }, { + "id" : "cf7acb39-8c11-4b93-af25-f4ec1ed0c8f9", + "name" : "offline_access", + "description" : "${role_offline-access}", + "composite" : false, + "clientRole" : false, + "containerId" : "one", + "attributes" : { } + } ], + "client" : { + "realm-management" : [ { + "id" : "3fab9325-6db0-4b65-96d9-cc0b6eef63cf", + "name" : "view-users", + "description" : "${role_view-users}", + "composite" : true, + "composites" : { + "client" : { + "realm-management" : [ "query-users", "query-groups" ] + } }, - { - "id": "dd93f9e7-b35b-4197-b721-01befefa2da9", - "name": "query-users", - "description": "${role_query-users}", - "composite": false, - "clientRole": true, - "containerId": "df9ee6ee-e7c0-47f3-8c96-bea98a008f91" + "clientRole" : true, + "containerId" : "861cb166-2f2a-4733-8b33-ff260115a5fb", + "attributes" : { } + }, { + "id" : "dd409177-3a99-444a-aa63-3d511f203dc6", + "name" : "realm-admin", + "description" : "${role_realm-admin}", + "composite" : true, + "composites" : { + "client" : { + "realm-management" : [ "view-users", "view-realm", "view-events", "manage-events", "manage-identity-providers", "query-users", "view-identity-providers", "query-clients", "manage-authorization", "manage-clients", "impersonation", "query-groups", "manage-users", "manage-realm", "view-authorization", "view-clients", "create-client", "query-realms" ] + } }, - { - "id": "6e940418-1dfc-495b-b8f2-5e9cd4670b42", - "name": "query-realms", - "description": "${role_query-realms}", - "composite": false, - "clientRole": true, - "containerId": "df9ee6ee-e7c0-47f3-8c96-bea98a008f91" - } - ], - "security-admin-console": [], - "admin": [ - { - "id": "f2e40f28-ca32-4c5a-9ca4-0a849cce13f6", - "name": "uma_protection", - "composite": false, - "clientRole": true, - "containerId": "7df11138-b94f-43f9-ba78-d4c9cedc21f5" - } - ], - "admin-cli": [], - "message": [ - { - "id": "6c049fdd-7650-4a0a-b9cd-923d84c8e2f3", - "name": "uma_protection", - "composite": false, - "clientRole": true, - "containerId": "2615235d-e834-4a7c-a472-76d822ac6048" - } - ], - "broker": [ - { - "id": "d1685825-7d82-43b7-817a-37760cb8b394", - "name": "read-token", - "description": "${role_read-token}", - "composite": false, - "clientRole": true, - "containerId": "db376c1b-d8c3-4f75-8459-634a79732e8b" - } - ], - "account": [ - { - "id": "736b8c95-5af6-44ea-9853-833e8a39a1f4", - "name": "manage-account", - "description": "${role_manage-account}", - "composite": true, - "composites": { - "client": { - "account": [ - "manage-account-links" - ] - } - }, - "clientRole": true, - "containerId": "697d7b25-21b3-454e-9078-87c0fcdcc3e2" + "clientRole" : true, + "containerId" : "861cb166-2f2a-4733-8b33-ff260115a5fb", + "attributes" : { } + }, { + "id" : "b3229266-b830-4349-9c99-3d1ef85b071a", + "name" : "view-realm", + "description" : "${role_view-realm}", + "composite" : false, + "clientRole" : true, + "containerId" : "861cb166-2f2a-4733-8b33-ff260115a5fb", + "attributes" : { } + }, { + "id" : "20bf1f28-b6d5-4eab-b9a6-977b1a14977a", + "name" : "view-events", + "description" : "${role_view-events}", + "composite" : false, + "clientRole" : true, + "containerId" : "861cb166-2f2a-4733-8b33-ff260115a5fb", + "attributes" : { } + }, { + "id" : "c5adf204-6786-45d6-a566-89f113e8e725", + "name" : "manage-events", + "description" : "${role_manage-events}", + "composite" : false, + "clientRole" : true, + "containerId" : "861cb166-2f2a-4733-8b33-ff260115a5fb", + "attributes" : { } + }, { + "id" : "2914641f-9f17-48a0-90d4-b57b9cd0200a", + "name" : "manage-identity-providers", + "description" : "${role_manage-identity-providers}", + "composite" : false, + "clientRole" : true, + "containerId" : "861cb166-2f2a-4733-8b33-ff260115a5fb", + "attributes" : { } + }, { + "id" : "9462e73e-5b36-44c1-8102-1d5b11d8767c", + "name" : "view-identity-providers", + "description" : "${role_view-identity-providers}", + "composite" : false, + "clientRole" : true, + "containerId" : "861cb166-2f2a-4733-8b33-ff260115a5fb", + "attributes" : { } + }, { + "id" : "545e7a96-621e-4be1-b974-c3591ae705ac", + "name" : "query-users", + "description" : "${role_query-users}", + "composite" : false, + "clientRole" : true, + "containerId" : "861cb166-2f2a-4733-8b33-ff260115a5fb", + "attributes" : { } + }, { + "id" : "a0481bdf-e3dc-4776-8f69-e043842bc464", + "name" : "query-clients", + "description" : "${role_query-clients}", + "composite" : false, + "clientRole" : true, + "containerId" : "861cb166-2f2a-4733-8b33-ff260115a5fb", + "attributes" : { } + }, { + "id" : "4c7a5b75-b3dc-427e-97c7-7f9f29e44c4d", + "name" : "manage-authorization", + "description" : "${role_manage-authorization}", + "composite" : false, + "clientRole" : true, + "containerId" : "861cb166-2f2a-4733-8b33-ff260115a5fb", + "attributes" : { } + }, { + "id" : "81e2c486-4665-4cb6-99e0-ffe6b2b3183c", + "name" : "manage-clients", + "description" : "${role_manage-clients}", + "composite" : false, + "clientRole" : true, + "containerId" : "861cb166-2f2a-4733-8b33-ff260115a5fb", + "attributes" : { } + }, { + "id" : "9a0ae2c0-85c1-4023-b9e4-9b8679627c48", + "name" : "manage-users", + "description" : "${role_manage-users}", + "composite" : false, + "clientRole" : true, + "containerId" : "861cb166-2f2a-4733-8b33-ff260115a5fb", + "attributes" : { } + }, { + "id" : "35f7fb7c-b247-40d8-8ca7-58466cfcdc1a", + "name" : "query-groups", + "description" : "${role_query-groups}", + "composite" : false, + "clientRole" : true, + "containerId" : "861cb166-2f2a-4733-8b33-ff260115a5fb", + "attributes" : { } + }, { + "id" : "084e0b3a-1bcc-4195-bfbf-6ce51830a4a0", + "name" : "impersonation", + "description" : "${role_impersonation}", + "composite" : false, + "clientRole" : true, + "containerId" : "861cb166-2f2a-4733-8b33-ff260115a5fb", + "attributes" : { } + }, { + "id" : "5abbb770-5d9f-4dbc-9f3e-b2c3a460f8f2", + "name" : "view-authorization", + "description" : "${role_view-authorization}", + "composite" : false, + "clientRole" : true, + "containerId" : "861cb166-2f2a-4733-8b33-ff260115a5fb", + "attributes" : { } + }, { + "id" : "3305be12-9ee8-41fe-a90e-5267384154b6", + "name" : "manage-realm", + "description" : "${role_manage-realm}", + "composite" : false, + "clientRole" : true, + "containerId" : "861cb166-2f2a-4733-8b33-ff260115a5fb", + "attributes" : { } + }, { + "id" : "95d25f39-e67f-4601-8d63-b463b5ead895", + "name" : "view-clients", + "description" : "${role_view-clients}", + "composite" : true, + "composites" : { + "client" : { + "realm-management" : [ "query-clients" ] + } }, - { - "id": "41e82e48-f8ca-47ac-a4bb-8800fa567782", - "name": "manage-account-links", - "description": "${role_manage-account-links}", - "composite": false, - "clientRole": true, - "containerId": "697d7b25-21b3-454e-9078-87c0fcdcc3e2" + "clientRole" : true, + "containerId" : "861cb166-2f2a-4733-8b33-ff260115a5fb", + "attributes" : { } + }, { + "id" : "5bd8ba75-5850-4a67-b0ec-d81c4c11acbe", + "name" : "create-client", + "description" : "${role_create-client}", + "composite" : false, + "clientRole" : true, + "containerId" : "861cb166-2f2a-4733-8b33-ff260115a5fb", + "attributes" : { } + }, { + "id" : "6a281e3d-b8ac-40b8-ae6a-35e8145b1ec9", + "name" : "query-realms", + "description" : "${role_query-realms}", + "composite" : false, + "clientRole" : true, + "containerId" : "861cb166-2f2a-4733-8b33-ff260115a5fb", + "attributes" : { } + } ], + "security-admin-console" : [ ], + "admin-cli" : [ ], + "broker" : [ { + "id" : "263fb557-7bb0-4c90-b02e-b3ccd253a1e9", + "name" : "read-token", + "description" : "${role_read-token}", + "composite" : false, + "clientRole" : true, + "containerId" : "105d439f-510b-4557-94d8-6b80c9bb0f3c", + "attributes" : { } + } ], + "message" : [ ], + "account" : [ { + "id" : "c7311392-73b4-4859-abe9-85dc1ebf0715", + "name" : "manage-account-links", + "description" : "${role_manage-account-links}", + "composite" : false, + "clientRole" : true, + "containerId" : "a6d0399d-b368-4b18-8ec3-380f2035ad18", + "attributes" : { } + }, { + "id" : "0623e16c-ff17-4c05-932c-3727defdf889", + "name" : "view-profile", + "description" : "${role_view-profile}", + "composite" : false, + "clientRole" : true, + "containerId" : "a6d0399d-b368-4b18-8ec3-380f2035ad18", + "attributes" : { } + }, { + "id" : "cf9d78ec-00aa-400b-b8c1-f9b37829f55c", + "name" : "manage-account", + "description" : "${role_manage-account}", + "composite" : true, + "composites" : { + "client" : { + "account" : [ "manage-account-links" ] + } }, - { - "id": "7425dfc7-0c24-42ab-90d9-5fad7bfd6d33", - "name": "view-profile", - "description": "${role_view-profile}", - "composite": false, - "clientRole": true, - "containerId": "697d7b25-21b3-454e-9078-87c0fcdcc3e2" - } - ] + "clientRole" : true, + "containerId" : "a6d0399d-b368-4b18-8ec3-380f2035ad18", + "attributes" : { } + } ] } }, - "groups": [], - "defaultRoles": [ - "uma_authorization", - "offline_access" - ], - "requiredCredentials": [ - "password" - ], - "otpPolicyType": "totp", - "otpPolicyAlgorithm": "HmacSHA1", - "otpPolicyInitialCounter": 0, - "otpPolicyDigits": 6, - "otpPolicyLookAheadWindow": 1, - "otpPolicyPeriod": 30, - "otpSupportedApplications": [ - "FreeOTP", - "Google Authenticator" - ], - "scopeMappings": [ - { - "client": "admin-cli", - "roles": [ - "admin" - ] + "groups" : [ ], + "defaultRoles" : [ "uma_authorization", "offline_access" ], + "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" : [ ], + "users" : [ { + "id" : "3e745d37-1f4f-4523-8408-a8c212aa7439", + "createdTimestamp" : 1578611470642, + "username" : "joe", + "enabled" : true, + "totp" : false, + "emailVerified" : true, + "firstName" : "Joe", + "lastName" : "Grandja", + "email" : "joe@example.com", + "attributes" : { + "tenant_id" : [ "one" ], + "user_id" : [ "3e745d37-1f4f-4523-8408-a8c212aa7439" ] }, - { - "clientScope": "offline_access", - "roles": [ - "offline_access" - ] - } - ], - "clients": [ - { - "id": "697d7b25-21b3-454e-9078-87c0fcdcc3e2", - "clientId": "account", - "name": "${client_account}", - "baseUrl": "/auth/realms/one/account", - "surrogateAuthRequired": false, - "enabled": true, - "clientAuthenticatorType": "client-secret", - "secret": "**********", - "defaultRoles": [ - "manage-account", - "view-profile" - ], - "redirectUris": [ - "/auth/realms/one/account/*" - ], - "webOrigins": [], - "notBefore": 0, - "bearerOnly": false, - "consentRequired": false, - "standardFlowEnabled": true, - "implicitFlowEnabled": false, - "directAccessGrantsEnabled": false, - "serviceAccountsEnabled": false, - "publicClient": false, - "frontchannelLogout": false, - "protocol": "openid-connect", - "attributes": {}, - "authenticationFlowBindingOverrides": {}, - "fullScopeAllowed": false, - "nodeReRegistrationTimeout": 0, - "defaultClientScopes": [ - "role_list", - "profile", - "email" - ], - "optionalClientScopes": [ - "address", - "phone", - "offline_access" - ] + "credentials" : [ { + "id" : "67e5bb2a-6916-41fe-8050-cd35a6b3edb5", + "type" : "password", + "createdDate" : 1578611567326, + "secretData" : "{\"value\":\"FXPLs7oJ1yTFTWN+iy7Hjs0SYiHfODbvpee/pCOFcF9Yxt6NyZCazgImWUrH+8M5hfPCNRwoedvAHFSJl6RQvQ==\",\"salt\":\"J1uzWAXaL3I0tEWzqpYIdw==\"}", + "credentialData" : "{\"hashIterations\":27500,\"algorithm\":\"pbkdf2-sha256\"}" + } ], + "disableableCredentialTypes" : [ ], + "requiredActions" : [ ], + "realmRoles" : [ "uma_authorization", "offline_access" ], + "clientRoles" : { + "account" : [ "view-profile", "manage-account" ] }, - { - "id": "7df11138-b94f-43f9-ba78-d4c9cedc21f5", - "clientId": "admin", - "surrogateAuthRequired": false, - "enabled": true, - "clientAuthenticatorType": "client-secret", - "secret": "**********", - "redirectUris": [ - "http://localhost:8080" - ], - "webOrigins": [], - "notBefore": 0, - "bearerOnly": false, - "consentRequired": false, - "standardFlowEnabled": true, - "implicitFlowEnabled": false, - "directAccessGrantsEnabled": true, - "serviceAccountsEnabled": true, - "publicClient": false, - "frontchannelLogout": false, - "protocol": "openid-connect", - "attributes": { - "saml.assertion.signature": "false", - "saml.force.post.binding": "false", - "saml.multivalued.roles": "false", - "saml.encrypt": "false", - "saml.server.signature": "false", - "saml.server.signature.keyinfo.ext": "false", - "exclude.session.state.from.auth.response": "false", - "saml_force_name_id_format": "false", - "saml.client.signature": "false", - "tls.client.certificate.bound.access.tokens": "false", - "saml.authnstatement": "false", - "display.on.consent.screen": "false", - "saml.onetimeuse.condition": "false" - }, - "authenticationFlowBindingOverrides": {}, - "fullScopeAllowed": false, - "nodeReRegistrationTimeout": -1, - "protocolMappers": [ - { - "id": "f4085a7e-0cd0-4b89-a597-ef899d5d394e", - "name": "Client Host", - "protocol": "openid-connect", - "protocolMapper": "oidc-usersessionmodel-note-mapper", - "consentRequired": false, - "config": { - "user.session.note": "clientHost", - "userinfo.token.claim": "true", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "clientHost", - "jsonType.label": "String" - } - }, - { - "id": "5fb39ea2-fb83-45ef-bedb-2b407e889127", - "name": "Client IP Address", - "protocol": "openid-connect", - "protocolMapper": "oidc-usersessionmodel-note-mapper", - "consentRequired": false, - "config": { - "user.session.note": "clientAddress", - "userinfo.token.claim": "true", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "clientAddress", - "jsonType.label": "String" - } - }, - { - "id": "521dca00-706d-4eef-a9d8-879006a7be99", - "name": "Client ID", - "protocol": "openid-connect", - "protocolMapper": "oidc-usersessionmodel-note-mapper", - "consentRequired": false, - "config": { - "user.session.note": "clientId", - "userinfo.token.claim": "true", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "clientId", - "jsonType.label": "String" - } - } - ], - "defaultClientScopes": [ - "role_list", - "profile", - "email" - ], - "optionalClientScopes": [ - "address", - "phone", - "offline_access", - "admin" - ] + "notBefore" : 0, + "groups" : [ ] + }, { + "id" : "3d05248f-ea11-4b8c-9ad0-0a472e698e9e", + "createdTimestamp" : 1578611760368, + "username" : "josh", + "enabled" : true, + "totp" : false, + "emailVerified" : true, + "firstName" : "Josh", + "lastName" : "Cummings", + "email" : "josh@example.com", + "attributes" : { + "tenant_id" : [ "one" ], + "user_id" : [ "3d05248f-ea11-4b8c-9ad0-0a472e698e9e" ] }, - { - "id": "a41e847f-06d0-4c8f-b03b-41fe210dc4af", - "clientId": "admin-cli", - "name": "${client_admin-cli}", - "surrogateAuthRequired": false, - "enabled": true, - "clientAuthenticatorType": "client-secret", - "secret": "**********", - "redirectUris": [ - "http://localhost:8080" - ], - "webOrigins": [], - "notBefore": 0, - "bearerOnly": false, - "consentRequired": false, - "standardFlowEnabled": true, - "implicitFlowEnabled": false, - "directAccessGrantsEnabled": true, - "serviceAccountsEnabled": false, - "publicClient": true, - "frontchannelLogout": false, - "protocol": "openid-connect", - "attributes": { - "saml.assertion.signature": "false", - "saml.force.post.binding": "false", - "saml.multivalued.roles": "false", - "saml.encrypt": "false", - "saml.server.signature": "false", - "saml.server.signature.keyinfo.ext": "false", - "exclude.session.state.from.auth.response": "false", - "saml_force_name_id_format": "false", - "saml.client.signature": "false", - "tls.client.certificate.bound.access.tokens": "false", - "saml.authnstatement": "false", - "display.on.consent.screen": "false", - "saml.onetimeuse.condition": "false" - }, - "authenticationFlowBindingOverrides": {}, - "fullScopeAllowed": true, - "nodeReRegistrationTimeout": 0, - "defaultClientScopes": [ - "role_list", - "profile", - "email" - ], - "optionalClientScopes": [ - "address", - "phone", - "offline_access" - ] + "credentials" : [ { + "id" : "49a6d3d0-cfee-4bdd-8909-2efe3965af0e", + "type" : "password", + "createdDate" : 1578613418618, + "secretData" : "{\"value\":\"tzwMq355b99RpXa0huuIKiurzSgVfDkLaDaScTutDvmQ1jnyemSv0FyhSIjX0LfzTiplcWa7Kt1yE/LDiq+OmA==\",\"salt\":\"RXu5+K1DQOlGhSeINU5GWg==\"}", + "credentialData" : "{\"hashIterations\":27500,\"algorithm\":\"pbkdf2-sha256\"}" + } ], + "disableableCredentialTypes" : [ ], + "requiredActions" : [ ], + "realmRoles" : [ "uma_authorization", "offline_access" ], + "clientRoles" : { + "account" : [ "view-profile", "manage-account" ] }, - { - "id": "db376c1b-d8c3-4f75-8459-634a79732e8b", - "clientId": "broker", - "name": "${client_broker}", - "surrogateAuthRequired": false, - "enabled": true, - "clientAuthenticatorType": "client-secret", - "secret": "**********", - "redirectUris": [], - "webOrigins": [], - "notBefore": 0, - "bearerOnly": false, - "consentRequired": false, - "standardFlowEnabled": true, - "implicitFlowEnabled": false, - "directAccessGrantsEnabled": false, - "serviceAccountsEnabled": false, - "publicClient": false, - "frontchannelLogout": false, - "protocol": "openid-connect", - "attributes": {}, - "authenticationFlowBindingOverrides": {}, - "fullScopeAllowed": false, - "nodeReRegistrationTimeout": 0, - "defaultClientScopes": [ - "role_list", - "profile", - "email" - ], - "optionalClientScopes": [ - "address", - "phone", - "offline_access" - ] + "notBefore" : 0, + "groups" : [ ] + }, { + "id" : "5bfce384-9e2e-4ace-a28d-3df2f662cb65", + "createdTimestamp" : 1578595554111, + "username" : "rob", + "enabled" : true, + "totp" : false, + "emailVerified" : true, + "firstName" : "Rob", + "lastName" : "Winch", + "email" : "rob@example.com", + "attributes" : { + "tenant_id" : [ "one" ], + "user_id" : [ "5bfce384-9e2e-4ace-a28d-3df2f662cb65" ] }, - { - "id": "df9ee6ee-e7c0-47f3-8c96-bea98a008f91", - "clientId": "realm-management", - "name": "${client_realm-management}", - "surrogateAuthRequired": false, - "enabled": true, - "clientAuthenticatorType": "client-secret", - "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": [ - "role_list", - "profile", - "email" - ], - "optionalClientScopes": [ - "address", - "phone", - "offline_access" - ] + "credentials" : [ { + "id" : "90570c86-4d20-4b8d-91f4-32be225fb5de", + "type" : "password", + "createdDate" : 1578595610512, + "secretData" : "{\"value\":\"Ej12hZflnmPyqRox9+QqBG5z2UVXj2kgZPThmjdiLHODttpGiHn/W9zXjrpcn/lImVcfbXMa64Ycl30jxztIOg==\",\"salt\":\"ugnccpXKDg/51t/Og6baxg==\"}", + "credentialData" : "{\"hashIterations\":27500,\"algorithm\":\"pbkdf2-sha256\"}" + } ], + "disableableCredentialTypes" : [ ], + "requiredActions" : [ ], + "realmRoles" : [ "uma_authorization", "offline_access" ], + "clientRoles" : { + "account" : [ "view-profile", "manage-account" ] }, - { - "id": "1b798a79-99b9-494b-ab37-5bc5abfc8997", - "clientId": "security-admin-console", - "name": "${client_security-admin-console}", - "baseUrl": "/auth/admin/one/console/index.html", - "surrogateAuthRequired": false, - "enabled": true, - "clientAuthenticatorType": "client-secret", - "secret": "**********", - "redirectUris": [ - "/auth/admin/one/console/*" - ], - "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, - "protocolMappers": [ - { - "id": "57d73411-c137-4082-975f-19e49239468f", - "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": [ - "role_list", - "profile", - "email" - ], - "optionalClientScopes": [ - "address", - "phone", - "offline_access" - ] + "notBefore" : 0, + "groups" : [ ] + }, { + "id" : "57a8cabf-1246-4f9f-992f-15550248145e", + "createdTimestamp" : 1578594378371, + "username" : "service-account-message", + "enabled" : true, + "totp" : false, + "emailVerified" : false, + "serviceAccountClientId" : "message", + "credentials" : [ ], + "disableableCredentialTypes" : [ ], + "requiredActions" : [ ], + "realmRoles" : [ "uma_authorization", "offline_access" ], + "clientRoles" : { + "account" : [ "view-profile", "manage-account" ] }, - { - "id": "2615235d-e834-4a7c-a472-76d822ac6048", - "clientId": "message", - "surrogateAuthRequired": false, - "enabled": true, - "clientAuthenticatorType": "client-secret", - "secret": "bfbd9f62-02ce-4638-a370-80d45514bd0a", - "redirectUris": [ - "http://one:8080/login/oauth2/code/one", - "http://one:8080" - ], - "webOrigins": [], - "notBefore": 0, - "bearerOnly": false, - "consentRequired": false, - "standardFlowEnabled": true, - "implicitFlowEnabled": false, - "directAccessGrantsEnabled": true, - "serviceAccountsEnabled": true, - "authorizationServicesEnabled": true, - "publicClient": false, - "frontchannelLogout": false, - "protocol": "openid-connect", - "attributes": { - "saml.assertion.signature": "false", - "saml.force.post.binding": "false", - "saml.multivalued.roles": "false", - "saml.encrypt": "false", - "saml.server.signature": "false", - "saml.server.signature.keyinfo.ext": "false", - "exclude.session.state.from.auth.response": "false", - "saml_force_name_id_format": "false", - "saml.client.signature": "false", - "tls.client.certificate.bound.access.tokens": "false", - "saml.authnstatement": "false", - "display.on.consent.screen": "false", - "saml.onetimeuse.condition": "false" - }, - "authenticationFlowBindingOverrides": {}, - "fullScopeAllowed": true, - "nodeReRegistrationTimeout": -1, - "protocolMappers": [ - { - "id": "2cf3eaa6-dd41-4b02-bc06-cbed4447f8bc", - "name": "tenant_id", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-attribute-mapper", - "consentRequired": false, - "config": { - "userinfo.token.claim": "true", - "user.attribute": "tenant_id", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "tenant_id", - "jsonType.label": "String" - } - }, - { - "id": "ecd91b4d-95d7-4853-95bb-1e8e357606a2", - "name": "user_id", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-attribute-mapper", - "consentRequired": false, - "config": { - "userinfo.token.claim": "true", - "user.attribute": "user_id", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "user_id", - "jsonType.label": "String" - } - }, - { - "id": "83a25f1e-a77b-4e7a-bf38-1f4f7c69f4d2", - "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": "46a484bb-9d3c-43fb-ad43-66959f6b5cb3", - "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": "5094345b-1708-4e02-bff4-a2421954fa03", - "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": [ - "role_list", - "profile", - "email" - ], - "optionalClientScopes": [ - "address", - "message:read", - "phone", - "offline_access", - "admin" - ], - "authorizationSettings": { - "allowRemoteResourceManagement": false, - "policyEnforcementMode": "ENFORCING", - "resources": [ - { - "name": "Default Resource", - "uri": "/*", - "type": "urn:message:resources:default", - "ownerManagedAccess": false, - "attributes": {}, - "_id": "4db9cddb-4237-4983-a4a6-edf8adeef55a" - } - ], - "policies": [ - { - "id": "ea38f67e-a94e-4185-9216-3907f88b76bb", - "name": "Default Policy", - "description": "A policy that grants access only for users within this realm", - "type": "js", - "logic": "POSITIVE", - "decisionStrategy": "AFFIRMATIVE", - "config": { - "code": "// by default, grants any permission associated with this policy\n$evaluation.grant();\n" - } - }, - { - "id": "e63d65cc-39c4-45ed-b47b-7b0ff85b7a08", - "name": "Default Permission", - "description": "A permission that applies to the default resource type", - "type": "resource", - "logic": "POSITIVE", - "decisionStrategy": "UNANIMOUS", - "config": { - "defaultResourceType": "urn:message:resources:default", - "applyPolicies": "[\"Default Policy\"]" - } - } - ], - "scopes": [] - } - } - ], - "clientScopes": [ - { - "id": "09c72dab-ad37-4577-a443-4a0b12aecaba", - "name": "address", - "description": "OpenID Connect built-in scope: address", - "protocol": "openid-connect", - "attributes": { - "consent.screen.text": "${addressScopeConsentText}", - "display.on.consent.screen": "true" - }, - "protocolMappers": [ - { - "id": "63ca9ab3-52ff-455a-a27c-87ec502ef481", - "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" - } - } - ] + "notBefore" : 0, + "groups" : [ ] + } ], + "scopeMappings" : [ { + "clientScope" : "offline_access", + "roles" : [ "offline_access" ] + } ], + "clients" : [ { + "id" : "a6d0399d-b368-4b18-8ec3-380f2035ad18", + "clientId" : "account", + "name" : "${client_account}", + "rootUrl" : "${authBaseUrl}", + "baseUrl" : "/realms/one/account/", + "surrogateAuthRequired" : false, + "enabled" : true, + "clientAuthenticatorType" : "client-secret", + "secret" : "83f953e1-3ad3-4c0a-a28a-6be8a5bb8ba6", + "defaultRoles" : [ "view-profile", "manage-account" ], + "redirectUris" : [ "/realms/one/account/*" ], + "webOrigins" : [ ], + "notBefore" : 0, + "bearerOnly" : false, + "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", "role_list", "roles", "profile", "email" ], + "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] + }, { + "id" : "8bd39f88-698f-46ee-999c-a2d4b18bf50d", + "clientId" : "admin-cli", + "name" : "${client_admin-cli}", + "surrogateAuthRequired" : false, + "enabled" : true, + "clientAuthenticatorType" : "client-secret", + "secret" : "540d1c1b-9b2b-4e77-8bf3-80dc7974f112", + "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", "role_list", "roles", "profile", "email" ], + "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] + }, { + "id" : "105d439f-510b-4557-94d8-6b80c9bb0f3c", + "clientId" : "broker", + "name" : "${client_broker}", + "surrogateAuthRequired" : false, + "enabled" : true, + "clientAuthenticatorType" : "client-secret", + "secret" : "be6e6f9c-1ede-46f5-9ad6-20acd0178c06", + "redirectUris" : [ ], + "webOrigins" : [ ], + "notBefore" : 0, + "bearerOnly" : false, + "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", "role_list", "roles", "profile", "email" ], + "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] + }, { + "id" : "8b17c9eb-c271-42ae-9a7f-bd1d77d3d772", + "clientId" : "message", + "surrogateAuthRequired" : false, + "enabled" : true, + "clientAuthenticatorType" : "client-secret", + "secret" : "41090dc6-ed60-445c-9a3e-bd1b58bb1c5b", + "redirectUris" : [ "http://one:8080/login/oauth2/code/one", "http://one:8080" ], + "webOrigins" : [ "http://one:8080" ], + "notBefore" : 0, + "bearerOnly" : false, + "consentRequired" : false, + "standardFlowEnabled" : true, + "implicitFlowEnabled" : false, + "directAccessGrantsEnabled" : true, + "serviceAccountsEnabled" : true, + "publicClient" : false, + "frontchannelLogout" : false, + "protocol" : "openid-connect", + "attributes" : { + "saml.assertion.signature" : "false", + "saml.force.post.binding" : "false", + "saml.multivalued.roles" : "false", + "saml.encrypt" : "false", + "saml.server.signature" : "false", + "saml.server.signature.keyinfo.ext" : "false", + "exclude.session.state.from.auth.response" : "false", + "saml_force_name_id_format" : "false", + "saml.client.signature" : "false", + "tls.client.certificate.bound.access.tokens" : "false", + "saml.authnstatement" : "false", + "display.on.consent.screen" : "false", + "saml.onetimeuse.condition" : "false" }, - { - "id": "f01447c8-f250-464c-876f-dad30aae9c50", - "name": "admin", - "protocol": "openid-connect", - "attributes": { - "display.on.consent.screen": "false" + "authenticationFlowBindingOverrides" : { }, + "fullScopeAllowed" : true, + "nodeReRegistrationTimeout" : -1, + "protocolMappers" : [ { + "id" : "1da89f33-76f2-4837-bce8-685965fdbc52", + "name" : "user", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "userinfo.token.claim" : "true", + "user.attribute" : "user_id", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "user_id", + "jsonType.label" : "String" } - }, - { - "id": "4039998d-fd63-41bc-8430-ea283930abd8", - "name": "email", - "description": "OpenID Connect built-in scope: email", - "protocol": "openid-connect", - "attributes": { - "consent.screen.text": "${emailScopeConsentText}", - "display.on.consent.screen": "true" - }, - "protocolMappers": [ - { - "id": "612d811d-c50d-4636-a56e-d1ae10758877", - "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": "bc0a5904-79fb-4ea7-a1b2-0f6b4498eaf9", - "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": "ee005041-52fe-4538-8f46-2b568fd1cbc4", - "name": "message:read", - "protocol": "openid-connect", - "attributes": { - "consent.screen.text": "", - "display.on.consent.screen": "true" + }, { + "id" : "9b3012b6-9697-4555-b7f8-3a930a097b28", + "name" : "Client IP Address", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usersessionmodel-note-mapper", + "consentRequired" : false, + "config" : { + "user.session.note" : "clientAddress", + "userinfo.token.claim" : "true", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "clientAddress", + "jsonType.label" : "String" } - }, - { - "id": "0c7371fc-31fd-4ff1-bf3f-a673dcf64bb8", - "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" : "e0312e5e-59dd-4d0e-8f76-9c51a66fbc73", + "name" : "Client ID", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usersessionmodel-note-mapper", + "consentRequired" : false, + "config" : { + "user.session.note" : "clientId", + "userinfo.token.claim" : "true", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "clientId", + "jsonType.label" : "String" } - }, - { - "id": "be5797a2-51bb-497c-8343-021d937ee9ca", - "name": "phone", - "description": "OpenID Connect built-in scope: phone", - "protocol": "openid-connect", - "attributes": { - "consent.screen.text": "${phoneScopeConsentText}", - "display.on.consent.screen": "true" - }, - "protocolMappers": [ - { - "id": "7a0489eb-2a2c-458e-803c-3e8b045ef1d3", - "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": "91e866fa-f991-40be-af4e-0c96b4a55535", - "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" - } - } - ] - }, - { - "id": "bca2761f-a632-46ee-879b-0e163efb01e6", - "name": "profile", - "description": "OpenID Connect built-in scope: profile", - "protocol": "openid-connect", - "attributes": { - "consent.screen.text": "${profileScopeConsentText}", - "display.on.consent.screen": "true" - }, - "protocolMappers": [ - { - "id": "edcd048b-34c3-4bbf-bb60-ce905334e024", - "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": "c1f164cc-fed1-4787-a9aa-9ae708901b19", - "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": "74a71b5d-4c06-4465-9333-8e145bfe3ec5", - "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": "bccb3caa-f6f0-41a7-baf1-c04167d97748", - "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": "789975c6-5d5d-497b-ab15-354108c374fe", - "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": "c950e941-8b00-4ccf-8e58-ad0d5f7b6021", - "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": "906e8458-9037-488b-ac39-9e2ddf75b70b", - "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": "04bd8865-a3ef-4f34-b734-89ab7013dc36", - "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": "09b2cc96-84eb-41ef-b5a1-627f9e42c41b", - "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": "String" - } - }, - { - "id": "69836e70-c1fe-471b-97d7-e7ba505ac112", - "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": "7c67142d-7788-4b9b-89c5-cbd19c5c419d", - "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": "dbbf03c6-2d9f-4982-ab0c-3615dde6c6bb", - "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": "53c037ef-f9c4-47e3-b5fc-662debb43484", - "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": "f35a6517-16e1-4ef4-afb1-c607d74be4c1", - "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": "97901a4c-658f-4e64-8a56-9fb082c25abb", - "name": "role_list", - "description": "SAML role list", - "protocol": "saml", - "attributes": { - "consent.screen.text": "${samlRoleListScopeConsentText}", - "display.on.consent.screen": "true" - }, - "protocolMappers": [ - { - "id": "f9e7caf0-c1ca-4463-b9d9-00643c6d631c", - "name": "role list", - "protocol": "saml", - "protocolMapper": "saml-role-list-mapper", - "consentRequired": false, - "config": { - "single": "false", - "attribute.nameformat": "Basic", - "attribute.name": "Role" - } - } - ] - } - ], - "defaultDefaultClientScopes": [ - "role_list", - "profile", - "email" - ], - "defaultOptionalClientScopes": [ - "offline_access", - "address", - "phone", - "message:read" - ], - "browserSecurityHeaders": { - "xContentTypeOptions": "nosniff", - "xRobotsTag": "none", - "xFrameOptions": "SAMEORIGIN", - "xXSSProtection": "1; mode=block", - "contentSecurityPolicy": "frame-src 'self'; frame-ancestors 'self'; object-src 'none';", - "strictTransportSecurity": "max-age=31536000; includeSubDomains" - }, - "smtpServer": {}, - "eventsEnabled": false, - "eventsListeners": [ - "jboss-logging" - ], - "enabledEventTypes": [], - "adminEventsEnabled": false, - "adminEventsDetailsEnabled": false, - "components": { - "org.keycloak.services.clientregistration.policy.ClientRegistrationPolicy": [ - { - "id": "7d816113-7745-43c5-8971-fefcd527fb6b", - "name": "Allowed Client Scopes", - "providerId": "allowed-client-templates", - "subType": "anonymous", - "subComponents": {}, - "config": { - "allow-default-scopes": [ - "true" - ] - } - }, - { - "id": "ae5f62e9-2639-47a3-9164-2f8a34e3c7f5", - "name": "Trusted Hosts", - "providerId": "trusted-hosts", - "subType": "anonymous", - "subComponents": {}, - "config": { - "host-sending-registration-request-must-match": [ - "true" - ], - "client-uris-must-match": [ - "true" - ] - } - }, - { - "id": "36afa3b0-8135-4101-9348-bbcdb6ba3d78", - "name": "Consent Required", - "providerId": "consent-required", - "subType": "anonymous", - "subComponents": {}, - "config": {} - }, - { - "id": "11ef8b1f-3d8e-40b4-97bb-0806a6023251", - "name": "Allowed Protocol Mapper Types", - "providerId": "allowed-protocol-mappers", - "subType": "authenticated", - "subComponents": {}, - "config": { - "allowed-protocol-mapper-types": [ - "saml-user-property-mapper", - "saml-user-attribute-mapper", - "oidc-address-mapper", - "oidc-usermodel-attribute-mapper", - "oidc-full-name-mapper", - "oidc-sha256-pairwise-sub-mapper", - "oidc-usermodel-property-mapper", - "saml-role-list-mapper" - ] - } - }, - { - "id": "51256c1b-58d2-4646-afe0-1f703fd9e531", - "name": "Full Scope Disabled", - "providerId": "scope", - "subType": "anonymous", - "subComponents": {}, - "config": {} - }, - { - "id": "0e9978f7-00d1-47ed-a9a3-11a567a0b80d", - "name": "Max Clients Limit", - "providerId": "max-clients", - "subType": "anonymous", - "subComponents": {}, - "config": { - "max-clients": [ - "200" - ] - } - }, - { - "id": "5efc848f-a180-4b32-8f96-a691510ce000", - "name": "Allowed Client Scopes", - "providerId": "allowed-client-templates", - "subType": "authenticated", - "subComponents": {}, - "config": { - "allow-default-scopes": [ - "true" - ] - } - }, - { - "id": "633f649f-cdd1-4f86-a8c2-28af23e68d84", - "name": "Allowed Protocol Mapper Types", - "providerId": "allowed-protocol-mappers", - "subType": "anonymous", - "subComponents": {}, - "config": { - "allowed-protocol-mapper-types": [ - "saml-role-list-mapper", - "saml-user-property-mapper", - "oidc-full-name-mapper", - "oidc-sha256-pairwise-sub-mapper", - "saml-user-attribute-mapper", - "oidc-usermodel-property-mapper", - "oidc-address-mapper", - "oidc-usermodel-attribute-mapper" - ] - } + }, { + "id" : "09cca9ec-50a2-40d5-80c3-160e5f405cdf", + "name" : "Client Host", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usersessionmodel-note-mapper", + "consentRequired" : false, + "config" : { + "user.session.note" : "clientHost", + "userinfo.token.claim" : "true", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "clientHost", + "jsonType.label" : "String" } - ], - "org.keycloak.keys.KeyProvider": [ - { - "id": "0d0ed749-879a-41b8-95ba-fe246370f52f", - "name": "hmac-generated", - "providerId": "hmac-generated", - "subComponents": {}, - "config": { - "priority": [ - "100" - ] - } - }, - { - "id": "a63b4411-9e54-48d1-be30-ef0edf04f016", - "name": "rsa-generated", - "providerId": "rsa-generated", - "subComponents": {}, - "config": { - "priority": [ - "100" - ] - } - }, - { - "id": "a01617a0-beae-4038-898c-602655d73eb6", - "name": "aes-generated", - "providerId": "aes-generated", - "subComponents": {}, - "config": { - "priority": [ - "100" - ] - } + }, { + "id" : "d62efb04-8795-42bb-9ab3-d17689a377ba", + "name" : "tenant", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "userinfo.token.claim" : "true", + "user.attribute" : "tenant_id", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "tenant_id", + "jsonType.label" : "String" } - ] - }, - "internationalizationEnabled": false, - "supportedLocales": [], - "authenticationFlows": [ - { - "id": "e83ca13f-0b03-4161-854e-b9de4accec96", - "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", - "requirement": "REQUIRED", - "priority": 10, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "idp-email-verification", - "requirement": "ALTERNATIVE", - "priority": 20, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "requirement": "ALTERNATIVE", - "priority": 30, - "flowAlias": "Verify Existing Account by Re-authentication", - "userSetupAllowed": false, - "autheticatorFlow": true - } - ] - }, - { - "id": "ee056f65-88a1-4462-80ce-9eb41eda88fd", - "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", - "requirement": "REQUIRED", - "priority": 10, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "auth-otp-form", - "requirement": "OPTIONAL", - "priority": 20, - "userSetupAllowed": false, - "autheticatorFlow": false - } - ] - }, - { - "id": "32d76e06-2bdc-49f9-91c7-591bf4179509", - "alias": "browser", - "description": "browser based authentication", - "providerId": "basic-flow", - "topLevel": true, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "auth-cookie", - "requirement": "ALTERNATIVE", - "priority": 10, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "auth-spnego", - "requirement": "DISABLED", - "priority": 20, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "identity-provider-redirector", - "requirement": "ALTERNATIVE", - "priority": 25, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "requirement": "ALTERNATIVE", - "priority": 30, - "flowAlias": "forms", - "userSetupAllowed": false, - "autheticatorFlow": true - } - ] - }, - { - "id": "7f829b90-c158-4979-9172-b87066560948", - "alias": "clients", - "description": "Base authentication for clients", - "providerId": "client-flow", - "topLevel": true, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "client-secret", - "requirement": "ALTERNATIVE", - "priority": 10, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "client-jwt", - "requirement": "ALTERNATIVE", - "priority": 20, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "client-secret-jwt", - "requirement": "ALTERNATIVE", - "priority": 30, - "userSetupAllowed": false, - "autheticatorFlow": false - } - ] - }, - { - "id": "2fbc9664-9563-417b-bb49-aab90a862ccf", - "alias": "direct grant", - "description": "OpenID Connect Resource Owner Grant", - "providerId": "basic-flow", - "topLevel": true, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "direct-grant-validate-username", - "requirement": "REQUIRED", - "priority": 10, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "direct-grant-validate-password", - "requirement": "REQUIRED", - "priority": 20, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "direct-grant-validate-otp", - "requirement": "OPTIONAL", - "priority": 30, - "userSetupAllowed": false, - "autheticatorFlow": false - } - ] - }, - { - "id": "5d41278a-61fd-48c1-9a5e-d019daa17f70", - "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", - "requirement": "REQUIRED", - "priority": 10, - "userSetupAllowed": false, - "autheticatorFlow": false - } - ] - }, - { - "id": "cd8ad4cb-efff-4b22-8725-62a375f0d80a", - "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", - "requirement": "REQUIRED", - "priority": 10, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticatorConfig": "create unique user config", - "authenticator": "idp-create-user-if-unique", - "requirement": "ALTERNATIVE", - "priority": 20, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "requirement": "ALTERNATIVE", - "priority": 30, - "flowAlias": "Handle Existing Account", - "userSetupAllowed": false, - "autheticatorFlow": true - } - ] - }, - { - "id": "7c10cf24-04f2-4f2b-8877-1cfc08fccd24", - "alias": "forms", - "description": "Username, password, otp and other auth forms.", - "providerId": "basic-flow", - "topLevel": false, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "auth-username-password-form", - "requirement": "REQUIRED", - "priority": 10, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "auth-otp-form", - "requirement": "OPTIONAL", - "priority": 20, - "userSetupAllowed": false, - "autheticatorFlow": false - } - ] - }, - { - "id": "a8e83f3c-0e15-4128-a8c9-81d44fe78324", - "alias": "registration", - "description": "registration flow", - "providerId": "basic-flow", - "topLevel": true, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "registration-page-form", - "requirement": "REQUIRED", - "priority": 10, - "flowAlias": "registration form", - "userSetupAllowed": false, - "autheticatorFlow": true - } - ] - }, - { - "id": "4db1f0c1-c45d-4608-9a25-dc16700ef17a", - "alias": "registration form", - "description": "registration form", - "providerId": "form-flow", - "topLevel": false, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "registration-user-creation", - "requirement": "REQUIRED", - "priority": 20, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "registration-profile-action", - "requirement": "REQUIRED", - "priority": 40, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "registration-password-action", - "requirement": "REQUIRED", - "priority": 50, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "registration-recaptcha-action", - "requirement": "DISABLED", - "priority": 60, - "userSetupAllowed": false, - "autheticatorFlow": false - } - ] - }, - { - "id": "bd2d7027-3453-4e18-b814-2fe2f26cb782", - "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", - "requirement": "REQUIRED", - "priority": 10, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "reset-credential-email", - "requirement": "REQUIRED", - "priority": 20, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "reset-password", - "requirement": "REQUIRED", - "priority": 30, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "reset-otp", - "requirement": "OPTIONAL", - "priority": 40, - "userSetupAllowed": false, - "autheticatorFlow": false - } - ] + } ], + "defaultClientScopes" : [ "web-origins", "role_list", "roles", "profile", "email" ], + "optionalClientScopes" : [ "address", "message:read", "phone", "offline_access", "microprofile-jwt", "message:write" ] + }, { + "id" : "861cb166-2f2a-4733-8b33-ff260115a5fb", + "clientId" : "realm-management", + "name" : "${client_realm-management}", + "surrogateAuthRequired" : false, + "enabled" : true, + "clientAuthenticatorType" : "client-secret", + "secret" : "76655eff-1c03-4dac-a3be-65b03e3f593e", + "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", "role_list", "roles", "profile", "email" ], + "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] + }, { + "id" : "ea45d9f7-7ed7-463e-bab3-28d97d849e8f", + "clientId" : "security-admin-console", + "name" : "${client_security-admin-console}", + "rootUrl" : "${authAdminUrl}", + "baseUrl" : "/admin/one/console/", + "surrogateAuthRequired" : false, + "enabled" : true, + "clientAuthenticatorType" : "client-secret", + "secret" : "966e3e84-24f6-4cee-b243-785ed68f555b", + "redirectUris" : [ "/admin/one/console/*" ], + "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, + "protocolMappers" : [ { + "id" : "01d5e436-0316-4892-91bd-dcd8050f05b1", + "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", "role_list", "roles", "profile", "email" ], + "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] + } ], + "clientScopes" : [ { + "id" : "5f0f8a68-a0ec-4b3e-9e87-95a4003f73b5", + "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}" }, - { - "id": "6e4bb95e-4c7a-4ce6-a3a1-0d23fba74db2", - "alias": "saml ecp", - "description": "SAML ECP Profile Authentication Flow", - "providerId": "basic-flow", - "topLevel": true, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "http-basic-authenticator", - "requirement": "REQUIRED", - "priority": 10, - "userSetupAllowed": false, - "autheticatorFlow": false - } - ] - } - ], - "authenticatorConfig": [ - { - "id": "e5aa70ac-57b8-4abf-b4f5-cdbf024df5ee", - "alias": "create unique user config", - "config": { - "require.password.update.after.registration": "false" + "protocolMappers" : [ { + "id" : "41b78ae4-c6bd-49e3-a2ba-438dce38ff38", + "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" : "5b36b36f-1bda-48cb-a791-fb3ec8b0a4d6", + "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}" }, - { - "id": "d5b4e72f-8f56-4c26-9dec-31aaf852c629", - "alias": "review profile config", - "config": { - "update.profile.on.first.login": "missing" + "protocolMappers" : [ { + "id" : "6a05207f-3b4f-4cd5-98d3-6a2655f5df06", + "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" : "46bc983a-6eaf-4989-9895-71f609844925", + "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" : "46c9f85c-3f4b-483b-b5d8-19db3cce99d7", + "name" : "message:read", + "protocol" : "openid-connect", + "attributes" : { + "include.in.token.scope" : "true", + "display.on.consent.screen" : "true" } - ], - "requiredActions": [ - { - "alias": "CONFIGURE_TOTP", - "name": "Configure OTP", - "providerId": "CONFIGURE_TOTP", - "enabled": true, - "defaultAction": false, - "config": {} + }, { + "id" : "2da9a21a-528a-4ba2-96f6-77f94577d2c9", + "name" : "message:write", + "protocol" : "openid-connect", + "attributes" : { + "include.in.token.scope" : "true", + "display.on.consent.screen" : "true" + } + }, { + "id" : "6944e914-2de1-4050-9461-da3b844da8de", + "name" : "microprofile-jwt", + "description" : "Microprofile - JWT built-in scope", + "protocol" : "openid-connect", + "attributes" : { + "include.in.token.scope" : "true", + "display.on.consent.screen" : "false" }, - { - "alias": "UPDATE_PASSWORD", - "name": "Update Password", - "providerId": "UPDATE_PASSWORD", - "enabled": true, - "defaultAction": false, - "config": {} + "protocolMappers" : [ { + "id" : "03523161-f32d-4781-805e-c71a0bc6d24f", + "name" : "groups", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-realm-role-mapper", + "consentRequired" : false, + "config" : { + "multivalued" : "true", + "userinfo.token.claim" : "true", + "user.attribute" : "foo", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "groups", + "jsonType.label" : "String" + } + }, { + "id" : "270f64b9-ae05-4ae9-9b12-911e18cd00e4", + "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" : "b8405b1e-f461-4d48-bf00-4a23e4918859", + "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" : "44fe6528-9323-49ab-9313-0e8a8c160339", + "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}" }, - { - "alias": "UPDATE_PROFILE", - "name": "Update Profile", - "providerId": "UPDATE_PROFILE", - "enabled": true, - "defaultAction": false, - "config": {} + "protocolMappers" : [ { + "id" : "e58d2064-f21d-4296-b74e-511f8e721b69", + "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" + } + }, { + "id" : "c25bc8c4-4493-43d9-bf0d-68bd16b170cb", + "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" : "8587583f-031f-4292-88d5-f71dea610b25", + "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}" }, - { - "alias": "VERIFY_EMAIL", - "name": "Verify Email", - "providerId": "VERIFY_EMAIL", - "enabled": true, - "defaultAction": false, - "config": {} + "protocolMappers" : [ { + "id" : "a7c28bc9-2016-44cb-96bf-7d7f57786403", + "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" : "26051b5a-cf60-4bd4-a207-9f7fe07c82e0", + "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" : "76ecf4e8-e86d-4f1c-89e8-c9ee00cf4838", + "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" : "896c8072-3d81-4774-97cb-f7b50046a48d", + "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" : "1502039a-ee6b-4a56-a390-e2d68a4d9ddf", + "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" : "a733ef0f-c8f7-4664-a9c1-f38168fe9016", + "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" : "bfbff9c3-a799-4ee5-af1b-8d7a5d8ceacc", + "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" : "7e5ab6c8-fa07-436a-9798-a00f7ac6f976", + "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" : "90f123a0-9e1f-4aa8-8420-760626054abf", + "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" : "e236af39-4856-4abc-bcb2-f725099ea49b", + "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" : "b293ebef-23f5-4515-91a7-e50b7ca9502d", + "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" : "String" + } + }, { + "id" : "1a72b74f-f6a7-43c7-b798-6751a47725aa", + "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" : "5e9dd6bb-ef78-4853-8bd5-1ca5bbe41508", + "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" : "bd40dd5a-0ee7-4aa6-ae9f-495e66945acc", + "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" : "856d4c6d-4201-451d-bdbc-1191489c319f", + "name" : "role_list", + "description" : "SAML role list", + "protocol" : "saml", + "attributes" : { + "consent.screen.text" : "${samlRoleListScopeConsentText}", + "display.on.consent.screen" : "true" }, - { - "alias": "terms_and_conditions", - "name": "Terms and Conditions", - "providerId": "terms_and_conditions", - "enabled": false, - "defaultAction": false, - "config": {} - } - ], - "browserFlow": "browser", - "registrationFlow": "registration", - "directGrantFlow": "direct grant", - "resetCredentialsFlow": "reset credentials", - "clientAuthenticationFlow": "clients", - "dockerAuthenticationFlow": "docker auth", - "attributes": { - "_browser_header.xXSSProtection": "1; mode=block", - "_browser_header.xFrameOptions": "SAMEORIGIN", - "_browser_header.strictTransportSecurity": "max-age=31536000; includeSubDomains", - "permanentLockout": "false", - "quickLoginCheckMilliSeconds": "1000", - "displayName": "One", - "_browser_header.xRobotsTag": "none", - "maxFailureWaitSeconds": "900", - "minimumQuickLoginWaitSeconds": "60", - "failureFactor": "30", - "actionTokenGeneratedByUserLifespan": "300", - "maxDeltaTimeSeconds": "43200", - "_browser_header.xContentTypeOptions": "nosniff", - "offlineSessionMaxLifespan": "5184000", - "actionTokenGeneratedByAdminLifespan": "43200", - "bruteForceProtected": "false", - "_browser_header.contentSecurityPolicy": "frame-src 'self'; frame-ancestors 'self'; object-src 'none';", - "waitIncrementSeconds": "60", - "offlineSessionMaxLifespanEnabled": "false" - }, - "keycloakVersion": "4.1.0.Final", - "userManagedAccessAllowed": false, - "users" : [ - { - "id" : "c949272c-56a8-4437-98f7-8d976b6d88bd", - "createdTimestamp" : 1550866753471, - "username" : "joe", - "credentials" : [{ - "value" : "password", - "type" : "password" - }], - "realmRoles" : [ "offline_access", "uma_authorization" ], - "enabled" : true, - "totp" : false, - "emailVerified" : true, - "firstName" : "Joe", - "lastName" : "Grandja", - "email" : "joe@example.com", - "attributes" : { - "user_id" : [ "94d835cc-c70f-47c1-8206-2ad7c8a37565" ], - "tenant_id" : [ "one" ] - }, - "disableableCredentialTypes" : [ "password" ], - "requiredActions" : [ ], - "notBefore" : 0, - "access" : { - "manageGroupMembership" : true, - "view" : true, - "mapRoles" : true, - "impersonate" : true, - "manage" : true + "protocolMappers" : [ { + "id" : "98137f00-197f-4d32-84b1-4cb1e44937ad", + "name" : "role list", + "protocol" : "saml", + "protocolMapper" : "saml-role-list-mapper", + "consentRequired" : false, + "config" : { + "single" : "false", + "attribute.nameformat" : "Basic", + "attribute.name" : "Role" } + } ] + }, { + "id" : "1f297db5-a1dc-400a-9e64-e9b26c1ee36b", + "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}" }, - { - "id" : "998182b8-a3a5-436f-a3bf-ea516a9720f3", - "createdTimestamp" : 1550866246872, - "username" : "rob", - "credentials" : [{ - "value" : "password", - "type" : "password" - }], - "realmRoles" : [ "offline_access", "uma_authorization" ], - "enabled" : true, - "totp" : false, - "emailVerified" : true, - "firstName" : "Rob", - "lastName" : "Winch", - "email" : "rob@example.com", - "attributes" : { - "user_id" : [ "6fb5a754-c666-4859-9452-f885796ee73e" ], - "tenant_id" : [ "one" ] - }, - "disableableCredentialTypes" : [ "password" ], - "requiredActions" : [ ], - "notBefore" : 0, - "access" : { - "manageGroupMembership" : true, - "view" : true, - "mapRoles" : true, - "impersonate" : true, - "manage" : true + "protocolMappers" : [ { + "id" : "67d9c679-facd-4877-b8ba-42dcdc343cd2", + "name" : "audience resolve", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-audience-resolve-mapper", + "consentRequired" : false, + "config" : { } + }, { + "id" : "0d15ffb2-214c-4897-ad5a-60665a8f36a5", + "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" : "fdfe408b-9105-418e-96a8-e303b5323464", + "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" : "ece6324e-500f-4aa8-af4e-31b9dcdb5e6d", + "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" : "" }, - { - "id" : "3b62fbf2-b0d5-49e4-9e39-0e18486fc8e0", - "createdTimestamp" : 1550866796632, - "username" : "josh", - "credentials" : [{ - "value" : "password", - "type" : "password" - }], - "realmRoles" : [ "offline_access", "uma_authorization", "admin" ], - "enabled" : true, - "totp" : false, - "emailVerified" : true, - "firstName" : "Josh", - "lastName" : "Cummings", - "email" : "josh@example.com", - "attributes" : { - "user_id" : [ "219168d2-1da4-4f8a-85d8-95b4377af3c1" ], - "tenant_id" : [ "one" ] - }, - "disableableCredentialTypes" : [ "password" ], - "requiredActions" : [ ], - "notBefore" : 0, - "access" : { - "manageGroupMembership" : true, - "view" : true, - "mapRoles" : true, - "impersonate" : true, - "manage" : true + "protocolMappers" : [ { + "id" : "c724d56f-b253-4781-834f-57ef1e916bdc", + "name" : "allowed web origins", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-allowed-origins-mapper", + "consentRequired" : false, + "config" : { } + } ] + } ], + "defaultDefaultClientScopes" : [ "roles", "email", "role_list", "profile", "web-origins" ], + "defaultOptionalClientScopes" : [ "phone", "address", "microprofile-jwt", "offline_access" ], + "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, + "components" : { + "org.keycloak.services.clientregistration.policy.ClientRegistrationPolicy" : [ { + "id" : "4ceace20-bc33-469b-8575-a2555f11433f", + "name" : "Full Scope Disabled", + "providerId" : "scope", + "subType" : "anonymous", + "subComponents" : { }, + "config" : { } + }, { + "id" : "bbf945c7-ff03-4a8f-b8e2-580f6d49dd92", + "name" : "Trusted Hosts", + "providerId" : "trusted-hosts", + "subType" : "anonymous", + "subComponents" : { }, + "config" : { + "host-sending-registration-request-must-match" : [ "true" ], + "client-uris-must-match" : [ "true" ] + } + }, { + "id" : "1bb8f5cf-c6c3-45e0-88a7-f1f1386f8587", + "name" : "Max Clients Limit", + "providerId" : "max-clients", + "subType" : "anonymous", + "subComponents" : { }, + "config" : { + "max-clients" : [ "200" ] + } + }, { + "id" : "872527f0-db95-4041-a0f9-ba868a314940", + "name" : "Consent Required", + "providerId" : "consent-required", + "subType" : "anonymous", + "subComponents" : { }, + "config" : { } + }, { + "id" : "733a8bec-2960-47d7-a9d1-e6ad48fa1831", + "name" : "Allowed Client Scopes", + "providerId" : "allowed-client-templates", + "subType" : "authenticated", + "subComponents" : { }, + "config" : { + "allow-default-scopes" : [ "true" ] } + }, { + "id" : "63e638ff-3b4a-4e2f-8603-2789b9f73de6", + "name" : "Allowed Protocol Mapper Types", + "providerId" : "allowed-protocol-mappers", + "subType" : "anonymous", + "subComponents" : { }, + "config" : { + "allowed-protocol-mapper-types" : [ "oidc-full-name-mapper", "saml-role-list-mapper", "saml-user-attribute-mapper", "oidc-usermodel-attribute-mapper", "oidc-usermodel-property-mapper", "oidc-sha256-pairwise-sub-mapper", "oidc-address-mapper", "saml-user-property-mapper" ] + } + }, { + "id" : "f8e8953f-a14b-421e-9c41-86e80f8833ee", + "name" : "Allowed Client Scopes", + "providerId" : "allowed-client-templates", + "subType" : "anonymous", + "subComponents" : { }, + "config" : { + "allow-default-scopes" : [ "true" ] + } + }, { + "id" : "9c3dc79d-71c0-49e2-a48d-9702b2288e20", + "name" : "Allowed Protocol Mapper Types", + "providerId" : "allowed-protocol-mappers", + "subType" : "authenticated", + "subComponents" : { }, + "config" : { + "allowed-protocol-mapper-types" : [ "saml-role-list-mapper", "oidc-address-mapper", "oidc-usermodel-property-mapper", "oidc-sha256-pairwise-sub-mapper", "oidc-full-name-mapper", "saml-user-property-mapper", "oidc-usermodel-attribute-mapper", "saml-user-attribute-mapper" ] + } + } ], + "org.keycloak.keys.KeyProvider" : [ { + "id" : "dd41629d-a0ff-424a-83bf-116a1628aaa4", + "name" : "hmac-generated", + "providerId" : "hmac-generated", + "subComponents" : { }, + "config" : { + "kid" : [ "eac8e78a-5f69-4fb5-ad04-d04a4890aff7" ], + "secret" : [ "Z1a6VT7hSPSDGbwVZK2NkGTYd3pOxdxlx19EtNv1m4I1CDSUIGTYMR3eKo_EBPPKicWWitt4FX2QsM9GTtXmQQ" ], + "priority" : [ "100" ], + "algorithm" : [ "HS256" ] + } + }, { + "id" : "182fb723-6453-4249-a183-e491cc181ca9", + "name" : "rsa-generated", + "providerId" : "rsa-generated", + "subComponents" : { }, + "config" : { + "privateKey" : [ "MIIEowIBAAKCAQEAlYHzoTrWCtLgVozVxKG0L79EnVHgcRTfs+TBK5oWvxxTtWoKZQFHTFpnVHlZ2euuigVqrctdQAT/VhPGwdyJ5oJ5ReYCLV5H8+XS+im3JWdUMhnMjAnwvziNjb8TCBuLOrLFrie5Vxh3l4H6XhZ3NmLExQkBxS/kZockN2FMPnf8UVVFNs04A1rAeevcQdeMxLd3DsKMqBL8k26qK6zaJQUgmskNwqA/GIuCo0uDNEickVcpd1Xo8Wjw5wSwPraKGmldaPGfo9jfWooyxnEn2AStHtCUtJHoaE1dZR6mG/uynN7I6yE61KlzLCLBlcj40IQvRbfTa5oc71YwonPbgwIDAQABAoIBADJe1fY8HGEJKwv95weYc1yi1DssmrF+lt/E8k/+WiuJH6q/T0E4bQ0MaEPNnrgM74EQ0iA7o+8tv9kAULZ/1vYSf0lNdO5UFWnWxH4ED/BKH9PBXWjQ8It8QjS/a2oP3ZipInDKcWcmlyQ0ZmXMq91m6WR45F/LAuiIH2uJHGbu/7DCeXxRnCiVih7I8reZgrR6befL8N//wYf6LO5/PMettFBz7+O4e/vJSu+8z7wJvuD7kyw58F5Duqi7ERH9se2/jYvOQyR+P4zMl8Lu6022G7ULC6Xux+zzYXc6ZOFMBjoSR2yZsgwoknCOsx5U8y9CFUh7PwXGkEY+NQY65gECgYEA69gz5ZVFfu8CLhpxxqOO+ZSTTzsOWCS0eY7o6XXMnjFqEm/afFGQQYYAaJUUvIzDEJQB4/ITFsIslGy3SybWoU1uRYdD9kkYKh78aTwsIxvOUPI1kh1ojAiSu25y3cf8bHQnqVFIyYbZAa0TZmY45sxuZK/uikUk6fsR46zhcccCgYEAokjfldAmO75vupPwmy1acx5dopthjcoKRhTlmmU5hJcZ/R9VtMjlU8imepmgJnWCoz02PmF92hDzWnpr49QtxufcuYMeRtF2Fk9ypnwX9e8GY9YUseIrzBlKa00qV/XvO7MwzIG3cB9/8w9fFOm379V2M9SqxoqRI/cRJ85uSGUCgYA2KcoJYNW8CBH9Go+kqe1s/iUyngJ2Vb+o5xwweaBLeFe+8jdAM88obSjs28gOYVlvFj605eRiZqesUqdpt/q0wr6fcyg1iKXnDoSzemE8kuc4CdgpvV1EQ7fHGd+BdatQEQEGzqcjuTdfPitlafaJcsurjgf/c0+9+K4sFokUAwKBgESKIJwmWC99Y7TaTJFNW1kpZwSJOW9n+GTW6I4H2H4OTzSfqlP7URfMs7st7PyxPqZw8Nrx0/Romk8JS03izB6oyIk1PnFMf+I2VcbIvFnrRLifrwfd7P97YvnkklCqFwsQyDhnRLE/LIvcXxz3BO9vKUgEtse5uEkHTSCRx/QdAoGBAJQ07Qh4WrKxB95nbnM9aX7QO3XFtnGSwuHC1t3pyRoeapWx7mm5h1D+fXkG/7IKt5UH38GRb0/VikiRv6s9mOtnEcr3Wo6JPXyCF6ALO1awRlTfYR5erLdI1n+ilGaQcG195ZlB/3c5ZrbuEfncYww2be1zbWOwUa5ht+3JHWLS" ], + "certificate" : [ "MIIClTCCAX0CBgFviz4HajANBgkqhkiG9w0BAQsFADAOMQwwCgYDVQQDDANvbmUwHhcNMjAwMTA5MTY1NjM1WhcNMzAwMTA5MTY1ODE1WjAOMQwwCgYDVQQDDANvbmUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCVgfOhOtYK0uBWjNXEobQvv0SdUeBxFN+z5MErmha/HFO1agplAUdMWmdUeVnZ666KBWqty11ABP9WE8bB3InmgnlF5gItXkfz5dL6KbclZ1QyGcyMCfC/OI2NvxMIG4s6ssWuJ7lXGHeXgfpeFnc2YsTFCQHFL+RmhyQ3YUw+d/xRVUU2zTgDWsB569xB14zEt3cOwoyoEvyTbqorrNolBSCayQ3CoD8Yi4KjS4M0SJyRVyl3VejxaPDnBLA+tooaaV1o8Z+j2N9aijLGcSfYBK0e0JS0kehoTV1lHqYb+7Kc3sjrITrUqXMsIsGVyPjQhC9Ft9NrmhzvVjCic9uDAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAEPcr8zYVZNmA3ZxFt+c7WfjbP4E4e8r6aA/Zh/fDZ6DhFZ9QHEVpPnU16YfpZlLWc+nKzAYR7TvXPGU5z20xsG8+cXo/Gy8AOMp/kNZ9k/KrZCMLzRFhcAgy0xjAZd8t9ctZjBS700FFCg316bIWXVdlIrc0bA5328xqN1wHuZjMvl+o9SmjuYa6AIxVbQ41qIrCN5s6477MR26OYxWz4tL05Whljgn/HW56d3kh4NrTPILqh2N6MsQe4WtprUS/1mlohC1VutTb7ZC0kF1SP1M4vdOLVGOjs91AkHG20dzDRNrGGLABE/7j28Ror/db2ri5aHwaSAPhr1hTeNRaWo=" ], + "priority" : [ "100" ] + } + }, { + "id" : "92fb2508-4845-4ecb-9b99-da96cb3d3a8e", + "name" : "aes-generated", + "providerId" : "aes-generated", + "subComponents" : { }, + "config" : { + "kid" : [ "ee9f2777-687d-43ee-987b-a50ffabbf95f" ], + "secret" : [ "JMWkO5U0SObSs5SBrdj9qA" ], + "priority" : [ "100" ] + } + } ] + }, + "internationalizationEnabled" : false, + "supportedLocales" : [ ], + "authenticationFlows" : [ { + "id" : "63fb9787-ea84-473d-b84d-37f72d5e99c9", + "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", + "requirement" : "ALTERNATIVE", + "priority" : 10, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "requirement" : "ALTERNATIVE", + "priority" : 20, + "flowAlias" : "Verify Existing Account by Re-authentication", + "userSetupAllowed" : false, + "autheticatorFlow" : true + } ] + }, { + "id" : "8124a5b9-f2a4-416c-b7e3-101e39af0f72", + "alias" : "Authentication Options", + "description" : "Authentication options.", + "providerId" : "basic-flow", + "topLevel" : false, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "basic-auth", + "requirement" : "REQUIRED", + "priority" : 10, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "authenticator" : "basic-auth-otp", + "requirement" : "DISABLED", + "priority" : 20, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "authenticator" : "auth-spnego", + "requirement" : "DISABLED", + "priority" : 30, + "userSetupAllowed" : false, + "autheticatorFlow" : false + } ] + }, { + "id" : "8634d1e0-c5b9-4a14-9d72-820f8264cbc3", + "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", + "requirement" : "REQUIRED", + "priority" : 10, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "authenticator" : "auth-otp-form", + "requirement" : "REQUIRED", + "priority" : 20, + "userSetupAllowed" : false, + "autheticatorFlow" : false + } ] + }, { + "id" : "1f1520bb-f6f4-40ae-9995-8c2dc8e58b30", + "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", + "requirement" : "REQUIRED", + "priority" : 10, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "authenticator" : "direct-grant-validate-otp", + "requirement" : "REQUIRED", + "priority" : 20, + "userSetupAllowed" : false, + "autheticatorFlow" : false + } ] + }, { + "id" : "4d5ee712-2737-4d83-ab37-dcb8f4a96d78", + "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", + "requirement" : "REQUIRED", + "priority" : 10, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "authenticator" : "auth-otp-form", + "requirement" : "REQUIRED", + "priority" : 20, + "userSetupAllowed" : false, + "autheticatorFlow" : false + } ] + }, { + "id" : "2913a995-d4bf-41f3-8223-2269ad7d0968", + "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", + "requirement" : "REQUIRED", + "priority" : 10, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "requirement" : "REQUIRED", + "priority" : 20, + "flowAlias" : "Account verification options", + "userSetupAllowed" : false, + "autheticatorFlow" : true + } ] + }, { + "id" : "0091c53a-7594-495a-992c-71ff94738eb6", + "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", + "requirement" : "REQUIRED", + "priority" : 10, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "authenticator" : "reset-otp", + "requirement" : "REQUIRED", + "priority" : 20, + "userSetupAllowed" : false, + "autheticatorFlow" : false + } ] + }, { + "id" : "af11e8f4-3e4f-41b6-be89-7d00e9498830", + "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", + "requirement" : "ALTERNATIVE", + "priority" : 10, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "requirement" : "ALTERNATIVE", + "priority" : 20, + "flowAlias" : "Handle Existing Account", + "userSetupAllowed" : false, + "autheticatorFlow" : true + } ] + }, { + "id" : "8d0c7310-72ae-4736-906b-85d445b6d189", + "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", + "requirement" : "REQUIRED", + "priority" : 10, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "requirement" : "CONDITIONAL", + "priority" : 20, + "flowAlias" : "First broker login - Conditional OTP", + "userSetupAllowed" : false, + "autheticatorFlow" : true + } ] + }, { + "id" : "9eb23f3f-c230-47ae-a110-c0c6b27afb2c", + "alias" : "browser", + "description" : "browser based authentication", + "providerId" : "basic-flow", + "topLevel" : true, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "auth-cookie", + "requirement" : "ALTERNATIVE", + "priority" : 10, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "authenticator" : "auth-spnego", + "requirement" : "DISABLED", + "priority" : 20, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "authenticator" : "identity-provider-redirector", + "requirement" : "ALTERNATIVE", + "priority" : 25, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "requirement" : "ALTERNATIVE", + "priority" : 30, + "flowAlias" : "forms", + "userSetupAllowed" : false, + "autheticatorFlow" : true + } ] + }, { + "id" : "9a66527f-f360-49a0-b312-788e924d798a", + "alias" : "clients", + "description" : "Base authentication for clients", + "providerId" : "client-flow", + "topLevel" : true, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "client-secret", + "requirement" : "ALTERNATIVE", + "priority" : 10, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "authenticator" : "client-jwt", + "requirement" : "ALTERNATIVE", + "priority" : 20, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "authenticator" : "client-secret-jwt", + "requirement" : "ALTERNATIVE", + "priority" : 30, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "authenticator" : "client-x509", + "requirement" : "ALTERNATIVE", + "priority" : 40, + "userSetupAllowed" : false, + "autheticatorFlow" : false + } ] + }, { + "id" : "6982e6ec-d554-41f7-a1c6-94b4262230e5", + "alias" : "direct grant", + "description" : "OpenID Connect Resource Owner Grant", + "providerId" : "basic-flow", + "topLevel" : true, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "direct-grant-validate-username", + "requirement" : "REQUIRED", + "priority" : 10, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "authenticator" : "direct-grant-validate-password", + "requirement" : "REQUIRED", + "priority" : 20, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "requirement" : "CONDITIONAL", + "priority" : 30, + "flowAlias" : "Direct Grant - Conditional OTP", + "userSetupAllowed" : false, + "autheticatorFlow" : true + } ] + }, { + "id" : "44d3a686-3659-43b8-983f-e77a304226a9", + "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", + "requirement" : "REQUIRED", + "priority" : 10, + "userSetupAllowed" : false, + "autheticatorFlow" : false + } ] + }, { + "id" : "eafa7471-bce1-4fd3-963f-790ad8e31dea", + "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", + "requirement" : "REQUIRED", + "priority" : 10, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "requirement" : "REQUIRED", + "priority" : 20, + "flowAlias" : "User creation or linking", + "userSetupAllowed" : false, + "autheticatorFlow" : true + } ] + }, { + "id" : "0aca29ee-dafc-4c3f-b275-efb0495bda40", + "alias" : "forms", + "description" : "Username, password, otp and other auth forms.", + "providerId" : "basic-flow", + "topLevel" : false, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "auth-username-password-form", + "requirement" : "REQUIRED", + "priority" : 10, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "requirement" : "CONDITIONAL", + "priority" : 20, + "flowAlias" : "Browser - Conditional OTP", + "userSetupAllowed" : false, + "autheticatorFlow" : true + } ] + }, { + "id" : "8c8de94c-2fba-49c0-bed9-87708de8ba15", + "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", + "requirement" : "REQUIRED", + "priority" : 10, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "requirement" : "REQUIRED", + "priority" : 20, + "flowAlias" : "Authentication Options", + "userSetupAllowed" : false, + "autheticatorFlow" : true + } ] + }, { + "id" : "0e12ffc8-b96a-4322-af05-358965a84bda", + "alias" : "registration", + "description" : "registration flow", + "providerId" : "basic-flow", + "topLevel" : true, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "registration-page-form", + "requirement" : "REQUIRED", + "priority" : 10, + "flowAlias" : "registration form", + "userSetupAllowed" : false, + "autheticatorFlow" : true + } ] + }, { + "id" : "2a75fb20-6776-41a2-b5fb-168e744c57f9", + "alias" : "registration form", + "description" : "registration form", + "providerId" : "form-flow", + "topLevel" : false, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "registration-user-creation", + "requirement" : "REQUIRED", + "priority" : 20, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "authenticator" : "registration-profile-action", + "requirement" : "REQUIRED", + "priority" : 40, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "authenticator" : "registration-password-action", + "requirement" : "REQUIRED", + "priority" : 50, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "authenticator" : "registration-recaptcha-action", + "requirement" : "DISABLED", + "priority" : 60, + "userSetupAllowed" : false, + "autheticatorFlow" : false + } ] + }, { + "id" : "5c39d19f-5b6d-448e-95ae-9fab1fed73a9", + "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", + "requirement" : "REQUIRED", + "priority" : 10, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "authenticator" : "reset-credential-email", + "requirement" : "REQUIRED", + "priority" : 20, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "authenticator" : "reset-password", + "requirement" : "REQUIRED", + "priority" : 30, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "requirement" : "CONDITIONAL", + "priority" : 40, + "flowAlias" : "Reset - Conditional OTP", + "userSetupAllowed" : false, + "autheticatorFlow" : true + } ] + }, { + "id" : "8a61296f-d6c2-459a-9043-c1a890fd0ee4", + "alias" : "saml ecp", + "description" : "SAML ECP Profile Authentication Flow", + "providerId" : "basic-flow", + "topLevel" : true, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "http-basic-authenticator", + "requirement" : "REQUIRED", + "priority" : 10, + "userSetupAllowed" : false, + "autheticatorFlow" : false + } ] + } ], + "authenticatorConfig" : [ { + "id" : "850a1fd1-b1a2-4597-a194-337a7dccfbd4", + "alias" : "create unique user config", + "config" : { + "require.password.update.after.registration" : "false" } - ] -} + }, { + "id" : "50127f7a-d3bb-4e07-9dfc-d0b914795008", + "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" : { } + } ], + "browserFlow" : "browser", + "registrationFlow" : "registration", + "directGrantFlow" : "direct grant", + "resetCredentialsFlow" : "reset credentials", + "clientAuthenticationFlow" : "clients", + "dockerAuthenticationFlow" : "docker auth", + "attributes" : { + "webAuthnPolicyAuthenticatorAttachment" : "not specified", + "_browser_header.xRobotsTag" : "none", + "webAuthnPolicyRpEntityName" : "keycloak", + "failureFactor" : "30", + "actionTokenGeneratedByUserLifespan" : "300", + "maxDeltaTimeSeconds" : "43200", + "webAuthnPolicySignatureAlgorithms" : "ES256", + "offlineSessionMaxLifespan" : "5184000", + "_browser_header.contentSecurityPolicyReportOnly" : "", + "bruteForceProtected" : "false", + "_browser_header.contentSecurityPolicy" : "frame-src 'self'; frame-ancestors 'self'; object-src 'none';", + "_browser_header.xXSSProtection" : "1; mode=block", + "_browser_header.xFrameOptions" : "SAMEORIGIN", + "_browser_header.strictTransportSecurity" : "max-age=31536000; includeSubDomains", + "webAuthnPolicyUserVerificationRequirement" : "not specified", + "permanentLockout" : "false", + "quickLoginCheckMilliSeconds" : "1000", + "webAuthnPolicyCreateTimeout" : "0", + "webAuthnPolicyRequireResidentKey" : "not specified", + "webAuthnPolicyRpId" : "", + "webAuthnPolicyAttestationConveyancePreference" : "not specified", + "maxFailureWaitSeconds" : "900", + "minimumQuickLoginWaitSeconds" : "60", + "webAuthnPolicyAvoidSameAuthenticatorRegister" : "false", + "_browser_header.xContentTypeOptions" : "nosniff", + "actionTokenGeneratedByAdminLifespan" : "43200", + "waitIncrementSeconds" : "60", + "offlineSessionMaxLifespanEnabled" : "false" + }, + "keycloakVersion" : "8.0.1", + "userManagedAccessAllowed" : false +} \ No newline at end of file diff --git a/etc/realms/two-realm.json b/etc/realms/two-realm.json index 3362a8c..63c8923 100644 --- a/etc/realms/two-realm.json +++ b/etc/realms/two-realm.json @@ -1,1776 +1,1833 @@ { - "id": "two", - "realm": "two", - "displayName": "Two", - "notBefore": 0, - "revokeRefreshToken": false, - "refreshTokenMaxReuse": 0, - "accessTokenLifespan": 3600, - "accessTokenLifespanForImplicitFlow": 900, - "ssoSessionIdleTimeout": 1800, - "ssoSessionMaxLifespan": 36000, - "offlineSessionIdleTimeout": 2592000, - "offlineSessionMaxLifespanEnabled": false, - "offlineSessionMaxLifespan": 5184000, - "accessCodeLifespan": 60, - "accessCodeLifespanUserAction": 300, - "accessCodeLifespanLogin": 1800, - "actionTokenGeneratedByAdminLifespan": 43200, - "actionTokenGeneratedByUserLifespan": 300, - "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": "5f61bbff-7dc7-4e15-949e-d3f0684dfcc8", - "name": "offline_access", - "description": "${role_offline-access}", - "composite": false, - "clientRole": false, - "containerId": "two" - }, - { - "id": "6772d4fd-36a5-49ec-b9d8-7bfd0b08730c", - "name": "uma_authorization", - "description": "${role_uma_authorization}", - "composite": false, - "clientRole": false, - "containerId": "two" - } - ], - "client": { - "realm-management": [ - { - "id": "c7ab4644-b451-4e60-8a4f-4c6fba567a59", - "name": "manage-realm", - "description": "${role_manage-realm}", - "composite": false, - "clientRole": true, - "containerId": "c43a312e-06c4-4067-ba82-6c00769ca168" - }, - { - "id": "d023557f-ff0a-4254-996d-ccf2919ed7ff", - "name": "manage-users", - "description": "${role_manage-users}", - "composite": false, - "clientRole": true, - "containerId": "c43a312e-06c4-4067-ba82-6c00769ca168" - }, - { - "id": "9816e818-ab11-4369-bd1c-3881751713d1", - "name": "manage-events", - "description": "${role_manage-events}", - "composite": false, - "clientRole": true, - "containerId": "c43a312e-06c4-4067-ba82-6c00769ca168" - }, - { - "id": "02b2e064-018a-4f49-bf87-a6770b64edc4", - "name": "view-users", - "description": "${role_view-users}", - "composite": true, - "composites": { - "client": { - "realm-management": [ - "query-groups", - "query-users" - ] - } - }, - "clientRole": true, - "containerId": "c43a312e-06c4-4067-ba82-6c00769ca168" - }, - { - "id": "3082ab63-c725-4fcc-8d23-13c6b6bba6a3", - "name": "view-events", - "description": "${role_view-events}", - "composite": false, - "clientRole": true, - "containerId": "c43a312e-06c4-4067-ba82-6c00769ca168" - }, - { - "id": "38fc8680-426b-45bb-8c2a-e3f4b704588b", - "name": "manage-identity-providers", - "description": "${role_manage-identity-providers}", - "composite": false, - "clientRole": true, - "containerId": "c43a312e-06c4-4067-ba82-6c00769ca168" - }, - { - "id": "3fed8f83-dce0-4ece-abb3-95f22c5db38e", - "name": "realm-admin", - "description": "${role_realm-admin}", - "composite": true, - "composites": { - "client": { - "realm-management": [ - "manage-realm", - "manage-users", - "manage-events", - "view-users", - "manage-identity-providers", - "view-events", - "view-realm", - "view-identity-providers", - "query-clients", - "create-client", - "impersonation", - "query-groups", - "view-clients", - "manage-clients", - "view-authorization", - "manage-authorization", - "query-realms", - "query-users" - ] - } - }, - "clientRole": true, - "containerId": "c43a312e-06c4-4067-ba82-6c00769ca168" - }, - { - "id": "64abfee0-4964-43b7-ac50-c4412a6e46fa", - "name": "view-realm", - "description": "${role_view-realm}", - "composite": false, - "clientRole": true, - "containerId": "c43a312e-06c4-4067-ba82-6c00769ca168" - }, - { - "id": "e17424ee-bc4b-40bb-82ea-ff75716ea016", - "name": "view-identity-providers", - "description": "${role_view-identity-providers}", - "composite": false, - "clientRole": true, - "containerId": "c43a312e-06c4-4067-ba82-6c00769ca168" - }, - { - "id": "67af0131-dee9-4e34-a098-e7b2ef1d0372", - "name": "query-clients", - "description": "${role_query-clients}", - "composite": false, - "clientRole": true, - "containerId": "c43a312e-06c4-4067-ba82-6c00769ca168" - }, - { - "id": "12343f80-dc81-45fe-9844-98ecf40c0009", - "name": "create-client", - "description": "${role_create-client}", - "composite": false, - "clientRole": true, - "containerId": "c43a312e-06c4-4067-ba82-6c00769ca168" - }, - { - "id": "e9781eb9-526b-45ae-8550-592282dbf13b", - "name": "view-clients", - "description": "${role_view-clients}", - "composite": true, - "composites": { - "client": { - "realm-management": [ - "query-clients" - ] - } - }, - "clientRole": true, - "containerId": "c43a312e-06c4-4067-ba82-6c00769ca168" - }, - { - "id": "09a13ef8-31c8-4e63-ab59-9911448e4af4", - "name": "query-groups", - "description": "${role_query-groups}", - "composite": false, - "clientRole": true, - "containerId": "c43a312e-06c4-4067-ba82-6c00769ca168" - }, - { - "id": "49eba40c-8dfa-43aa-80ea-73390bfb8b56", - "name": "impersonation", - "description": "${role_impersonation}", - "composite": false, - "clientRole": true, - "containerId": "c43a312e-06c4-4067-ba82-6c00769ca168" - }, - { - "id": "f3f779b5-c087-4793-876f-52ed1551b087", - "name": "manage-clients", - "description": "${role_manage-clients}", - "composite": false, - "clientRole": true, - "containerId": "c43a312e-06c4-4067-ba82-6c00769ca168" - }, - { - "id": "ee06b2e4-759c-4b3d-bcb8-9d710dfe1bac", - "name": "view-authorization", - "description": "${role_view-authorization}", - "composite": false, - "clientRole": true, - "containerId": "c43a312e-06c4-4067-ba82-6c00769ca168" - }, - { - "id": "918ba877-f53b-4f7b-a909-b5372d5226e8", - "name": "manage-authorization", - "description": "${role_manage-authorization}", - "composite": false, - "clientRole": true, - "containerId": "c43a312e-06c4-4067-ba82-6c00769ca168" - }, - { - "id": "a0dccf5e-02ef-4663-8f4e-cb6476387f74", - "name": "query-users", - "description": "${role_query-users}", - "composite": false, - "clientRole": true, - "containerId": "c43a312e-06c4-4067-ba82-6c00769ca168" - }, - { - "id": "82689d1b-788b-4c3d-8f73-c27b3ce8fb3b", - "name": "query-realms", - "description": "${role_query-realms}", - "composite": false, - "clientRole": true, - "containerId": "c43a312e-06c4-4067-ba82-6c00769ca168" - } - ], - "security-admin-console": [], - "admin-cli": [], - "message": [ - { - "id": "e754bec1-8df5-48ef-bc31-efb804731a5c", - "name": "uma_protection", - "composite": false, - "clientRole": true, - "containerId": "fb4ea5cf-4c74-47d9-8794-b10bcfa68f61" - } - ], - "broker": [ - { - "id": "a9141538-86a0-4ba8-81ce-3448cc4c21ef", - "name": "read-token", - "description": "${role_read-token}", - "composite": false, - "clientRole": true, - "containerId": "64ddc6e5-db88-4a2a-b7c6-e2d83f857e5b" - } - ], - "account": [ - { - "id": "0cb1dfee-aadc-468c-beb8-f9f6e667577f", - "name": "manage-account", - "description": "${role_manage-account}", - "composite": true, - "composites": { - "client": { - "account": [ - "manage-account-links" - ] - } - }, - "clientRole": true, - "containerId": "36b76060-1832-4b50-9a1d-c69f82dae29c" - }, - { - "id": "b16da7f5-e87a-4cac-ad64-a2978b5f09c9", - "name": "manage-account-links", - "description": "${role_manage-account-links}", - "composite": false, - "clientRole": true, - "containerId": "36b76060-1832-4b50-9a1d-c69f82dae29c" - }, - { - "id": "d5e4e0cb-912e-47e6-8ddb-171db719c01f", - "name": "view-profile", - "description": "${role_view-profile}", - "composite": false, - "clientRole": true, - "containerId": "36b76060-1832-4b50-9a1d-c69f82dae29c" - } - ] - } - }, - "groups": [], - "defaultRoles": [ - "uma_authorization", - "offline_access" - ], - "requiredCredentials": [ - "password" - ], - "otpPolicyType": "totp", - "otpPolicyAlgorithm": "HmacSHA1", - "otpPolicyInitialCounter": 0, - "otpPolicyDigits": 6, - "otpPolicyLookAheadWindow": 1, - "otpPolicyPeriod": 30, - "otpSupportedApplications": [ - "FreeOTP", - "Google Authenticator" - ], - "scopeMappings": [ - { - "clientScope": "offline_access", - "roles": [ - "offline_access" - ] - } - ], - "clients": [ - { - "id": "36b76060-1832-4b50-9a1d-c69f82dae29c", - "clientId": "account", - "name": "${client_account}", - "baseUrl": "/auth/realms/two/account", - "surrogateAuthRequired": false, - "enabled": true, - "clientAuthenticatorType": "client-secret", - "secret": "**********", - "defaultRoles": [ - "manage-account", - "view-profile" - ], - "redirectUris": [ - "/auth/realms/two/account/*" - ], - "webOrigins": [], - "notBefore": 0, - "bearerOnly": false, - "consentRequired": false, - "standardFlowEnabled": true, - "implicitFlowEnabled": false, - "directAccessGrantsEnabled": false, - "serviceAccountsEnabled": false, - "publicClient": false, - "frontchannelLogout": false, - "protocol": "openid-connect", - "attributes": {}, - "authenticationFlowBindingOverrides": {}, - "fullScopeAllowed": false, - "nodeReRegistrationTimeout": 0, - "defaultClientScopes": [ - "role_list", - "profile", - "email" - ], - "optionalClientScopes": [ - "address", - "phone", - "offline_access" - ] - }, - { - "id": "d7e57b57-3dc8-4819-891e-b009a06a4986", - "clientId": "admin-cli", - "name": "${client_admin-cli}", - "surrogateAuthRequired": false, - "enabled": true, - "clientAuthenticatorType": "client-secret", - "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": [ - "role_list", - "profile", - "email" - ], - "optionalClientScopes": [ - "address", - "phone", - "offline_access" - ] - }, - { - "id": "64ddc6e5-db88-4a2a-b7c6-e2d83f857e5b", - "clientId": "broker", - "name": "${client_broker}", - "surrogateAuthRequired": false, - "enabled": true, - "clientAuthenticatorType": "client-secret", - "secret": "**********", - "redirectUris": [], - "webOrigins": [], - "notBefore": 0, - "bearerOnly": false, - "consentRequired": false, - "standardFlowEnabled": true, - "implicitFlowEnabled": false, - "directAccessGrantsEnabled": false, - "serviceAccountsEnabled": false, - "publicClient": false, - "frontchannelLogout": false, - "protocol": "openid-connect", - "attributes": {}, - "authenticationFlowBindingOverrides": {}, - "fullScopeAllowed": false, - "nodeReRegistrationTimeout": 0, - "defaultClientScopes": [ - "role_list", - "profile", - "email" - ], - "optionalClientScopes": [ - "address", - "phone", - "offline_access" - ] - }, - { - "id": "c43a312e-06c4-4067-ba82-6c00769ca168", - "clientId": "realm-management", - "name": "${client_realm-management}", - "surrogateAuthRequired": false, - "enabled": true, - "clientAuthenticatorType": "client-secret", - "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": [ - "role_list", - "profile", - "email" - ], - "optionalClientScopes": [ - "address", - "phone", - "offline_access" - ] - }, - { - "id": "5b1f58d6-780b-41b1-826a-c35ea1e93b6c", - "clientId": "security-admin-console", - "name": "${client_security-admin-console}", - "baseUrl": "/auth/admin/two/console/index.html", - "surrogateAuthRequired": false, - "enabled": true, - "clientAuthenticatorType": "client-secret", - "secret": "**********", - "redirectUris": [ - "/auth/admin/two/console/*" - ], - "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, - "protocolMappers": [ - { - "id": "07461a5c-edf6-467a-b1a3-c19e05e2c2b4", - "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": [ - "role_list", - "profile", - "email" - ], - "optionalClientScopes": [ - "address", - "phone", - "offline_access" - ] - }, - { - "id": "fb4ea5cf-4c74-47d9-8794-b10bcfa68f61", - "clientId": "message", - "surrogateAuthRequired": false, - "enabled": true, - "clientAuthenticatorType": "client-secret", - "secret": "bfbd9f62-02ce-4638-a370-80d45514bd0a", - "redirectUris": [ - "http://two:8080/login/oauth2/code/two", - "http://two:8080" - ], - "webOrigins": [], - "notBefore": 0, - "bearerOnly": false, - "consentRequired": false, - "standardFlowEnabled": true, - "implicitFlowEnabled": false, - "directAccessGrantsEnabled": true, - "serviceAccountsEnabled": true, - "authorizationServicesEnabled": true, - "publicClient": false, - "frontchannelLogout": false, - "protocol": "openid-connect", - "attributes": { - "saml.assertion.signature": "false", - "saml.force.post.binding": "false", - "saml.multivalued.roles": "false", - "saml.encrypt": "false", - "saml.server.signature": "false", - "saml.server.signature.keyinfo.ext": "false", - "exclude.session.state.from.auth.response": "false", - "saml_force_name_id_format": "false", - "saml.client.signature": "false", - "tls.client.certificate.bound.access.tokens": "false", - "saml.authnstatement": "false", - "display.on.consent.screen": "false", - "saml.onetimeuse.condition": "false" - }, - "authenticationFlowBindingOverrides": {}, - "fullScopeAllowed": true, - "nodeReRegistrationTimeout": -1, - "protocolMappers": [ - { - "id": "e63e214b-2997-4fa0-a800-8c8779af2596", - "name": "tenant_id", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-attribute-mapper", - "consentRequired": false, - "config": { - "userinfo.token.claim": "true", - "user.attribute": "tenant_id", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "tenant_id", - "jsonType.label": "String" + "id" : "two", + "realm" : "two", + "notBefore" : 1579102225, + "revokeRefreshToken" : false, + "refreshTokenMaxReuse" : 0, + "accessTokenLifespan" : 300, + "accessTokenLifespanForImplicitFlow" : 900, + "ssoSessionIdleTimeout" : 1800, + "ssoSessionMaxLifespan" : 36000, + "ssoSessionIdleTimeoutRememberMe" : 0, + "ssoSessionMaxLifespanRememberMe" : 0, + "offlineSessionIdleTimeout" : 2592000, + "offlineSessionMaxLifespanEnabled" : false, + "offlineSessionMaxLifespan" : 5184000, + "accessCodeLifespan" : 60, + "accessCodeLifespanUserAction" : 300, + "accessCodeLifespanLogin" : 1800, + "actionTokenGeneratedByAdminLifespan" : 43200, + "actionTokenGeneratedByUserLifespan" : 300, + "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" : "33bfdb36-13bc-4e56-9401-7222f14cc62d", + "name" : "uma_authorization", + "description" : "${role_uma_authorization}", + "composite" : false, + "clientRole" : false, + "containerId" : "two", + "attributes" : { } + }, { + "id" : "a2ad53ca-d66c-4141-b51e-8feb4cff3f66", + "name" : "offline_access", + "description" : "${role_offline-access}", + "composite" : false, + "clientRole" : false, + "containerId" : "two", + "attributes" : { } + } ], + "client" : { + "realm-management" : [ { + "id" : "812240ce-13e1-4a81-a12b-b0aa8b343253", + "name" : "manage-clients", + "description" : "${role_manage-clients}", + "composite" : false, + "clientRole" : true, + "containerId" : "efb7f955-3325-4215-a207-38af172227be", + "attributes" : { } + }, { + "id" : "de50b9dd-81b5-4548-9b0a-1d2a8e38a3c1", + "name" : "impersonation", + "description" : "${role_impersonation}", + "composite" : false, + "clientRole" : true, + "containerId" : "efb7f955-3325-4215-a207-38af172227be", + "attributes" : { } + }, { + "id" : "73854b38-619b-455b-a3de-9ed8abb16d81", + "name" : "query-groups", + "description" : "${role_query-groups}", + "composite" : false, + "clientRole" : true, + "containerId" : "efb7f955-3325-4215-a207-38af172227be", + "attributes" : { } + }, { + "id" : "5273bdc2-a8b7-4ed1-bf62-bb2f458ddb6a", + "name" : "manage-realm", + "description" : "${role_manage-realm}", + "composite" : false, + "clientRole" : true, + "containerId" : "efb7f955-3325-4215-a207-38af172227be", + "attributes" : { } + }, { + "id" : "41e8c00f-d9d6-4bca-939e-46ced208a0db", + "name" : "manage-identity-providers", + "description" : "${role_manage-identity-providers}", + "composite" : false, + "clientRole" : true, + "containerId" : "efb7f955-3325-4215-a207-38af172227be", + "attributes" : { } + }, { + "id" : "613c2a73-b4a9-4ef0-8144-87fc20c6bda2", + "name" : "view-authorization", + "description" : "${role_view-authorization}", + "composite" : false, + "clientRole" : true, + "containerId" : "efb7f955-3325-4215-a207-38af172227be", + "attributes" : { } + }, { + "id" : "486b9a53-98b9-469d-bc6c-436f15ff9e26", + "name" : "view-users", + "description" : "${role_view-users}", + "composite" : true, + "composites" : { + "client" : { + "realm-management" : [ "query-groups", "query-users" ] } }, - { - "id": "d5803228-c86f-4acc-adf5-8beb594e3073", - "name": "user_id", - "protocol": "openid-connect", - "protocolMapper": "oidc-usermodel-attribute-mapper", - "consentRequired": false, - "config": { - "userinfo.token.claim": "true", - "user.attribute": "user_id", - "id.token.claim": "true", - "access.token.claim": "true", - "claim.name": "user_id", - "jsonType.label": "String" + "clientRole" : true, + "containerId" : "efb7f955-3325-4215-a207-38af172227be", + "attributes" : { } + }, { + "id" : "c695d128-f524-4623-a1e4-5454e7d9c40e", + "name" : "realm-admin", + "description" : "${role_realm-admin}", + "composite" : true, + "composites" : { + "client" : { + "realm-management" : [ "manage-clients", "impersonation", "query-groups", "manage-identity-providers", "manage-realm", "view-authorization", "view-users", "view-events", "query-clients", "create-client", "manage-authorization", "query-realms", "manage-users", "view-identity-providers", "view-realm", "query-users", "view-clients", "manage-events" ] } }, - { - "id": "748f5b3b-4a14-457b-ae22-ba0b2bf9f433", - "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" + "clientRole" : true, + "containerId" : "efb7f955-3325-4215-a207-38af172227be", + "attributes" : { } + }, { + "id" : "ae336751-f6db-45fb-b564-d6692cdceb4b", + "name" : "view-events", + "description" : "${role_view-events}", + "composite" : false, + "clientRole" : true, + "containerId" : "efb7f955-3325-4215-a207-38af172227be", + "attributes" : { } + }, { + "id" : "c6cd5f9e-74bb-4be3-a762-7203aadb757c", + "name" : "create-client", + "description" : "${role_create-client}", + "composite" : false, + "clientRole" : true, + "containerId" : "efb7f955-3325-4215-a207-38af172227be", + "attributes" : { } + }, { + "id" : "38e2e627-cde7-4dca-9d9f-c5a8c52c1f18", + "name" : "query-clients", + "description" : "${role_query-clients}", + "composite" : false, + "clientRole" : true, + "containerId" : "efb7f955-3325-4215-a207-38af172227be", + "attributes" : { } + }, { + "id" : "d88bfb67-4246-4689-9344-e801344f38c4", + "name" : "manage-authorization", + "description" : "${role_manage-authorization}", + "composite" : false, + "clientRole" : true, + "containerId" : "efb7f955-3325-4215-a207-38af172227be", + "attributes" : { } + }, { + "id" : "8e47f96a-5aa0-4ad2-93d2-291dc71c748e", + "name" : "query-realms", + "description" : "${role_query-realms}", + "composite" : false, + "clientRole" : true, + "containerId" : "efb7f955-3325-4215-a207-38af172227be", + "attributes" : { } + }, { + "id" : "b374781b-b646-4a0e-9e93-eb2392032e62", + "name" : "view-identity-providers", + "description" : "${role_view-identity-providers}", + "composite" : false, + "clientRole" : true, + "containerId" : "efb7f955-3325-4215-a207-38af172227be", + "attributes" : { } + }, { + "id" : "3613c04a-e77f-4fe2-9e44-f4faab024649", + "name" : "manage-users", + "description" : "${role_manage-users}", + "composite" : false, + "clientRole" : true, + "containerId" : "efb7f955-3325-4215-a207-38af172227be", + "attributes" : { } + }, { + "id" : "4fa8e5f3-5d30-4aac-b586-6c887a042a69", + "name" : "view-realm", + "description" : "${role_view-realm}", + "composite" : false, + "clientRole" : true, + "containerId" : "efb7f955-3325-4215-a207-38af172227be", + "attributes" : { } + }, { + "id" : "b954cbe0-3ab4-4153-9679-65975b575299", + "name" : "query-users", + "description" : "${role_query-users}", + "composite" : false, + "clientRole" : true, + "containerId" : "efb7f955-3325-4215-a207-38af172227be", + "attributes" : { } + }, { + "id" : "2930ef55-6f37-4892-9f69-206672850cbc", + "name" : "view-clients", + "description" : "${role_view-clients}", + "composite" : true, + "composites" : { + "client" : { + "realm-management" : [ "query-clients" ] } }, - { - "id": "f20fcdef-dce1-46dc-89f6-daa590798933", - "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" + "clientRole" : true, + "containerId" : "efb7f955-3325-4215-a207-38af172227be", + "attributes" : { } + }, { + "id" : "9f133337-5562-4ff7-b2da-09b5207982f7", + "name" : "manage-events", + "description" : "${role_manage-events}", + "composite" : false, + "clientRole" : true, + "containerId" : "efb7f955-3325-4215-a207-38af172227be", + "attributes" : { } + } ], + "security-admin-console" : [ ], + "admin-cli" : [ ], + "broker" : [ { + "id" : "d6acfa83-a451-44a1-aab2-123eaf0c5752", + "name" : "read-token", + "description" : "${role_read-token}", + "composite" : false, + "clientRole" : true, + "containerId" : "de459ae7-949a-4818-acf4-32db1912ffbf", + "attributes" : { } + } ], + "message" : [ ], + "account" : [ { + "id" : "29bf9348-f8ff-43c6-83ef-55252c7e5a6a", + "name" : "view-profile", + "description" : "${role_view-profile}", + "composite" : false, + "clientRole" : true, + "containerId" : "90042280-c134-4356-8388-e60e537f0e09", + "attributes" : { } + }, { + "id" : "84f65f37-ca62-4b33-9f2a-16625ab1d34a", + "name" : "manage-account", + "description" : "${role_manage-account}", + "composite" : true, + "composites" : { + "client" : { + "account" : [ "manage-account-links" ] } }, - { - "id": "75c44fce-63c2-4ebd-9e9d-337889a18146", - "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": [ - "role_list", - "profile", - "email" - ], - "optionalClientScopes": [ - "address", - "message:read", - "phone", - "offline_access" - ], - "authorizationSettings": { - "allowRemoteResourceManagement": false, - "policyEnforcementMode": "ENFORCING", - "resources": [ - { - "name": "Default Resource", - "uri": "/*", - "type": "urn:message:resources:default", - "ownerManagedAccess": false, - "attributes": {}, - "_id": "fb2db5e5-174a-42c8-9699-db41d0dd69e1" - } - ], - "policies": [ - { - "id": "b1e59afd-591f-44e7-a77c-099b49540961", - "name": "Default Policy", - "description": "A policy that grants access only for users within this realm", - "type": "js", - "logic": "POSITIVE", - "decisionStrategy": "AFFIRMATIVE", - "config": { - "code": "// by default, grants any permission associated with this policy\n$evaluation.grant();\n" - } - }, - { - "id": "87a1a663-7377-40d7-9457-03d73101c3f8", - "name": "Default Permission", - "description": "A permission that applies to the default resource type", - "type": "resource", - "logic": "POSITIVE", - "decisionStrategy": "UNANIMOUS", - "config": { - "defaultResourceType": "urn:message:resources:default", - "applyPolicies": "[\"Default Policy\"]" - } - } - ], - "scopes": [] - } + "clientRole" : true, + "containerId" : "90042280-c134-4356-8388-e60e537f0e09", + "attributes" : { } + }, { + "id" : "9216005f-f11a-426d-bf70-282a92abf649", + "name" : "manage-account-links", + "description" : "${role_manage-account-links}", + "composite" : false, + "clientRole" : true, + "containerId" : "90042280-c134-4356-8388-e60e537f0e09", + "attributes" : { } + } ] } - ], - "clientScopes": [ - { - "id": "11e66f47-c133-4226-aaac-e3f768a07f81", - "name": "address", - "description": "OpenID Connect built-in scope: address", - "protocol": "openid-connect", - "attributes": { - "consent.screen.text": "${addressScopeConsentText}", - "display.on.consent.screen": "true" - }, - "protocolMappers": [ - { - "id": "fb1cec93-0921-4a76-86eb-9cf5eccf511d", - "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" - } - } - ] + }, + "groups" : [ ], + "defaultRoles" : [ "uma_authorization", "offline_access" ], + "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" : [ ], + "users" : [ { + "id" : "36b49dda-5562-4186-8aaf-499bc7740638", + "createdTimestamp" : 1579100141993, + "username" : "filip", + "enabled" : true, + "totp" : false, + "emailVerified" : true, + "firstName" : "Filip", + "lastName" : "Hanik", + "email" : "filip@example.com", + "attributes" : { + "tenant_id" : [ "two" ], + "user_id" : [ "36b49dda-5562-4186-8aaf-499bc7740638" ] }, - { - "id": "30429ce3-7d62-4539-8631-dfe72efd82fb", - "name": "email", - "description": "OpenID Connect built-in scope: email", - "protocol": "openid-connect", - "attributes": { - "consent.screen.text": "${emailScopeConsentText}", - "display.on.consent.screen": "true" - }, - "protocolMappers": [ - { - "id": "6175a57f-9141-423f-b1bf-d52b818df2e9", - "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": "ebbab485-2133-44bc-9565-74b436ce4569", - "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" - } - } - ] + "credentials" : [ { + "id" : "4be785d2-9d99-49d0-997e-6bb749e00d84", + "type" : "password", + "createdDate" : 1579100519035, + "secretData" : "{\"value\":\"aouYZDZHpqHZ8IWUpfCkERmoWaPVDzS71EzpWIGBReZsY6Pwe9IOTCzlPe5fsi4i1EfeqaLgLYnPm2o1IfqYCQ==\",\"salt\":\"dfxOQVxGcbKwMS1ycecyeA==\"}", + "credentialData" : "{\"hashIterations\":27500,\"algorithm\":\"pbkdf2-sha256\"}" + } ], + "disableableCredentialTypes" : [ ], + "requiredActions" : [ ], + "realmRoles" : [ "uma_authorization", "offline_access" ], + "clientRoles" : { + "account" : [ "view-profile", "manage-account" ] }, - { - "id": "1aac8b80-ee39-47c5-b985-8431fbb54bd4", - "name": "message:read", - "protocol": "openid-connect", - "attributes": { - "consent.screen.text": "", - "display.on.consent.screen": "true" - } + "notBefore" : 0, + "groups" : [ ] + }, { + "id" : "abd77874-db66-494e-8d9a-b83f8b284038", + "createdTimestamp" : 1579099878777, + "username" : "joe", + "enabled" : true, + "totp" : false, + "emailVerified" : true, + "firstName" : "Joe", + "lastName" : "Grandja", + "email" : "joe@example.com", + "attributes" : { + "tenant_id" : [ "two" ], + "user_id" : [ "abd77874-db66-494e-8d9a-b83f8b284038" ] }, - { - "id": "d465933d-6517-4d15-9cfd-9e9ea55dd629", - "name": "offline_access", - "description": "OpenID Connect built-in scope: offline_access", - "protocol": "openid-connect", - "attributes": { - "consent.screen.text": "${offlineAccessScopeConsentText}", - "display.on.consent.screen": "true" - } + "credentials" : [ { + "id" : "5e22e0b7-7890-4fb2-8706-c2b54a53ff09", + "type" : "password", + "createdDate" : 1579099897576, + "secretData" : "{\"value\":\"e+RdxPoCDofbxul15lfp1dY0xqBR3PzDMIjgpkDh/QYwIQMhKGpqwa6au1cOjkIjK20/1rDQG6E3FeN1LxGQWQ==\",\"salt\":\"aV/5mFL53bPc9+AToF/jkg==\"}", + "credentialData" : "{\"hashIterations\":27500,\"algorithm\":\"pbkdf2-sha256\"}" + } ], + "disableableCredentialTypes" : [ ], + "requiredActions" : [ ], + "realmRoles" : [ "uma_authorization", "offline_access" ], + "clientRoles" : { + "account" : [ "view-profile", "manage-account" ] }, - { - "id": "b21ca0a8-626e-4996-805b-96ec74e0a54f", - "name": "phone", - "description": "OpenID Connect built-in scope: phone", - "protocol": "openid-connect", - "attributes": { - "consent.screen.text": "${phoneScopeConsentText}", - "display.on.consent.screen": "true" - }, - "protocolMappers": [ - { - "id": "f53e82cb-fbf3-48be-bd5e-15d7dd7dfe9e", - "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": "2467dc72-7450-49de-a1dd-1bb69eb1bd62", - "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" - } - } - ] + "notBefore" : 0, + "groups" : [ ] + }, { + "id" : "e41ac47a-a4a0-49f9-9154-29fef194cab6", + "createdTimestamp" : 1579100063087, + "username" : "josh", + "enabled" : true, + "totp" : false, + "emailVerified" : true, + "firstName" : "Josh", + "lastName" : "Cummings", + "email" : "josh@example.com", + "attributes" : { + "tenant_id" : [ "two" ], + "user_id" : [ "e41ac47a-a4a0-49f9-9154-29fef194cab6" ] }, - { - "id": "6262f9bd-a07b-45ac-a322-d5a3ea4be8a5", - "name": "profile", - "description": "OpenID Connect built-in scope: profile", - "protocol": "openid-connect", - "attributes": { - "consent.screen.text": "${profileScopeConsentText}", - "display.on.consent.screen": "true" - }, - "protocolMappers": [ - { - "id": "a80b8941-26cb-4171-a2be-e3d70ccd2680", - "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": "6dcc63f6-da78-4dc7-9a91-63fce68cf3db", - "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": "d8e29fea-4f64-44e2-bb48-af72310eca09", - "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": "9554d985-29f7-468f-be88-a0f88c2fa4d1", - "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": "beb7ddeb-813e-40d4-ac4d-e66810d1e892", - "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": "8211ad4c-2b58-46fe-9d43-7c528440f07c", - "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": "3d5cdc06-0b41-4fad-aa03-6d85660ad765", - "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": "0d81f2bb-74ea-45ea-8506-8d4e79cf4ef0", - "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": "a50f8896-f8e1-42e0-a9c4-634a775df5dd", - "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": "String" - } - }, - { - "id": "a73f709b-111e-414f-a6ba-a00258bbe63e", - "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": "86985da1-6390-4e8b-a19a-993b8c65c510", - "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": "cea7191c-4506-48ac-856f-49f5c5d44dac", - "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": "c730a2ea-8408-431e-b18a-02c6b167a035", - "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": "6e06134c-0320-4f8c-b134-0d8dceab331b", - "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" - } - } - ] + "credentials" : [ { + "id" : "d1f6e4d4-4724-45ff-8aed-7f49542c24d9", + "type" : "password", + "createdDate" : 1579100546227, + "secretData" : "{\"value\":\"AMcMFQ72yNZ/HUgUF4qPi4WJICuf9mEUMFlMqXBbzgcuepE2wKeRzfp/bu68nsOtbv74+f1UnF1SKaFkPf8RkQ==\",\"salt\":\"t8pxUAzqXK6ZIakuXOxfqQ==\"}", + "credentialData" : "{\"hashIterations\":27500,\"algorithm\":\"pbkdf2-sha256\"}" + } ], + "disableableCredentialTypes" : [ ], + "requiredActions" : [ ], + "realmRoles" : [ "uma_authorization", "offline_access" ], + "clientRoles" : { + "account" : [ "view-profile", "manage-account" ] }, - { - "id": "a1901dd7-f032-463d-8af7-c6e068ad4d6c", - "name": "role_list", - "description": "SAML role list", - "protocol": "saml", - "attributes": { - "consent.screen.text": "${samlRoleListScopeConsentText}", - "display.on.consent.screen": "true" - }, - "protocolMappers": [ - { - "id": "52e2525f-9ddc-46cd-842a-d0f10eb017ee", - "name": "role list", - "protocol": "saml", - "protocolMapper": "saml-role-list-mapper", - "consentRequired": false, - "config": { - "single": "false", - "attribute.nameformat": "Basic", - "attribute.name": "Role" - } - } - ] - } - ], - "defaultDefaultClientScopes": [ - "role_list", - "profile", - "email" - ], - "defaultOptionalClientScopes": [ - "offline_access", - "address", - "phone", - "message:read" - ], - "browserSecurityHeaders": { - "xContentTypeOptions": "nosniff", - "xRobotsTag": "none", - "xFrameOptions": "SAMEORIGIN", - "xXSSProtection": "1; mode=block", - "contentSecurityPolicy": "frame-src 'self'; frame-ancestors 'self'; object-src 'none';", - "strictTransportSecurity": "max-age=31536000; includeSubDomains" - }, - "smtpServer": {}, - "eventsEnabled": false, - "eventsListeners": [ - "jboss-logging" - ], - "enabledEventTypes": [], - "adminEventsEnabled": false, - "adminEventsDetailsEnabled": false, - "components": { - "org.keycloak.services.clientregistration.policy.ClientRegistrationPolicy": [ - { - "id": "6b58fd7d-ef65-4eb6-991a-e3b09532cea9", - "name": "Allowed Client Scopes", - "providerId": "allowed-client-templates", - "subType": "anonymous", - "subComponents": {}, - "config": { - "allow-default-scopes": [ - "true" - ] - } - }, - { - "id": "f9a8b748-07fc-4a97-85ab-3419e23fc82f", - "name": "Trusted Hosts", - "providerId": "trusted-hosts", - "subType": "anonymous", - "subComponents": {}, - "config": { - "host-sending-registration-request-must-match": [ - "true" - ], - "client-uris-must-match": [ - "true" - ] - } - }, - { - "id": "25ddf401-e0cd-48f4-b51d-11facdb495c4", - "name": "Consent Required", - "providerId": "consent-required", - "subType": "anonymous", - "subComponents": {}, - "config": {} - }, - { - "id": "64b2b175-c7d8-418a-882c-55adb6842074", - "name": "Allowed Protocol Mapper Types", - "providerId": "allowed-protocol-mappers", - "subType": "authenticated", - "subComponents": {}, - "config": { - "allowed-protocol-mapper-types": [ - "saml-user-property-mapper", - "saml-user-attribute-mapper", - "oidc-address-mapper", - "oidc-usermodel-attribute-mapper", - "oidc-full-name-mapper", - "oidc-sha256-pairwise-sub-mapper", - "oidc-usermodel-property-mapper", - "saml-role-list-mapper" - ] - } - }, - { - "id": "fb449c6c-e6b9-4611-8861-e1af64ebdf27", - "name": "Full Scope Disabled", - "providerId": "scope", - "subType": "anonymous", - "subComponents": {}, - "config": {} - }, - { - "id": "c8cfd3e2-dd0e-424c-9f05-496c61ac68e9", - "name": "Max Clients Limit", - "providerId": "max-clients", - "subType": "anonymous", - "subComponents": {}, - "config": { - "max-clients": [ - "200" - ] - } - }, - { - "id": "70889223-8f91-4f98-9b6f-94dc71eed725", - "name": "Allowed Client Scopes", - "providerId": "allowed-client-templates", - "subType": "authenticated", - "subComponents": {}, - "config": { - "allow-default-scopes": [ - "true" - ] - } - }, - { - "id": "2b4ba1cc-c80e-4ef3-9103-f11053af34e9", - "name": "Allowed Protocol Mapper Types", - "providerId": "allowed-protocol-mappers", - "subType": "anonymous", - "subComponents": {}, - "config": { - "allowed-protocol-mapper-types": [ - "saml-role-list-mapper", - "saml-user-property-mapper", - "oidc-full-name-mapper", - "oidc-sha256-pairwise-sub-mapper", - "saml-user-attribute-mapper", - "oidc-usermodel-property-mapper", - "oidc-address-mapper", - "oidc-usermodel-attribute-mapper" - ] - } - } - ], - "org.keycloak.keys.KeyProvider": [ - { - "id": "963f73bc-9b06-403c-924a-4ba843836a09", - "name": "hmac-generated", - "providerId": "hmac-generated", - "subComponents": {}, - "config": { - "priority": [ - "100" - ] - } - }, - { - "id": "20f511e2-8586-4845-8299-09ae28585a23", - "name": "rsa-generated", - "providerId": "rsa-generated", - "subComponents": {}, - "config": { - "priority": [ - "100" - ] - } - }, - { - "id": "f4b2778b-0a7d-4bcc-9c7d-c0a9be2116d8", - "name": "aes-generated", - "providerId": "aes-generated", - "subComponents": {}, - "config": { - "priority": [ - "100" - ] - } - } - ] - }, - "internationalizationEnabled": false, - "supportedLocales": [], - "authenticationFlows": [ - { - "id": "3c8b6d1a-0841-482e-ad1d-838c42326870", - "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", - "requirement": "REQUIRED", - "priority": 10, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "idp-email-verification", - "requirement": "ALTERNATIVE", - "priority": 20, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "requirement": "ALTERNATIVE", - "priority": 30, - "flowAlias": "Verify Existing Account by Re-authentication", - "userSetupAllowed": false, - "autheticatorFlow": true - } - ] - }, - { - "id": "c9dd36a1-1116-4d8b-9a3d-fb9f9ffd2e71", - "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", - "requirement": "REQUIRED", - "priority": 10, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "auth-otp-form", - "requirement": "OPTIONAL", - "priority": 20, - "userSetupAllowed": false, - "autheticatorFlow": false - } - ] - }, - { - "id": "4798ecac-ec7f-4077-aa3d-34a42036d5b3", - "alias": "browser", - "description": "browser based authentication", - "providerId": "basic-flow", - "topLevel": true, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "auth-cookie", - "requirement": "ALTERNATIVE", - "priority": 10, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "auth-spnego", - "requirement": "DISABLED", - "priority": 20, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "identity-provider-redirector", - "requirement": "ALTERNATIVE", - "priority": 25, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "requirement": "ALTERNATIVE", - "priority": 30, - "flowAlias": "forms", - "userSetupAllowed": false, - "autheticatorFlow": true - } - ] - }, - { - "id": "c8b4dbec-f6b9-480f-b073-ba89bc1ff13e", - "alias": "clients", - "description": "Base authentication for clients", - "providerId": "client-flow", - "topLevel": true, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "client-secret", - "requirement": "ALTERNATIVE", - "priority": 10, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "client-jwt", - "requirement": "ALTERNATIVE", - "priority": 20, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "client-secret-jwt", - "requirement": "ALTERNATIVE", - "priority": 30, - "userSetupAllowed": false, - "autheticatorFlow": false - } - ] - }, - { - "id": "610c2756-8b25-4ea3-b97d-dcab7203b891", - "alias": "direct grant", - "description": "OpenID Connect Resource Owner Grant", - "providerId": "basic-flow", - "topLevel": true, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "direct-grant-validate-username", - "requirement": "REQUIRED", - "priority": 10, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "direct-grant-validate-password", - "requirement": "REQUIRED", - "priority": 20, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "direct-grant-validate-otp", - "requirement": "OPTIONAL", - "priority": 30, - "userSetupAllowed": false, - "autheticatorFlow": false - } - ] + "notBefore" : 0, + "groups" : [ ] + }, { + "id" : "b868930d-f352-4e63-a27a-f19792b6a980", + "createdTimestamp" : 1579100458442, + "username" : "ria", + "enabled" : true, + "totp" : false, + "emailVerified" : true, + "firstName" : "Ria", + "lastName" : "Stein", + "email" : "ria@example.com", + "attributes" : { + "tenant_id" : [ "two" ], + "user_id" : [ "b868930d-f352-4e63-a27a-f19792b6a980" ] }, - { - "id": "b370640e-7fbd-49f6-b81d-1aba9f338f41", - "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", - "requirement": "REQUIRED", - "priority": 10, - "userSetupAllowed": false, - "autheticatorFlow": false - } - ] + "credentials" : [ { + "id" : "dd5641aa-5eb8-4e9d-89ed-66395511ab19", + "type" : "password", + "createdDate" : 1579100502153, + "secretData" : "{\"value\":\"vQA4rN4bAhVrSMnSjhPV0P9kKF77qwSFLhSTBy52e4xIanawo/E8gNqgbbnAW9ySnPyR3lUlXB+09lNz/uU5Ow==\",\"salt\":\"nPxEhUwRPV80tvJAJg17Tg==\"}", + "credentialData" : "{\"hashIterations\":27500,\"algorithm\":\"pbkdf2-sha256\"}" + } ], + "disableableCredentialTypes" : [ ], + "requiredActions" : [ ], + "realmRoles" : [ "uma_authorization", "offline_access" ], + "clientRoles" : { + "account" : [ "view-profile", "manage-account" ] }, - { - "id": "d07643cd-1c1d-4484-8cac-19f1580c61f7", - "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", - "requirement": "REQUIRED", - "priority": 10, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticatorConfig": "create unique user config", - "authenticator": "idp-create-user-if-unique", - "requirement": "ALTERNATIVE", - "priority": 20, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "requirement": "ALTERNATIVE", - "priority": 30, - "flowAlias": "Handle Existing Account", - "userSetupAllowed": false, - "autheticatorFlow": true - } - ] + "notBefore" : 0, + "groups" : [ ] + }, { + "id" : "67510e48-9689-4695-a385-d99ef2d1b8fb", + "createdTimestamp" : 1579099835632, + "username" : "rob", + "enabled" : true, + "totp" : false, + "emailVerified" : true, + "firstName" : "Rob", + "lastName" : "Winch", + "email" : "rob@example.com", + "attributes" : { + "tenant_id" : [ "two" ], + "user_id" : [ "67510e48-9689-4695-a385-d99ef2d1b8fb" ] }, - { - "id": "2eeab737-9d8e-43f0-86c2-1ebae1422647", - "alias": "forms", - "description": "Username, password, otp and other auth forms.", - "providerId": "basic-flow", - "topLevel": false, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "auth-username-password-form", - "requirement": "REQUIRED", - "priority": 10, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "auth-otp-form", - "requirement": "OPTIONAL", - "priority": 20, - "userSetupAllowed": false, - "autheticatorFlow": false - } - ] + "credentials" : [ { + "id" : "2c5098b7-3c57-4edb-80cb-03504e262967", + "type" : "password", + "createdDate" : 1579099850837, + "secretData" : "{\"value\":\"88meOsF0GYvNQMDjT0QbFJrkf5ItZGcc+uxjKZof7+VNoicxiYhkWSeFd+T4UHDGJ7WPd59UgkCrQlYv6F2K8w==\",\"salt\":\"ngkdRj7IFus0rr1Dob9dow==\"}", + "credentialData" : "{\"hashIterations\":27500,\"algorithm\":\"pbkdf2-sha256\"}" + } ], + "disableableCredentialTypes" : [ ], + "requiredActions" : [ ], + "realmRoles" : [ "uma_authorization", "offline_access" ], + "clientRoles" : { + "account" : [ "view-profile", "manage-account" ] }, - { - "id": "09f9aa7c-70a0-4f53-981f-c4b87a8da8a2", - "alias": "registration", - "description": "registration flow", - "providerId": "basic-flow", - "topLevel": true, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "registration-page-form", - "requirement": "REQUIRED", - "priority": 10, - "flowAlias": "registration form", - "userSetupAllowed": false, - "autheticatorFlow": true - } - ] + "notBefore" : 0, + "groups" : [ ] + }, { + "id" : "56a73b98-26cc-4db6-aa21-58fdb0c18cb5", + "createdTimestamp" : 1579099434593, + "username" : "service-account-message", + "enabled" : true, + "totp" : false, + "emailVerified" : false, + "serviceAccountClientId" : "message", + "credentials" : [ ], + "disableableCredentialTypes" : [ ], + "requiredActions" : [ ], + "realmRoles" : [ "uma_authorization", "offline_access" ], + "clientRoles" : { + "account" : [ "view-profile", "manage-account" ] }, - { - "id": "f6e4532d-1a12-49c9-9f29-a9d2bac84e78", - "alias": "registration form", - "description": "registration form", - "providerId": "form-flow", - "topLevel": false, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "registration-user-creation", - "requirement": "REQUIRED", - "priority": 20, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "registration-profile-action", - "requirement": "REQUIRED", - "priority": 40, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "registration-password-action", - "requirement": "REQUIRED", - "priority": 50, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "registration-recaptcha-action", - "requirement": "DISABLED", - "priority": 60, - "userSetupAllowed": false, - "autheticatorFlow": false - } - ] + "notBefore" : 0, + "groups" : [ ] + } ], + "scopeMappings" : [ { + "clientScope" : "offline_access", + "roles" : [ "offline_access" ] + } ], + "clients" : [ { + "id" : "90042280-c134-4356-8388-e60e537f0e09", + "clientId" : "account", + "name" : "${client_account}", + "rootUrl" : "${authBaseUrl}", + "baseUrl" : "/realms/two/account/", + "surrogateAuthRequired" : false, + "enabled" : true, + "clientAuthenticatorType" : "client-secret", + "secret" : "fea5d5a9-1209-4c79-893f-e5610252ab71", + "defaultRoles" : [ "view-profile", "manage-account" ], + "redirectUris" : [ "/realms/two/account/*" ], + "webOrigins" : [ ], + "notBefore" : 0, + "bearerOnly" : false, + "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", "role_list", "roles", "profile", "email" ], + "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] + }, { + "id" : "9c7116ed-8d56-4c3f-b71f-dc4c27568e0e", + "clientId" : "admin-cli", + "name" : "${client_admin-cli}", + "surrogateAuthRequired" : false, + "enabled" : true, + "clientAuthenticatorType" : "client-secret", + "secret" : "a70ab362-7b80-438d-8cc3-1f273bb8df28", + "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", "role_list", "roles", "profile", "email" ], + "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] + }, { + "id" : "de459ae7-949a-4818-acf4-32db1912ffbf", + "clientId" : "broker", + "name" : "${client_broker}", + "surrogateAuthRequired" : false, + "enabled" : true, + "clientAuthenticatorType" : "client-secret", + "secret" : "46db042f-7a2a-4547-98f8-a74f7ee3b4db", + "redirectUris" : [ ], + "webOrigins" : [ ], + "notBefore" : 0, + "bearerOnly" : false, + "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", "role_list", "roles", "profile", "email" ], + "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] + }, { + "id" : "39f99dcf-8301-4974-95a9-6d36c666d694", + "clientId" : "message", + "surrogateAuthRequired" : false, + "enabled" : true, + "clientAuthenticatorType" : "client-secret", + "secret" : "495c5eb8-d816-4fa2-8ba4-d3d96971808e", + "redirectUris" : [ "http://two:8080/login/oauth2/code/two", "http://two:8080" ], + "webOrigins" : [ "http://two:8080" ], + "notBefore" : 0, + "bearerOnly" : false, + "consentRequired" : false, + "standardFlowEnabled" : true, + "implicitFlowEnabled" : false, + "directAccessGrantsEnabled" : true, + "serviceAccountsEnabled" : true, + "publicClient" : false, + "frontchannelLogout" : false, + "protocol" : "openid-connect", + "attributes" : { + "saml.assertion.signature" : "false", + "saml.force.post.binding" : "false", + "saml.multivalued.roles" : "false", + "saml.encrypt" : "false", + "saml.server.signature" : "false", + "saml.server.signature.keyinfo.ext" : "false", + "exclude.session.state.from.auth.response" : "false", + "saml_force_name_id_format" : "false", + "saml.client.signature" : "false", + "tls.client.certificate.bound.access.tokens" : "false", + "saml.authnstatement" : "false", + "display.on.consent.screen" : "false", + "saml.onetimeuse.condition" : "false" }, - { - "id": "7fcd95f2-0846-4347-91ad-b4431ac170cd", - "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", - "requirement": "REQUIRED", - "priority": 10, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "reset-credential-email", - "requirement": "REQUIRED", - "priority": 20, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "reset-password", - "requirement": "REQUIRED", - "priority": 30, - "userSetupAllowed": false, - "autheticatorFlow": false - }, - { - "authenticator": "reset-otp", - "requirement": "OPTIONAL", - "priority": 40, - "userSetupAllowed": false, - "autheticatorFlow": false - } - ] + "authenticationFlowBindingOverrides" : { }, + "fullScopeAllowed" : true, + "nodeReRegistrationTimeout" : -1, + "protocolMappers" : [ { + "id" : "3fe2e7d2-8373-47cd-80f6-2ed5831862f8", + "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" : "85ea8c00-2c52-4530-bb21-4869affe549e", + "name" : "user", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "userinfo.token.claim" : "true", + "user.attribute" : "user_id", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "user_id", + "jsonType.label" : "String" + } + }, { + "id" : "50cd286e-df05-48a7-8ec7-0b28b0314841", + "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" : "7980462c-34d3-433d-8df9-ace8cd8d01df", + "name" : "tenant", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-usermodel-attribute-mapper", + "consentRequired" : false, + "config" : { + "userinfo.token.claim" : "true", + "user.attribute" : "tenant_id", + "id.token.claim" : "true", + "access.token.claim" : "true", + "claim.name" : "tenant_id", + "jsonType.label" : "String" + } + }, { + "id" : "0b15df69-3254-4db4-ae30-f7f5da2f9f89", + "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", "role_list", "roles", "profile", "email" ], + "optionalClientScopes" : [ "address", "message:read", "phone", "offline_access", "microprofile-jwt", "message:write" ] + }, { + "id" : "efb7f955-3325-4215-a207-38af172227be", + "clientId" : "realm-management", + "name" : "${client_realm-management}", + "surrogateAuthRequired" : false, + "enabled" : true, + "clientAuthenticatorType" : "client-secret", + "secret" : "ef100c3c-d9bd-479a-8e16-b1bb326c9373", + "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", "role_list", "roles", "profile", "email" ], + "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] + }, { + "id" : "87951d22-6946-4221-894a-2b8d044f962f", + "clientId" : "security-admin-console", + "name" : "${client_security-admin-console}", + "rootUrl" : "${authAdminUrl}", + "baseUrl" : "/admin/two/console/", + "surrogateAuthRequired" : false, + "enabled" : true, + "clientAuthenticatorType" : "client-secret", + "secret" : "bba489d4-cf9d-4800-b087-a4655ac1c443", + "redirectUris" : [ "/admin/two/console/*" ], + "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, + "protocolMappers" : [ { + "id" : "0e549ff7-72f7-4ab9-9d31-13a39194a382", + "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", "role_list", "roles", "profile", "email" ], + "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] + } ], + "clientScopes" : [ { + "id" : "8a656404-178e-4df4-aba5-82dfd17040b7", + "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}" }, - { - "id": "2325d1ae-b233-449a-be68-48a04d3522c5", - "alias": "saml ecp", - "description": "SAML ECP Profile Authentication Flow", - "providerId": "basic-flow", - "topLevel": true, - "builtIn": true, - "authenticationExecutions": [ - { - "authenticator": "http-basic-authenticator", - "requirement": "REQUIRED", - "priority": 10, - "userSetupAllowed": false, - "autheticatorFlow": false - } - ] - } - ], - "authenticatorConfig": [ - { - "id": "ad4189e2-3665-4b22-8ddb-23d78cdcf487", - "alias": "create unique user config", - "config": { - "require.password.update.after.registration": "false" + "protocolMappers" : [ { + "id" : "ccc8d7a6-9370-4bf8-a3b7-ef959dd44783", + "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" : "b5de3123-8621-431f-b93d-7c6cb8c95468", + "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}" }, - { - "id": "7d76c338-01a2-460c-9990-9e8007c2a1cb", - "alias": "review profile config", - "config": { - "update.profile.on.first.login": "missing" + "protocolMappers" : [ { + "id" : "f9ec8603-2dd3-4007-ad39-c222138a571b", + "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" : "2bf32bfe-c55b-490e-bc55-ecfe35d37b08", + "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" : "4fc720f3-8a3d-4dd0-8011-92629e9727ae", + "name" : "message:read", + "protocol" : "openid-connect", + "attributes" : { + "include.in.token.scope" : "true", + "display.on.consent.screen" : "true" } - ], - "requiredActions": [ - { - "alias": "CONFIGURE_TOTP", - "name": "Configure OTP", - "providerId": "CONFIGURE_TOTP", - "enabled": true, - "defaultAction": false, - "config": {} + }, { + "id" : "9496da62-00ec-4e06-8b5b-f1397f15acd1", + "name" : "message:write", + "protocol" : "openid-connect", + "attributes" : { + "include.in.token.scope" : "true", + "display.on.consent.screen" : "true" + } + }, { + "id" : "cacd7027-d0f1-4bc1-b7d8-ae1bb4b2dc4a", + "name" : "microprofile-jwt", + "description" : "Microprofile - JWT built-in scope", + "protocol" : "openid-connect", + "attributes" : { + "include.in.token.scope" : "true", + "display.on.consent.screen" : "false" }, - { - "alias": "UPDATE_PASSWORD", - "name": "Update Password", - "providerId": "UPDATE_PASSWORD", - "enabled": true, - "defaultAction": false, - "config": {} + "protocolMappers" : [ { + "id" : "6a4edaab-d07a-440a-afd2-df85f73a262f", + "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" : "22254b8f-c1fd-43bc-be7e-ebdc33f4cb1e", + "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" : "acb4102d-9dec-4107-9079-85115d632c71", + "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" : "9fd3c21e-fdfd-41bb-946f-d991ee9e9039", + "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}" }, - { - "alias": "UPDATE_PROFILE", - "name": "Update Profile", - "providerId": "UPDATE_PROFILE", - "enabled": true, - "defaultAction": false, - "config": {} + "protocolMappers" : [ { + "id" : "3c4f5a31-0e6a-4c6d-8445-d0fc2330e67b", + "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" + } + }, { + "id" : "b363ccd8-d56d-45da-ac01-6c0576665314", + "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" : "c9aac585-e02a-4d7c-b33c-8f42756f1bfd", + "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}" }, - { - "alias": "VERIFY_EMAIL", - "name": "Verify Email", - "providerId": "VERIFY_EMAIL", - "enabled": true, - "defaultAction": false, - "config": {} + "protocolMappers" : [ { + "id" : "e17e47a8-ac18-45ff-877e-e51c1aea6e01", + "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" : "130041bb-61a6-4bbe-ac84-b4e492b99db4", + "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" : "49923761-c0dd-4ccf-8b8e-5cc915af68a1", + "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" : "String" + } + }, { + "id" : "c7809e5d-c140-4f11-a395-10720b714af0", + "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" : "b8bcb8d7-5e43-4bbd-9b0c-8bd676de3691", + "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" : "e15438fc-1eed-47b1-a27b-9fc1d2d3b924", + "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" : "51122287-632b-4f59-af02-5faa3c3e95d4", + "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" : "40fd0f67-f514-411a-ab1a-e99e926ccfaf", + "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" : "b626a238-077c-44c1-8e18-a3cfaa103a5f", + "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" : "bac2287b-4e2b-44cf-9cf3-37c23d82c174", + "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" : "59e4cdac-22d4-40a0-8b31-220ae41ef3c2", + "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" : "65103ebd-0b09-49e9-9caf-0dd616a6d5bc", + "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" : "6f396744-d1b4-4a11-93ef-7a53cf125bab", + "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" : "63e0082e-c677-4950-97d1-1993407cd61f", + "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" : "d7c7560f-f21f-4c9e-8b36-0d3b06970893", + "name" : "role_list", + "description" : "SAML role list", + "protocol" : "saml", + "attributes" : { + "consent.screen.text" : "${samlRoleListScopeConsentText}", + "display.on.consent.screen" : "true" }, - { - "alias": "terms_and_conditions", - "name": "Terms and Conditions", - "providerId": "terms_and_conditions", - "enabled": false, - "defaultAction": false, - "config": {} - } - ], - "browserFlow": "browser", - "registrationFlow": "registration", - "directGrantFlow": "direct grant", - "resetCredentialsFlow": "reset credentials", - "clientAuthenticationFlow": "clients", - "dockerAuthenticationFlow": "docker auth", - "attributes": { - "_browser_header.xXSSProtection": "1; mode=block", - "_browser_header.xFrameOptions": "SAMEORIGIN", - "_browser_header.strictTransportSecurity": "max-age=31536000; includeSubDomains", - "permanentLockout": "false", - "quickLoginCheckMilliSeconds": "1000", - "displayName": "Two", - "_browser_header.xRobotsTag": "none", - "maxFailureWaitSeconds": "900", - "minimumQuickLoginWaitSeconds": "60", - "failureFactor": "30", - "actionTokenGeneratedByUserLifespan": "300", - "maxDeltaTimeSeconds": "43200", - "_browser_header.xContentTypeOptions": "nosniff", - "offlineSessionMaxLifespan": "5184000", - "actionTokenGeneratedByAdminLifespan": "43200", - "bruteForceProtected": "false", - "_browser_header.contentSecurityPolicy": "frame-src 'self'; frame-ancestors 'self'; object-src 'none';", - "waitIncrementSeconds": "60", - "offlineSessionMaxLifespanEnabled": "false" - }, - "keycloakVersion": "4.1.0.Final", - "userManagedAccessAllowed": false, - "users" : [ - { - "id" : "3df7633b-0375-4609-a256-93bab5d19762", - "createdTimestamp" : 1550866753471, - "username" : "ria", - "credentials" : [{ - "value" : "password", - "type" : "password" - }], - "realmRoles" : [ "offline_access", "uma_authorization" ], - "enabled" : true, - "totp" : false, - "emailVerified" : true, - "firstName" : "Ria", - "lastName" : "Stein", - "email" : "ria@example.com", - "attributes" : { - "user_id" : [ "3df7633b-0375-4609-a256-93bab5d19762" ], - "tenant_id" : [ "two" ] - }, - "disableableCredentialTypes" : [ "password" ], - "requiredActions" : [ ], - "notBefore" : 0, - "access" : { - "manageGroupMembership" : true, - "view" : true, - "mapRoles" : true, - "impersonate" : true, - "manage" : true + "protocolMappers" : [ { + "id" : "acb98a07-e5fa-439b-901a-a9a39a2a8956", + "name" : "role list", + "protocol" : "saml", + "protocolMapper" : "saml-role-list-mapper", + "consentRequired" : false, + "config" : { + "single" : "false", + "attribute.nameformat" : "Basic", + "attribute.name" : "Role" } + } ] + }, { + "id" : "1c7f1d42-09d1-4303-b8a3-f556fe83d3e3", + "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}" }, - { - "id" : "a2b2c791-e05a-4934-be9b-fb488f87700a", - "createdTimestamp" : 1550866246872, - "username" : "filip", - "credentials" : [{ - "value" : "password", - "type" : "password" - }], - "realmRoles" : [ "offline_access", "uma_authorization" ], - "enabled" : true, - "totp" : false, - "emailVerified" : true, - "firstName" : "Filip", - "lastName" : "Hanik", - "email" : "filip@example.com", - "attributes" : { - "user_id" : [ "a2b2c791-e05a-4934-be9b-fb488f87700a" ], - "tenant_id" : [ "two" ] - }, - "disableableCredentialTypes" : [ "password" ], - "requiredActions" : [ ], - "notBefore" : 0, - "access" : { - "manageGroupMembership" : true, - "view" : true, - "mapRoles" : true, - "impersonate" : true, - "manage" : true + "protocolMappers" : [ { + "id" : "7eda9491-90e7-45ca-99b4-ac0e2016052a", + "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" : "9cdc0cdb-f4a8-497c-8515-203518cf240d", + "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" : "32a7bd3a-a23e-4cb6-a705-5ba84ae04e78", + "name" : "audience resolve", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-audience-resolve-mapper", + "consentRequired" : false, + "config" : { } + } ] + }, { + "id" : "7df58433-091c-41d8-aa7d-caa966d4222e", + "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" : "" }, - { - "id" : "3b62fbf2-b0d5-49f4-9e39-0e18486fc8e0", - "createdTimestamp" : 1550866796632, - "username" : "josh", - "credentials" : [{ - "value" : "password", - "type" : "password" - }], - "realmRoles" : [ "offline_access", "uma_authorization", "admin" ], - "enabled" : true, - "totp" : false, - "emailVerified" : true, - "firstName" : "Josh", - "lastName" : "Cummings", - "email" : "josh@example.com", - "attributes" : { - "user_id" : [ "219168d2-1da4-4f8a-85d8-95b4377af3c1" ], - "tenant_id" : [ "two" ] - }, - "disableableCredentialTypes" : [ "password" ], - "requiredActions" : [ ], - "notBefore" : 0, - "access" : { - "manageGroupMembership" : true, - "view" : true, - "mapRoles" : true, - "impersonate" : true, - "manage" : true + "protocolMappers" : [ { + "id" : "7d4629ac-e788-4dbf-b913-812750b850bb", + "name" : "allowed web origins", + "protocol" : "openid-connect", + "protocolMapper" : "oidc-allowed-origins-mapper", + "consentRequired" : false, + "config" : { } + } ] + } ], + "defaultDefaultClientScopes" : [ "roles", "web-origins", "email", "profile", "role_list" ], + "defaultOptionalClientScopes" : [ "address", "phone", "offline_access", "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, + "components" : { + "org.keycloak.services.clientregistration.policy.ClientRegistrationPolicy" : [ { + "id" : "7d6cac9b-92d8-4f96-95f9-6aee6b411140", + "name" : "Consent Required", + "providerId" : "consent-required", + "subType" : "anonymous", + "subComponents" : { }, + "config" : { } + }, { + "id" : "c2500002-bc4d-4f8f-9ae3-57aca1a3e45a", + "name" : "Trusted Hosts", + "providerId" : "trusted-hosts", + "subType" : "anonymous", + "subComponents" : { }, + "config" : { + "host-sending-registration-request-must-match" : [ "true" ], + "client-uris-must-match" : [ "true" ] + } + }, { + "id" : "75a7e841-e2ae-49c0-80a2-25cf31fc1011", + "name" : "Allowed Client Scopes", + "providerId" : "allowed-client-templates", + "subType" : "anonymous", + "subComponents" : { }, + "config" : { + "allow-default-scopes" : [ "true" ] + } + }, { + "id" : "629e460e-34d1-4abe-81d9-6bc0a8a4d062", + "name" : "Max Clients Limit", + "providerId" : "max-clients", + "subType" : "anonymous", + "subComponents" : { }, + "config" : { + "max-clients" : [ "200" ] + } + }, { + "id" : "6a360a0f-ce0c-4be5-b616-053ab33f8c80", + "name" : "Allowed Protocol Mapper Types", + "providerId" : "allowed-protocol-mappers", + "subType" : "anonymous", + "subComponents" : { }, + "config" : { + "allowed-protocol-mapper-types" : [ "saml-user-attribute-mapper", "saml-user-property-mapper", "oidc-address-mapper", "saml-role-list-mapper", "oidc-full-name-mapper", "oidc-sha256-pairwise-sub-mapper", "oidc-usermodel-property-mapper", "oidc-usermodel-attribute-mapper" ] } + }, { + "id" : "146c5d35-e11f-46ae-b5f7-98f3cce98cc2", + "name" : "Full Scope Disabled", + "providerId" : "scope", + "subType" : "anonymous", + "subComponents" : { }, + "config" : { } + }, { + "id" : "373f609f-f0e8-44ab-94a7-556609af068e", + "name" : "Allowed Client Scopes", + "providerId" : "allowed-client-templates", + "subType" : "authenticated", + "subComponents" : { }, + "config" : { + "allow-default-scopes" : [ "true" ] + } + }, { + "id" : "34179a9d-0535-4614-a5ce-9331db85b9f6", + "name" : "Allowed Protocol Mapper Types", + "providerId" : "allowed-protocol-mappers", + "subType" : "authenticated", + "subComponents" : { }, + "config" : { + "allowed-protocol-mapper-types" : [ "saml-role-list-mapper", "oidc-usermodel-property-mapper", "oidc-sha256-pairwise-sub-mapper", "saml-user-property-mapper", "saml-user-attribute-mapper", "oidc-usermodel-attribute-mapper", "oidc-full-name-mapper", "oidc-address-mapper" ] + } + } ], + "org.keycloak.keys.KeyProvider" : [ { + "id" : "6c736f9f-a216-49e5-b5f8-4610f84861c2", + "name" : "hmac-generated", + "providerId" : "hmac-generated", + "subComponents" : { }, + "config" : { + "kid" : [ "0b833b18-0094-46f6-a85f-432f3bf97385" ], + "secret" : [ "FOQL0SuUhqp1X87-ZdY1C5kJywZfCwTqETQiQZhwrSFhjTXqY-KAdM7IamssHXF5N7a2UOx7gxpMe0H_A6C_Kw" ], + "priority" : [ "100" ], + "algorithm" : [ "HS256" ] + } + }, { + "id" : "13abe62b-7936-40dc-8baf-5f5060e6f08f", + "name" : "aes-generated", + "providerId" : "aes-generated", + "subComponents" : { }, + "config" : { + "kid" : [ "acae1448-36e8-47a1-84a7-546885412b37" ], + "secret" : [ "DfhKZ4Wno5cexqsXqPwlZw" ], + "priority" : [ "100" ] + } + }, { + "id" : "4d3cbda8-9797-4e3c-b54f-fba2d71f5a34", + "name" : "rsa-generated", + "providerId" : "rsa-generated", + "subComponents" : { }, + "config" : { + "privateKey" : [ "MIIEogIBAAKCAQEApmGnaZ6h8E3R25Y+5AzzKrxJ9uJXXp3vuOMZiTBhvL8JrhCir6OkDDorrAXIDF3BVzaV4fDB18oBVNiFmql8mi6kwI3VOJE3caPL+g4yGds0L5kZ2ab878EI4lY1uq4aKciLVxxHyJGZqkJChTOO/0IsFjgXi3jzDdkhSxMSQDVWmYuZeShoH0vyJcAEs6pSR8bqLarLtcWs2eIkuzgc/3J6dIjy5PVzJQ4Prq7RCncLtDpf5XNbRSWr9EoJ3zoFCEv71pMxiHBgPvB8xNU85nJuP73D5sx6eP1Ou+mtxycgNi5ptpmpw8jRjOykf3KlmlhyhfbP08VMWbhWS0SWoQIDAQABAoIBAEtY6AbV1wJLS6FE3kBKeQi+ckSC5gwsO/afqd3N8kUWwpx4XiRqWA1Nfp+NkrW+86K6TpAehrphec7hq0eKP6pXOzcURB407UXiZqpcKWY6NdzkWaeOjvdIlOxjHDvpQmHvtuKBJST4gv1uuk82NSj1359EUa1Q3clErmYgQeCfSELyIw5Z06QBE6mXtDox+C1RJQdsLnMAiBRIXpNJ5XtcuJQfFPVGou1/XjhnDE5Dk2hyiNozAxs5dbitCDikpLn+8wd/pGTl0v2q4caUVf3oZ3cNmbAyFVL4Nl7J7XRVCQ6KPyOhSDNJR4SL9E1pCa/I2CtQjzbsTtJCsjuCaAECgYEA/PyBpuHxHeOggByXivUXFmq4FtHB1d683Jg2d5HorIXa3OwuN7nSTMUf+9DfKcXIJJFK3QCPGJSvdBXjV4IP/6syTxnlAqW2sqC/o3xFvIJi09CJkxYdZDLzU0PA2KOFErXV0Wi7tLBK1CKBd/vNtKS8d0fgIxFhgxe83BcU4mECgYEAqF0KuVIpA770RkWuVGELtqEtEGgEwNEQzwq66RYoR+6qiCjhWcGWyIbYpTXTIc0f2YQy24z0XKaAwCcKKXGJ/sA8x+Uwblkt3cmurPPN3lbO/nzbkIkX26dDLz2Jg9/6Xf/Wv1yw2vqNI2Dq8lTLq2L6SSpCtnWBS/CRttuEnEECgYBhgkHGvNdemdnHBz4xxP29Gi0SPo7jjBJnRBPaSlbQCFevRykZOXohNOl6+arKQv09evLL8+czpjtqFvWlSPA5rxaY/nYSayTb/LFgpgmK+wZ0dbBRDPkPIcQ/l6HA3mXwLD3ZlPCkWD6/PP2B7X//3G732rA9U/mtuXyFqC/YgQKBgA/GB8ctB2KudTxQMvD81pgZqZsr46Yc8DI1kyVbShLTLW7sRZCfLn1DBPEVhd5Y1W8Pj6Q6JHq5rr5R6gXP+VnAsPEZa9wqxr1Ms+zIOrVl9KarE/cKoQ2XMhgu779HMLG10mzDRl59stNptRlXEG3SLBjGuNFXWPHAbCZxko8BAoGARUebCUwxZ4Kt9u3paI09J8k2bIANgJmrZMCw/Ad2wOmKw9VqFynQdIbnvfpRQ7xDzY6QZO60k+DdWzncB6NvEd4h995G8onBa/KRHH23YTO4twSBGeExRoyCVxJmMsv0Ax0IRseVd3tcg80FZlB9kabhyhKf1/tIvEfL5ZWeJn8=" ], + "certificate" : [ "MIIClTCCAX0CBgFvqVKrmzANBgkqhkiG9w0BAQsFADAOMQwwCgYDVQQDDAN0d28wHhcNMjAwMTE1MTMwNzQ1WhcNMzAwMTE1MTMwOTI1WjAOMQwwCgYDVQQDDAN0d28wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCmYadpnqHwTdHblj7kDPMqvEn24ldene+44xmJMGG8vwmuEKKvo6QMOiusBcgMXcFXNpXh8MHXygFU2IWaqXyaLqTAjdU4kTdxo8v6DjIZ2zQvmRnZpvzvwQjiVjW6rhopyItXHEfIkZmqQkKFM47/QiwWOBeLePMN2SFLExJANVaZi5l5KGgfS/IlwASzqlJHxuotqsu1xazZ4iS7OBz/cnp0iPLk9XMlDg+urtEKdwu0Ol/lc1tFJav0SgnfOgUIS/vWkzGIcGA+8HzE1Tzmcm4/vcPmzHp4/U676a3HJyA2Lmm2manDyNGM7KR/cqWaWHKF9s/TxUxZuFZLRJahAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAEee3DGYp1yqYp8VdewrQl+wyvy1kBjGu5UiuHCOO/KcoRN22I0Wn3QAVu7FyF0jy2QaG0ypxUBL3jfjJzQZmPeBj7eX7jrwKCRd1p9qBPY0BqqZS2aTnZPKHHzmwUlIOQzKT86vsEhn0l5hSqmQjW9edc9r7X+a3K23sLBsUWr5+vOIMu1jl5ez49+crqbv8MSgAVd3ImlkikXSCn4wlT2eacwA5lpvm9WWuKXTVzoLi3EK9WIC1Ef19DLFpmNfcsWFaQQ4vtW+drbqUgRX7VAK9vZYIIwXWlwjT1ZUx3CeiCu5LtoE50HW5VCHDl3y77h3g+5MjrqUOD8AiuvxxyQ=" ], + "priority" : [ "100" ] + } + } ] + }, + "internationalizationEnabled" : false, + "supportedLocales" : [ ], + "authenticationFlows" : [ { + "id" : "776d7f18-3980-4995-bb44-2bbaf8d3ff72", + "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", + "requirement" : "ALTERNATIVE", + "priority" : 10, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "requirement" : "ALTERNATIVE", + "priority" : 20, + "flowAlias" : "Verify Existing Account by Re-authentication", + "userSetupAllowed" : false, + "autheticatorFlow" : true + } ] + }, { + "id" : "2419cfd5-4d62-44b3-bdaa-4808b4eaff4a", + "alias" : "Authentication Options", + "description" : "Authentication options.", + "providerId" : "basic-flow", + "topLevel" : false, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "basic-auth", + "requirement" : "REQUIRED", + "priority" : 10, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "authenticator" : "basic-auth-otp", + "requirement" : "DISABLED", + "priority" : 20, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "authenticator" : "auth-spnego", + "requirement" : "DISABLED", + "priority" : 30, + "userSetupAllowed" : false, + "autheticatorFlow" : false + } ] + }, { + "id" : "58f2157b-2320-4411-9e62-3fa60d912676", + "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", + "requirement" : "REQUIRED", + "priority" : 10, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "authenticator" : "auth-otp-form", + "requirement" : "REQUIRED", + "priority" : 20, + "userSetupAllowed" : false, + "autheticatorFlow" : false + } ] + }, { + "id" : "f723e9e1-0058-4820-a99d-34b721550111", + "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", + "requirement" : "REQUIRED", + "priority" : 10, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "authenticator" : "direct-grant-validate-otp", + "requirement" : "REQUIRED", + "priority" : 20, + "userSetupAllowed" : false, + "autheticatorFlow" : false + } ] + }, { + "id" : "d9930a48-5cc7-4fef-bd21-6effad831c0e", + "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", + "requirement" : "REQUIRED", + "priority" : 10, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "authenticator" : "auth-otp-form", + "requirement" : "REQUIRED", + "priority" : 20, + "userSetupAllowed" : false, + "autheticatorFlow" : false + } ] + }, { + "id" : "e506b0b4-33a0-44c1-9a93-34f94c1397ef", + "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", + "requirement" : "REQUIRED", + "priority" : 10, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "requirement" : "REQUIRED", + "priority" : 20, + "flowAlias" : "Account verification options", + "userSetupAllowed" : false, + "autheticatorFlow" : true + } ] + }, { + "id" : "f6dad632-c6ce-4aa0-9948-2788eb625b03", + "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", + "requirement" : "REQUIRED", + "priority" : 10, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "authenticator" : "reset-otp", + "requirement" : "REQUIRED", + "priority" : 20, + "userSetupAllowed" : false, + "autheticatorFlow" : false + } ] + }, { + "id" : "6a9f51a8-9914-4aba-a02f-1472aa5dbc0c", + "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", + "requirement" : "ALTERNATIVE", + "priority" : 10, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "requirement" : "ALTERNATIVE", + "priority" : 20, + "flowAlias" : "Handle Existing Account", + "userSetupAllowed" : false, + "autheticatorFlow" : true + } ] + }, { + "id" : "c16012f1-8393-42ef-a824-08d9fed16734", + "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", + "requirement" : "REQUIRED", + "priority" : 10, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "requirement" : "CONDITIONAL", + "priority" : 20, + "flowAlias" : "First broker login - Conditional OTP", + "userSetupAllowed" : false, + "autheticatorFlow" : true + } ] + }, { + "id" : "dc3cd556-9edc-4416-8616-fb5028f83fd6", + "alias" : "browser", + "description" : "browser based authentication", + "providerId" : "basic-flow", + "topLevel" : true, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "auth-cookie", + "requirement" : "ALTERNATIVE", + "priority" : 10, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "authenticator" : "auth-spnego", + "requirement" : "DISABLED", + "priority" : 20, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "authenticator" : "identity-provider-redirector", + "requirement" : "ALTERNATIVE", + "priority" : 25, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "requirement" : "ALTERNATIVE", + "priority" : 30, + "flowAlias" : "forms", + "userSetupAllowed" : false, + "autheticatorFlow" : true + } ] + }, { + "id" : "21463bfe-9844-4a44-b910-2c5016782b96", + "alias" : "clients", + "description" : "Base authentication for clients", + "providerId" : "client-flow", + "topLevel" : true, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "client-secret", + "requirement" : "ALTERNATIVE", + "priority" : 10, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "authenticator" : "client-jwt", + "requirement" : "ALTERNATIVE", + "priority" : 20, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "authenticator" : "client-secret-jwt", + "requirement" : "ALTERNATIVE", + "priority" : 30, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "authenticator" : "client-x509", + "requirement" : "ALTERNATIVE", + "priority" : 40, + "userSetupAllowed" : false, + "autheticatorFlow" : false + } ] + }, { + "id" : "36070492-51d2-4699-aec6-5c396facbf4e", + "alias" : "direct grant", + "description" : "OpenID Connect Resource Owner Grant", + "providerId" : "basic-flow", + "topLevel" : true, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "direct-grant-validate-username", + "requirement" : "REQUIRED", + "priority" : 10, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "authenticator" : "direct-grant-validate-password", + "requirement" : "REQUIRED", + "priority" : 20, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "requirement" : "CONDITIONAL", + "priority" : 30, + "flowAlias" : "Direct Grant - Conditional OTP", + "userSetupAllowed" : false, + "autheticatorFlow" : true + } ] + }, { + "id" : "afe83fd5-fd23-437b-80df-33ce2d596a4e", + "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", + "requirement" : "REQUIRED", + "priority" : 10, + "userSetupAllowed" : false, + "autheticatorFlow" : false + } ] + }, { + "id" : "5ad5828e-ce70-491a-98c5-9a93ca2692ca", + "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", + "requirement" : "REQUIRED", + "priority" : 10, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "requirement" : "REQUIRED", + "priority" : 20, + "flowAlias" : "User creation or linking", + "userSetupAllowed" : false, + "autheticatorFlow" : true + } ] + }, { + "id" : "329233cc-d88a-42f6-99eb-bee75f0f63aa", + "alias" : "forms", + "description" : "Username, password, otp and other auth forms.", + "providerId" : "basic-flow", + "topLevel" : false, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "auth-username-password-form", + "requirement" : "REQUIRED", + "priority" : 10, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "requirement" : "CONDITIONAL", + "priority" : 20, + "flowAlias" : "Browser - Conditional OTP", + "userSetupAllowed" : false, + "autheticatorFlow" : true + } ] + }, { + "id" : "e3d31896-ea40-4994-8f9e-403aea4a66f6", + "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", + "requirement" : "REQUIRED", + "priority" : 10, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "requirement" : "REQUIRED", + "priority" : 20, + "flowAlias" : "Authentication Options", + "userSetupAllowed" : false, + "autheticatorFlow" : true + } ] + }, { + "id" : "93a4719d-9c71-4c03-81e6-5b4045f86c15", + "alias" : "registration", + "description" : "registration flow", + "providerId" : "basic-flow", + "topLevel" : true, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "registration-page-form", + "requirement" : "REQUIRED", + "priority" : 10, + "flowAlias" : "registration form", + "userSetupAllowed" : false, + "autheticatorFlow" : true + } ] + }, { + "id" : "39157e5c-f10b-465e-8b52-08a72c1e5b22", + "alias" : "registration form", + "description" : "registration form", + "providerId" : "form-flow", + "topLevel" : false, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "registration-user-creation", + "requirement" : "REQUIRED", + "priority" : 20, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "authenticator" : "registration-profile-action", + "requirement" : "REQUIRED", + "priority" : 40, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "authenticator" : "registration-password-action", + "requirement" : "REQUIRED", + "priority" : 50, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "authenticator" : "registration-recaptcha-action", + "requirement" : "DISABLED", + "priority" : 60, + "userSetupAllowed" : false, + "autheticatorFlow" : false + } ] + }, { + "id" : "ed5925f9-9613-495f-8497-f59707952914", + "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", + "requirement" : "REQUIRED", + "priority" : 10, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "authenticator" : "reset-credential-email", + "requirement" : "REQUIRED", + "priority" : 20, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "authenticator" : "reset-password", + "requirement" : "REQUIRED", + "priority" : 30, + "userSetupAllowed" : false, + "autheticatorFlow" : false + }, { + "requirement" : "CONDITIONAL", + "priority" : 40, + "flowAlias" : "Reset - Conditional OTP", + "userSetupAllowed" : false, + "autheticatorFlow" : true + } ] + }, { + "id" : "928a73ed-8580-43be-bd20-5d2a3629f2df", + "alias" : "saml ecp", + "description" : "SAML ECP Profile Authentication Flow", + "providerId" : "basic-flow", + "topLevel" : true, + "builtIn" : true, + "authenticationExecutions" : [ { + "authenticator" : "http-basic-authenticator", + "requirement" : "REQUIRED", + "priority" : 10, + "userSetupAllowed" : false, + "autheticatorFlow" : false + } ] + } ], + "authenticatorConfig" : [ { + "id" : "dd7fc341-9b71-4330-9b72-4fd9bbffb6c6", + "alias" : "create unique user config", + "config" : { + "require.password.update.after.registration" : "false" } - ] -} + }, { + "id" : "d9254758-ec99-4ed5-8fad-9299be4d41ab", + "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" : { } + } ], + "browserFlow" : "browser", + "registrationFlow" : "registration", + "directGrantFlow" : "direct grant", + "resetCredentialsFlow" : "reset credentials", + "clientAuthenticationFlow" : "clients", + "dockerAuthenticationFlow" : "docker auth", + "attributes" : { + "webAuthnPolicyAuthenticatorAttachment" : "not specified", + "_browser_header.xRobotsTag" : "none", + "webAuthnPolicyRpEntityName" : "keycloak", + "failureFactor" : "30", + "actionTokenGeneratedByUserLifespan" : "300", + "maxDeltaTimeSeconds" : "43200", + "webAuthnPolicySignatureAlgorithms" : "ES256", + "offlineSessionMaxLifespan" : "5184000", + "_browser_header.contentSecurityPolicyReportOnly" : "", + "bruteForceProtected" : "false", + "_browser_header.contentSecurityPolicy" : "frame-src 'self'; frame-ancestors 'self'; object-src 'none';", + "_browser_header.xXSSProtection" : "1; mode=block", + "_browser_header.xFrameOptions" : "SAMEORIGIN", + "_browser_header.strictTransportSecurity" : "max-age=31536000; includeSubDomains", + "webAuthnPolicyUserVerificationRequirement" : "not specified", + "permanentLockout" : "false", + "quickLoginCheckMilliSeconds" : "1000", + "webAuthnPolicyCreateTimeout" : "0", + "webAuthnPolicyRequireResidentKey" : "not specified", + "webAuthnPolicyRpId" : "", + "webAuthnPolicyAttestationConveyancePreference" : "not specified", + "maxFailureWaitSeconds" : "900", + "minimumQuickLoginWaitSeconds" : "60", + "webAuthnPolicyAvoidSameAuthenticatorRegister" : "false", + "_browser_header.xContentTypeOptions" : "nosniff", + "actionTokenGeneratedByAdminLifespan" : "43200", + "waitIncrementSeconds" : "60", + "offlineSessionMaxLifespanEnabled" : "false" + }, + "keycloakVersion" : "8.0.1", + "userManagedAccessAllowed" : false +} \ No newline at end of file diff --git a/inbox/src/main/java/io/jzheaux/springone2019/inbox/ApplicationProperties.java b/inbox/src/main/java/io/jzheaux/springone2019/inbox/ApplicationProperties.java new file mode 100644 index 0000000..6fc0934 --- /dev/null +++ b/inbox/src/main/java/io/jzheaux/springone2019/inbox/ApplicationProperties.java @@ -0,0 +1,32 @@ +package io.jzheaux.springone2019.inbox; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * ApplicationProperties + * + * @author Julius Krah + */ +@Component +@ConfigurationProperties("app") +public class ApplicationProperties { + private String defaultHost = "example.com"; + private String subdomainTemplate = "{tenant}.example.com"; + + public String getDefaultHost() { + return defaultHost; + } + + public void setDefaultHost(String defaultHost) { + this.defaultHost = defaultHost; + } + + public String getSubdomainTemplate() { + return subdomainTemplate; + } + + public void setSubdomainTemplate(String subdomainTemplate) { + this.subdomainTemplate = subdomainTemplate; + } +} \ No newline at end of file diff --git a/inbox/src/main/java/io/jzheaux/springone2019/inbox/InboxApplication.java b/inbox/src/main/java/io/jzheaux/springone2019/inbox/InboxApplication.java index 320ec46..f489486 100644 --- a/inbox/src/main/java/io/jzheaux/springone2019/inbox/InboxApplication.java +++ b/inbox/src/main/java/io/jzheaux/springone2019/inbox/InboxApplication.java @@ -81,6 +81,7 @@ WebClient rest(ReactiveClientRegistrationRepository clients, } @Order(-101) + @Bean WebFilter tenant(ReactiveClientRegistrationRepository clients) { return new TenantFilterChain(clients); } diff --git a/inbox/src/main/java/io/jzheaux/springone2019/inbox/IndexController.java b/inbox/src/main/java/io/jzheaux/springone2019/inbox/IndexController.java index 5e68ca4..4733697 100644 --- a/inbox/src/main/java/io/jzheaux/springone2019/inbox/IndexController.java +++ b/inbox/src/main/java/io/jzheaux/springone2019/inbox/IndexController.java @@ -1,10 +1,16 @@ package io.jzheaux.springone2019.inbox; import org.springframework.stereotype.Controller; +import org.springframework.util.MultiValueMap; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.server.ServerWebExchange; + +import reactor.core.publisher.Mono; /** * @author Rob Winch + * @author Julius Krah */ @Controller public class IndexController { @@ -12,4 +18,14 @@ public class IndexController { String index() { return "redirect:/messages/inbox"; } + + @PostMapping("/tenant") + Mono tenant (ServerWebExchange exchange) { + Mono> tenant = exchange.getFormData(); + return tenant.map(map -> { + System.out.println(map.get("tenant").get(0)); + return map; + }) + .thenReturn("redirect:/messages/inbox"); + } } diff --git a/inbox/src/main/java/io/jzheaux/springone2019/inbox/security/SecurityControllerAdvice.java b/inbox/src/main/java/io/jzheaux/springone2019/inbox/security/SecurityControllerAdvice.java index a26cf52..4e26312 100644 --- a/inbox/src/main/java/io/jzheaux/springone2019/inbox/security/SecurityControllerAdvice.java +++ b/inbox/src/main/java/io/jzheaux/springone2019/inbox/security/SecurityControllerAdvice.java @@ -1,5 +1,8 @@ package io.jzheaux.springone2019.inbox.security; +import java.net.URI; + +import org.springframework.http.server.reactive.ServerHttpRequest; import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ModelAttribute; @@ -9,6 +12,7 @@ /** * @author Rob Winch + * @author Julius Krah */ @ControllerAdvice public class SecurityControllerAdvice { @@ -17,4 +21,9 @@ public class SecurityControllerAdvice { Mono currentUser(@AuthenticationPrincipal Mono currentUser) { return currentUser; } + + @ModelAttribute("currentUrl") + URI currentUrl(ServerHttpRequest request) { + return request.getURI(); + } } diff --git a/inbox/src/main/java/io/jzheaux/springone2019/inbox/security/SignedJwtExchangeFilterFunction.java b/inbox/src/main/java/io/jzheaux/springone2019/inbox/security/SignedJwtExchangeFilterFunction.java index 128f79c..066e243 100644 --- a/inbox/src/main/java/io/jzheaux/springone2019/inbox/security/SignedJwtExchangeFilterFunction.java +++ b/inbox/src/main/java/io/jzheaux/springone2019/inbox/security/SignedJwtExchangeFilterFunction.java @@ -18,6 +18,7 @@ public SignedJwtExchangeFilterFunction(JwtService jwtService) { this.jwtService = jwtService; } + @SuppressWarnings("unchecked") @Override public Mono filter(ClientRequest request, ExchangeFunction next) { BodyInserters.FormInserter body = diff --git a/inbox/src/main/java/io/jzheaux/springone2019/inbox/tenant/TenantClientRegistrationRepository.java b/inbox/src/main/java/io/jzheaux/springone2019/inbox/tenant/TenantClientRegistrationRepository.java index 7b6b98a..c9029cb 100644 --- a/inbox/src/main/java/io/jzheaux/springone2019/inbox/tenant/TenantClientRegistrationRepository.java +++ b/inbox/src/main/java/io/jzheaux/springone2019/inbox/tenant/TenantClientRegistrationRepository.java @@ -6,6 +6,7 @@ import reactor.core.publisher.Mono; +import org.springframework.boot.autoconfigure.security.oauth2.client.OAuth2ClientProperties; import org.springframework.kafka.annotation.KafkaListener; import org.springframework.security.oauth2.client.registration.ClientRegistration; import org.springframework.security.oauth2.client.registration.ClientRegistrations; @@ -17,8 +18,10 @@ public class TenantClientRegistrationRepository implements ReactiveClientRegistrationRepository { private final Map tenants = new HashMap<>(); private final Map> clients = new HashMap<>(); + private final OAuth2ClientProperties oauth2Properties; - public TenantClientRegistrationRepository() { + public TenantClientRegistrationRepository(OAuth2ClientProperties oauth2Properties) { + this.oauth2Properties = oauth2Properties; this.tenants.put("one", "http://idp:9999/auth/realms/one"); this.tenants.put("two", "http://idp:9999/auth/realms/two"); } @@ -29,23 +32,40 @@ public Mono findByRegistrationId(String registrationId) { } private Mono fromTenant(String registrationId) { - return Optional.ofNullable(this.tenants.get(registrationId)) - .map(uri -> Mono.defer(() -> clientRegistration(uri, registrationId)).cache()) + return Optional.ofNullable(oauth2Properties.getProvider().get(registrationId)) + .map(provider -> { + OAuth2ClientProperties.Registration registration = + oauth2Properties.getRegistration().get(registrationId); + return Mono.defer(() -> clientRegistration(provider, + registration, registrationId)).cache(); + }) .orElse(Mono.error(new IllegalArgumentException("unknown tenant"))); } - private Mono clientRegistration(String uri, String registrationId) { + private Mono clientRegistration(OAuth2ClientProperties.Provider provider, + OAuth2ClientProperties.Registration registration, String registrationId) { + return Mono.just(ClientRegistrations.fromIssuerLocation(provider.getIssuerUri()) + .registrationId(registrationId) + .clientId(registration.getClientId()) + .clientSecret(registration.getClientSecret()) + .clientAuthenticationMethod(ClientAuthenticationMethod.POST) + .userNameAttributeName(provider.getUserNameAttribute()) + .scope(registration.getScope()) + .build()); + } + + private Mono clientRegistration(String uri, String registrationId, String clientSecret) { return Mono.just(ClientRegistrations.fromIssuerLocation(uri) .registrationId(registrationId) .clientId("message") - .clientSecret("bfbd9f62-02ce-4638-a370-80d45514bd0a") - .clientAuthenticationMethod(new ClientAuthenticationMethod("jwt")) + .clientSecret(clientSecret) + .clientAuthenticationMethod(new ClientAuthenticationMethod("post")) .userNameAttributeName("email") .scope("openid", "message:read") .build()); } - @KafkaListener(topics="tenants") + @KafkaListener(topics = "tenants") public void action(Map> action) { if (action.containsKey("created")) { Map tenant = action.get("created"); @@ -55,4 +75,15 @@ public void action(Map> action) { this.clients.remove(alias); } } + + @KafkaListener(topics = "clients") + public void clients(Map> payload) { + if (payload.containsKey("created")) { + Map client = payload.get("created"); + String issuerUri = (String) client.get("issuerUri"); + String registrationId = (String) client.get("tenantAlias"); + String clientSecret = (String) client.get("clientSecret"); + this.clients.put(registrationId, clientRegistration(issuerUri, registrationId, clientSecret)); + } + } } diff --git a/inbox/src/main/java/io/jzheaux/springone2019/inbox/user/WebClientUserService.java b/inbox/src/main/java/io/jzheaux/springone2019/inbox/user/WebClientUserService.java index 51f17cf..122c805 100644 --- a/inbox/src/main/java/io/jzheaux/springone2019/inbox/user/WebClientUserService.java +++ b/inbox/src/main/java/io/jzheaux/springone2019/inbox/user/WebClientUserService.java @@ -25,7 +25,7 @@ public WebClientUserService(WebClient rest, public Mono save(User user) { return this.rest.post() .uri(this.usersUrl) - .syncBody(user) + .bodyValue(user) .retrieve() .bodyToMono(User.class); } diff --git a/inbox/src/main/resources/application.yml b/inbox/src/main/resources/application.yml index b92bfba..d8d5f16 100644 --- a/inbox/src/main/resources/application.yml +++ b/inbox/src/main/resources/application.yml @@ -20,11 +20,13 @@ spring: registration: one: client-id: message - client-secret: bfbd9f62-02ce-4638-a370-80d45514bd0a + client-secret: 41090dc6-ed60-445c-9a3e-bd1b58bb1c5b scope: openid,message:read two: client-id: message - client-secret: bfbd9f62-02ce-4638-a370-80d45514bd0a + client-secret: 495c5eb8-d816-4fa2-8ba4-d3d96971808e scope: openid,message:read +app: + default-host: one kafka.bootstrap-servers: localhost:9092 diff --git a/inbox/src/main/resources/templates/layout.html b/inbox/src/main/resources/templates/layout.html index 8648b9a..62f4dfe 100644 --- a/inbox/src/main/resources/templates/layout.html +++ b/inbox/src/main/resources/templates/layout.html @@ -41,7 +41,7 @@