From cc19c9ec19a094afc169005ca432023ac8972343 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20LAGACHE?= Date: Fri, 27 Feb 2026 11:34:09 +0100 Subject: [PATCH] fix --- Makefile | 20 + seeds/keycloak/master-realm.json | 2629 ++++++++++++++++++++++++++++++ seeds/keycloak/portabase.json | 2216 ------------------------- seeds/pocket-id/portabase.zip | Bin 278658 -> 269274 bytes 4 files changed, 2649 insertions(+), 2216 deletions(-) create mode 100644 seeds/keycloak/master-realm.json delete mode 100644 seeds/keycloak/portabase.json mode change 100755 => 100644 seeds/pocket-id/portabase.zip diff --git a/Makefile b/Makefile index 36862c7f..f3f252ce 100644 --- a/Makefile +++ b/Makefile @@ -26,3 +26,23 @@ seed-auth: seed-keycloak seed-pocket pocket-token: @docker compose -f docker-compose.func.yml exec pocket-id ./pocket-id one-time-access-token admin + +export-pocket: + @echo "Exporting Pocket ID data to seeds/pocket-id/portabase.zip..." + @mkdir -p ./seeds/pocket-id + @docker compose -f docker-compose.func.yml exec pocket-id ./pocket-id export --path /tmp/portabase-export.zip + @docker compose -f docker-compose.func.yml cp pocket-id:/tmp/portabase-export.zip ./seeds/pocket-id/portabase.zip + @docker compose -f docker-compose.func.yml exec pocket-id rm /tmp/portabase-export.zip + @echo "Pocket ID data exported to seeds/pocket-id/portabase.zip" + +export-keycloak: + @echo "Exporting Keycloak configuration and users to seeds/keycloak/*.json..." + @mkdir -p ./seeds/keycloak + @rm -f ./seeds/keycloak/*.json + @docker compose -f docker-compose.func.yml stop keycloak >/dev/null 2>&1 + @docker rm -f kc-exporter >/dev/null 2>&1 || true + @docker compose -f docker-compose.func.yml run --name kc-exporter keycloak export --dir /tmp/kc-export --users realm_file + @docker cp kc-exporter:/tmp/kc-export/. ./seeds/keycloak/ + @docker rm -f kc-exporter >/dev/null 2>&1 + @docker compose -f docker-compose.func.yml start keycloak >/dev/null 2>&1 + @echo "Keycloak configuration and users exported to seeds/keycloak/*.json" diff --git a/seeds/keycloak/master-realm.json b/seeds/keycloak/master-realm.json new file mode 100644 index 00000000..a01a50f1 --- /dev/null +++ b/seeds/keycloak/master-realm.json @@ -0,0 +1,2629 @@ +{ + "id": "fb9cf3e7-ba35-48d2-b40e-8a48a98f8acd", + "realm": "master", + "displayName": "Portabase", + "displayNameHtml": "
Portabase
", + "notBefore": 0, + "defaultSignatureAlgorithm": "RS256", + "revokeRefreshToken": false, + "refreshTokenMaxReuse": 0, + "accessTokenLifespan": 60, + "accessTokenLifespanForImplicitFlow": 900, + "ssoSessionIdleTimeout": 1800, + "ssoSessionMaxLifespan": 36000, + "ssoSessionIdleTimeoutRememberMe": 0, + "ssoSessionMaxLifespanRememberMe": 0, + "offlineSessionIdleTimeout": 2592000, + "offlineSessionMaxLifespanEnabled": false, + "offlineSessionMaxLifespan": 5184000, + "clientSessionIdleTimeout": 0, + "clientSessionMaxLifespan": 0, + "clientOfflineSessionIdleTimeout": 0, + "clientOfflineSessionMaxLifespan": 0, + "accessCodeLifespan": 60, + "accessCodeLifespanUserAction": 300, + "accessCodeLifespanLogin": 1800, + "actionTokenGeneratedByAdminLifespan": 43200, + "actionTokenGeneratedByUserLifespan": 300, + "oauth2DeviceCodeLifespan": 600, + "oauth2DevicePollingInterval": 5, + "enabled": true, + "sslRequired": "none", + "registrationAllowed": false, + "registrationEmailAsUsername": false, + "rememberMe": false, + "verifyEmail": false, + "loginWithEmailAllowed": true, + "duplicateEmailsAllowed": false, + "resetPasswordAllowed": false, + "editUsernameAllowed": false, + "bruteForceProtected": false, + "permanentLockout": false, + "maxTemporaryLockouts": 0, + "bruteForceStrategy": "MULTIPLE", + "maxFailureWaitSeconds": 900, + "minimumQuickLoginWaitSeconds": 60, + "waitIncrementSeconds": 60, + "quickLoginCheckMilliSeconds": 1000, + "maxDeltaTimeSeconds": 43200, + "failureFactor": 30, + "roles": { + "realm": [ + { + "id": "e2068803-d2fb-4955-928d-35afa1b552cf", + "name": "admin", + "description": "${role_admin}", + "composite": true, + "composites": { + "realm": ["create-realm"], + "client": { + "master-realm": [ + "create-client", + "view-users", + "query-realms", + "view-authorization", + "view-identity-providers", + "query-users", + "query-groups", + "manage-users", + "manage-events", + "view-clients", + "view-realm", + "manage-authorization", + "manage-realm", + "view-events", + "impersonation", + "query-clients", + "manage-identity-providers", + "manage-clients" + ] + } + }, + "clientRole": false, + "containerId": "fb9cf3e7-ba35-48d2-b40e-8a48a98f8acd", + "attributes": {} + }, + { + "id": "1c6d4bb7-a9f0-4bf8-9780-d97e99de3c3d", + "name": "default-roles-master", + "description": "${role_default-roles}", + "composite": true, + "composites": { + "realm": ["offline_access", "uma_authorization"], + "client": { + "account": ["view-profile", "manage-account"] + } + }, + "clientRole": false, + "containerId": "fb9cf3e7-ba35-48d2-b40e-8a48a98f8acd", + "attributes": {} + }, + { + "id": "26712408-59c8-463f-bce1-d8f961b4bf51", + "name": "create-realm", + "description": "${role_create-realm}", + "composite": false, + "clientRole": false, + "containerId": "fb9cf3e7-ba35-48d2-b40e-8a48a98f8acd", + "attributes": {} + }, + { + "id": "546e3598-8de5-4e05-8823-5abe2efebf43", + "name": "offline_access", + "description": "${role_offline-access}", + "composite": false, + "clientRole": false, + "containerId": "fb9cf3e7-ba35-48d2-b40e-8a48a98f8acd", + "attributes": {} + }, + { + "id": "b8bf1864-b840-4377-9f6f-373a7f645dcc", + "name": "uma_authorization", + "description": "${role_uma_authorization}", + "composite": false, + "clientRole": false, + "containerId": "fb9cf3e7-ba35-48d2-b40e-8a48a98f8acd", + "attributes": {} + } + ], + "client": { + "portabase": [ + { + "id": "180dc40c-1c09-49a2-a86b-782f1a2182c4", + "name": "uma_protection", + "composite": false, + "clientRole": true, + "containerId": "7b8c7b35-8ffd-47b3-82b5-b152b521cd77", + "attributes": {} + } + ], + "security-admin-console": [], + "admin-cli": [], + "account-console": [], + "broker": [ + { + "id": "695d4423-e83d-403f-baf1-35076a456366", + "name": "read-token", + "description": "${role_read-token}", + "composite": false, + "clientRole": true, + "containerId": "af9b43bb-1902-4ed8-b4f6-caa7ec27efd5", + "attributes": {} + } + ], + "master-realm": [ + { + "id": "27fbd47b-0350-4f11-a83c-a0134f9079b1", + "name": "create-client", + "description": "${role_create-client}", + "composite": false, + "clientRole": true, + "containerId": "6022c206-5f1f-45b7-af07-74ce6804cbc7", + "attributes": {} + }, + { + "id": "672a49fe-69f9-4371-b945-8bb539a76fa7", + "name": "view-users", + "description": "${role_view-users}", + "composite": true, + "composites": { + "client": { + "master-realm": ["query-users", "query-groups"] + } + }, + "clientRole": true, + "containerId": "6022c206-5f1f-45b7-af07-74ce6804cbc7", + "attributes": {} + }, + { + "id": "3df2803b-1be3-4446-ad55-de4a1654f0f1", + "name": "query-realms", + "description": "${role_query-realms}", + "composite": false, + "clientRole": true, + "containerId": "6022c206-5f1f-45b7-af07-74ce6804cbc7", + "attributes": {} + }, + { + "id": "963cdf89-9884-493f-b553-d095a190db70", + "name": "view-authorization", + "description": "${role_view-authorization}", + "composite": false, + "clientRole": true, + "containerId": "6022c206-5f1f-45b7-af07-74ce6804cbc7", + "attributes": {} + }, + { + "id": "0c7db742-fb5a-41ca-816a-ade107446ee8", + "name": "view-identity-providers", + "description": "${role_view-identity-providers}", + "composite": false, + "clientRole": true, + "containerId": "6022c206-5f1f-45b7-af07-74ce6804cbc7", + "attributes": {} + }, + { + "id": "9741b23a-9efa-4fbc-bfae-683f84997e8b", + "name": "query-users", + "description": "${role_query-users}", + "composite": false, + "clientRole": true, + "containerId": "6022c206-5f1f-45b7-af07-74ce6804cbc7", + "attributes": {} + }, + { + "id": "65439bfe-de32-499f-9f68-44ecd96ff49c", + "name": "query-groups", + "description": "${role_query-groups}", + "composite": false, + "clientRole": true, + "containerId": "6022c206-5f1f-45b7-af07-74ce6804cbc7", + "attributes": {} + }, + { + "id": "ecaab7fc-da4b-4613-8b7c-959ed4e225cc", + "name": "manage-events", + "description": "${role_manage-events}", + "composite": false, + "clientRole": true, + "containerId": "6022c206-5f1f-45b7-af07-74ce6804cbc7", + "attributes": {} + }, + { + "id": "e260a5cc-91c5-41db-86f8-01b494c4e66b", + "name": "manage-users", + "description": "${role_manage-users}", + "composite": false, + "clientRole": true, + "containerId": "6022c206-5f1f-45b7-af07-74ce6804cbc7", + "attributes": {} + }, + { + "id": "db6d0e0a-4193-4f6a-9343-d1f182fdda15", + "name": "view-clients", + "description": "${role_view-clients}", + "composite": true, + "composites": { + "client": { + "master-realm": ["query-clients"] + } + }, + "clientRole": true, + "containerId": "6022c206-5f1f-45b7-af07-74ce6804cbc7", + "attributes": {} + }, + { + "id": "f8bc7291-d450-48f6-820e-67a8ab2a6b5b", + "name": "view-realm", + "description": "${role_view-realm}", + "composite": false, + "clientRole": true, + "containerId": "6022c206-5f1f-45b7-af07-74ce6804cbc7", + "attributes": {} + }, + { + "id": "3444137f-0938-4340-9d5b-ceef2f7b1e97", + "name": "manage-authorization", + "description": "${role_manage-authorization}", + "composite": false, + "clientRole": true, + "containerId": "6022c206-5f1f-45b7-af07-74ce6804cbc7", + "attributes": {} + }, + { + "id": "a39bf436-1fa4-42d2-80ed-a010b43853aa", + "name": "manage-realm", + "description": "${role_manage-realm}", + "composite": false, + "clientRole": true, + "containerId": "6022c206-5f1f-45b7-af07-74ce6804cbc7", + "attributes": {} + }, + { + "id": "baa18f46-7d1d-4298-b3b0-9b0ecb945557", + "name": "view-events", + "description": "${role_view-events}", + "composite": false, + "clientRole": true, + "containerId": "6022c206-5f1f-45b7-af07-74ce6804cbc7", + "attributes": {} + }, + { + "id": "91298b5d-5182-4056-8240-8fdb188f865e", + "name": "impersonation", + "description": "${role_impersonation}", + "composite": false, + "clientRole": true, + "containerId": "6022c206-5f1f-45b7-af07-74ce6804cbc7", + "attributes": {} + }, + { + "id": "a5a58b82-32eb-4c78-993a-cf9c7e37eabb", + "name": "query-clients", + "description": "${role_query-clients}", + "composite": false, + "clientRole": true, + "containerId": "6022c206-5f1f-45b7-af07-74ce6804cbc7", + "attributes": {} + }, + { + "id": "c8c85c54-7bfb-4d45-8ccc-6253e429f649", + "name": "manage-clients", + "description": "${role_manage-clients}", + "composite": false, + "clientRole": true, + "containerId": "6022c206-5f1f-45b7-af07-74ce6804cbc7", + "attributes": {} + }, + { + "id": "baed486e-dc69-44a9-9630-9a88987142ee", + "name": "manage-identity-providers", + "description": "${role_manage-identity-providers}", + "composite": false, + "clientRole": true, + "containerId": "6022c206-5f1f-45b7-af07-74ce6804cbc7", + "attributes": {} + } + ], + "account": [ + { + "id": "8085c714-b840-4539-823d-a8df8bab3db3", + "name": "view-applications", + "description": "${role_view-applications}", + "composite": false, + "clientRole": true, + "containerId": "18b5dfb2-44d4-448e-98df-9652daef1a22", + "attributes": {} + }, + { + "id": "12089b7a-e685-4c87-bb81-997ecc04ed17", + "name": "view-profile", + "description": "${role_view-profile}", + "composite": false, + "clientRole": true, + "containerId": "18b5dfb2-44d4-448e-98df-9652daef1a22", + "attributes": {} + }, + { + "id": "ea9e72d8-1d23-4f50-86b3-1795067da29f", + "name": "view-groups", + "description": "${role_view-groups}", + "composite": false, + "clientRole": true, + "containerId": "18b5dfb2-44d4-448e-98df-9652daef1a22", + "attributes": {} + }, + { + "id": "2bd8114a-75cf-4d6b-8f42-229f6a5c66a0", + "name": "delete-account", + "description": "${role_delete-account}", + "composite": false, + "clientRole": true, + "containerId": "18b5dfb2-44d4-448e-98df-9652daef1a22", + "attributes": {} + }, + { + "id": "7303b334-e9e0-4236-89b8-e1c9d6562138", + "name": "view-consent", + "description": "${role_view-consent}", + "composite": false, + "clientRole": true, + "containerId": "18b5dfb2-44d4-448e-98df-9652daef1a22", + "attributes": {} + }, + { + "id": "12c6fe35-ec80-4ca2-b2a8-9d6eae4c3a92", + "name": "manage-account-links", + "description": "${role_manage-account-links}", + "composite": false, + "clientRole": true, + "containerId": "18b5dfb2-44d4-448e-98df-9652daef1a22", + "attributes": {} + }, + { + "id": "e56b828b-7d5d-49a2-b686-c1bd535900ac", + "name": "manage-consent", + "description": "${role_manage-consent}", + "composite": true, + "composites": { + "client": { + "account": ["view-consent"] + } + }, + "clientRole": true, + "containerId": "18b5dfb2-44d4-448e-98df-9652daef1a22", + "attributes": {} + }, + { + "id": "98e19002-4144-48fc-bcca-4ac6f19a6a37", + "name": "manage-account", + "description": "${role_manage-account}", + "composite": true, + "composites": { + "client": { + "account": ["manage-account-links"] + } + }, + "clientRole": true, + "containerId": "18b5dfb2-44d4-448e-98df-9652daef1a22", + "attributes": {} + } + ] + } + }, + "groups": [ + { + "id": "f523647e-76b3-493f-bb1e-f2a3f7deebdb", + "name": "Admin", + "description": "", + "path": "/Admin", + "subGroups": [], + "attributes": {}, + "realmRoles": ["admin"], + "clientRoles": {} + }, + { + "id": "f3b7286d-8169-41eb-b3a2-6241bf58907d", + "name": "Default", + "description": "", + "path": "/Default", + "subGroups": [], + "attributes": {}, + "realmRoles": [], + "clientRoles": {} + }, + { + "id": "eda8d5c9-d29a-4b35-9372-2b088b9a9d8d", + "name": "Pending", + "description": "", + "path": "/Pending", + "subGroups": [], + "attributes": {}, + "realmRoles": [], + "clientRoles": {} + } + ], + "defaultRole": { + "id": "1c6d4bb7-a9f0-4bf8-9780-d97e99de3c3d", + "name": "default-roles-master", + "description": "${role_default-roles}", + "composite": true, + "clientRole": false, + "containerId": "fb9cf3e7-ba35-48d2-b40e-8a48a98f8acd" + }, + "requiredCredentials": ["password"], + "otpPolicyType": "totp", + "otpPolicyAlgorithm": "HmacSHA1", + "otpPolicyInitialCounter": 0, + "otpPolicyDigits": 6, + "otpPolicyLookAheadWindow": 1, + "otpPolicyPeriod": 30, + "otpPolicyCodeReusable": false, + "otpSupportedApplications": [ + "totpAppFreeOTPName", + "totpAppGoogleName", + "totpAppMicrosoftAuthenticatorName" + ], + "localizationTexts": {}, + "webAuthnPolicyRpEntityName": "keycloak", + "webAuthnPolicySignatureAlgorithms": ["ES256", "RS256"], + "webAuthnPolicyRpId": "", + "webAuthnPolicyAttestationConveyancePreference": "not specified", + "webAuthnPolicyAuthenticatorAttachment": "not specified", + "webAuthnPolicyRequireResidentKey": "not specified", + "webAuthnPolicyUserVerificationRequirement": "not specified", + "webAuthnPolicyCreateTimeout": 0, + "webAuthnPolicyAvoidSameAuthenticatorRegister": false, + "webAuthnPolicyAcceptableAaguids": [], + "webAuthnPolicyExtraOrigins": [], + "webAuthnPolicyPasswordlessRpEntityName": "keycloak", + "webAuthnPolicyPasswordlessSignatureAlgorithms": ["ES256", "RS256"], + "webAuthnPolicyPasswordlessRpId": "", + "webAuthnPolicyPasswordlessAttestationConveyancePreference": "not specified", + "webAuthnPolicyPasswordlessAuthenticatorAttachment": "not specified", + "webAuthnPolicyPasswordlessRequireResidentKey": "Yes", + "webAuthnPolicyPasswordlessUserVerificationRequirement": "required", + "webAuthnPolicyPasswordlessCreateTimeout": 0, + "webAuthnPolicyPasswordlessAvoidSameAuthenticatorRegister": false, + "webAuthnPolicyPasswordlessAcceptableAaguids": [], + "webAuthnPolicyPasswordlessExtraOrigins": [], + "users": [ + { + "id": "9bd127a6-a29f-4a3d-a530-9b7284cf9770", + "username": "admin", + "emailVerified": false, + "attributes": { + "is_temporary_admin": ["true"] + }, + "enabled": true, + "createdTimestamp": 1772178626982, + "totp": false, + "credentials": [ + { + "id": "731ce7c2-9141-4ff1-8856-3e8625cf1929", + "type": "password", + "createdDate": 1772178627073, + "secretData": "{\"value\":\"quuOeVW9VVoilChYLmvjJWCnAM23OA/gK54tYoJ6atw=\",\"salt\":\"khqIggSOfCNLqP1i9qiwvQ==\",\"additionalParameters\":{}}", + "credentialData": "{\"hashIterations\":5,\"algorithm\":\"argon2\",\"additionalParameters\":{\"hashLength\":[\"32\"],\"memory\":[\"7168\"],\"type\":[\"id\"],\"version\":[\"1.3\"],\"parallelism\":[\"1\"]}}" + } + ], + "disableableCredentialTypes": [], + "requiredActions": [], + "realmRoles": ["admin", "default-roles-master"], + "notBefore": 0, + "groups": [] + }, + { + "id": "c62607eb-fe31-4ea4-b8cb-56c37039c1b3", + "username": "development", + "firstName": "Tech", + "lastName": "Soluce", + "email": "development@soluce-technologies.com", + "emailVerified": true, + "enabled": true, + "createdTimestamp": 1772179382148, + "totp": false, + "credentials": [ + { + "id": "b1cedcac-5207-4479-bc29-065ba849e414", + "type": "password", + "userLabel": "My password", + "createdDate": 1772179391727, + "secretData": "{\"value\":\"IXr6L3pvO2BAkn/cH3rh3v2tg1R83u2f8SWEZK2fq5E=\",\"salt\":\"XWV8/yKm7Rw/YXiwXZZUig==\",\"additionalParameters\":{}}", + "credentialData": "{\"hashIterations\":5,\"algorithm\":\"argon2\",\"additionalParameters\":{\"hashLength\":[\"32\"],\"memory\":[\"7168\"],\"type\":[\"id\"],\"version\":[\"1.3\"],\"parallelism\":[\"1\"]}}" + } + ], + "disableableCredentialTypes": [], + "requiredActions": [], + "realmRoles": ["admin", "default-roles-master"], + "notBefore": 0, + "groups": ["/Admin"] + }, + { + "id": "718dfe46-dbef-41a3-9120-78aeac240431", + "username": "service-account-portabase", + "emailVerified": false, + "enabled": true, + "createdTimestamp": 1772177793553, + "totp": false, + "serviceAccountClientId": "portabase", + "credentials": [], + "disableableCredentialTypes": [], + "requiredActions": [], + "realmRoles": ["default-roles-master"], + "clientRoles": { + "portabase": ["uma_protection"] + }, + "notBefore": 0, + "groups": [] + } + ], + "scopeMappings": [ + { + "clientScope": "offline_access", + "roles": ["offline_access"] + } + ], + "clientScopeMappings": { + "account": [ + { + "client": "account-console", + "roles": ["manage-account", "view-groups"] + } + ] + }, + "clients": [ + { + "id": "18b5dfb2-44d4-448e-98df-9652daef1a22", + "clientId": "account", + "name": "${client_account}", + "rootUrl": "${authBaseUrl}", + "baseUrl": "/realms/master/account/", + "surrogateAuthRequired": false, + "enabled": true, + "alwaysDisplayInConsole": false, + "clientAuthenticatorType": "client-secret", + "redirectUris": ["/realms/master/account/*"], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": false, + "serviceAccountsEnabled": false, + "publicClient": true, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": { + "realm_client": "false", + "post.logout.redirect.uris": "+" + }, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "defaultClientScopes": [ + "web-origins", + "acr", + "profile", + "roles", + "basic", + "email" + ], + "optionalClientScopes": [ + "address", + "phone", + "organization", + "offline_access", + "microprofile-jwt" + ] + }, + { + "id": "b07531b2-43f4-4487-8068-46001dd1abf7", + "clientId": "account-console", + "name": "${client_account-console}", + "rootUrl": "${authBaseUrl}", + "baseUrl": "/realms/master/account/", + "surrogateAuthRequired": false, + "enabled": true, + "alwaysDisplayInConsole": false, + "clientAuthenticatorType": "client-secret", + "redirectUris": ["/realms/master/account/*"], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": false, + "serviceAccountsEnabled": false, + "publicClient": true, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": { + "realm_client": "false", + "post.logout.redirect.uris": "+", + "pkce.code.challenge.method": "S256" + }, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "protocolMappers": [ + { + "id": "ad646174-e521-4bd5-8f78-eb8eed2befb8", + "name": "audience resolve", + "protocol": "openid-connect", + "protocolMapper": "oidc-audience-resolve-mapper", + "consentRequired": false, + "config": {} + } + ], + "defaultClientScopes": [ + "web-origins", + "acr", + "profile", + "roles", + "basic", + "email" + ], + "optionalClientScopes": [ + "address", + "phone", + "organization", + "offline_access", + "microprofile-jwt" + ] + }, + { + "id": "8ad89892-6f85-4f07-b6b6-1fcb1eda58e2", + "clientId": "admin-cli", + "name": "${client_admin-cli}", + "surrogateAuthRequired": false, + "enabled": true, + "alwaysDisplayInConsole": false, + "clientAuthenticatorType": "client-secret", + "redirectUris": [], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": false, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": true, + "serviceAccountsEnabled": false, + "publicClient": true, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": { + "realm_client": "false", + "client.use.lightweight.access.token.enabled": "true", + "post.logout.redirect.uris": "+" + }, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": true, + "nodeReRegistrationTimeout": 0, + "defaultClientScopes": [ + "web-origins", + "acr", + "profile", + "roles", + "basic", + "email" + ], + "optionalClientScopes": [ + "address", + "phone", + "organization", + "offline_access", + "microprofile-jwt" + ] + }, + { + "id": "af9b43bb-1902-4ed8-b4f6-caa7ec27efd5", + "clientId": "broker", + "name": "${client_broker}", + "surrogateAuthRequired": false, + "enabled": true, + "alwaysDisplayInConsole": false, + "clientAuthenticatorType": "client-secret", + "redirectUris": [], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": true, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": false, + "serviceAccountsEnabled": false, + "publicClient": false, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": { + "realm_client": "true", + "post.logout.redirect.uris": "+" + }, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "defaultClientScopes": [ + "web-origins", + "acr", + "profile", + "roles", + "basic", + "email" + ], + "optionalClientScopes": [ + "address", + "phone", + "organization", + "offline_access", + "microprofile-jwt" + ] + }, + { + "id": "6022c206-5f1f-45b7-af07-74ce6804cbc7", + "clientId": "master-realm", + "name": "master Realm", + "surrogateAuthRequired": false, + "enabled": true, + "alwaysDisplayInConsole": false, + "clientAuthenticatorType": "client-secret", + "redirectUris": [], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": true, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": false, + "serviceAccountsEnabled": false, + "publicClient": false, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": { + "realm_client": "true", + "post.logout.redirect.uris": "+" + }, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "defaultClientScopes": [ + "web-origins", + "acr", + "profile", + "roles", + "basic", + "email" + ], + "optionalClientScopes": [ + "address", + "phone", + "organization", + "offline_access", + "microprofile-jwt" + ] + }, + { + "id": "7b8c7b35-8ffd-47b3-82b5-b152b521cd77", + "clientId": "portabase", + "name": "Portabase", + "description": "", + "rootUrl": "http://localhost:8887", + "adminUrl": "http://localhost:8887", + "baseUrl": "http://localhost:8887", + "surrogateAuthRequired": false, + "enabled": true, + "alwaysDisplayInConsole": false, + "clientAuthenticatorType": "client-secret", + "secret": "**********", + "redirectUris": ["http://localhost:8887/api/auth/sso/callback/keycloak"], + "webOrigins": ["http://localhost:8887"], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": false, + "serviceAccountsEnabled": true, + "authorizationServicesEnabled": true, + "publicClient": false, + "frontchannelLogout": true, + "protocol": "openid-connect", + "attributes": { + "realm_client": "false", + "oidc.ciba.grant.enabled": "false", + "client.secret.creation.time": "1772177793", + "backchannel.logout.session.required": "true", + "standard.token.exchange.enabled": "false", + "post.logout.redirect.uris": "http://localhost:8887", + "oauth2.device.authorization.grant.enabled": "true", + "pkce.code.challenge.method": "S256", + "backchannel.logout.revoke.offline.tokens": "false", + "dpop.bound.access.tokens": "false" + }, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": true, + "nodeReRegistrationTimeout": -1, + "protocolMappers": [ + { + "id": "3e8f8909-e718-4ebe-80b9-ed6501e94cbe", + "name": "groups", + "protocol": "openid-connect", + "protocolMapper": "oidc-group-membership-mapper", + "consentRequired": false, + "config": { + "full.path": "false", + "introspection.token.claim": "true", + "userinfo.token.claim": "true", + "multivalued": "true", + "id.token.claim": "true", + "lightweight.claim": "false", + "access.token.claim": "true", + "claim.name": "groups" + } + } + ], + "defaultClientScopes": [ + "web-origins", + "service_account", + "acr", + "profile", + "roles", + "basic", + "email" + ], + "optionalClientScopes": [ + "address", + "phone", + "organization", + "offline_access", + "microprofile-jwt" + ], + "authorizationSettings": { + "allowRemoteResourceManagement": true, + "policyEnforcementMode": "ENFORCING", + "resources": [], + "policies": [], + "scopes": [], + "decisionStrategy": "UNANIMOUS" + } + }, + { + "id": "320637e2-0aa2-4601-8862-fe465e887167", + "clientId": "security-admin-console", + "name": "${client_security-admin-console}", + "rootUrl": "${authAdminUrl}", + "baseUrl": "/admin/master/console/", + "surrogateAuthRequired": false, + "enabled": true, + "alwaysDisplayInConsole": false, + "clientAuthenticatorType": "client-secret", + "redirectUris": ["/admin/master/console/*"], + "webOrigins": ["+"], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": false, + "serviceAccountsEnabled": false, + "publicClient": true, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": { + "realm_client": "false", + "client.use.lightweight.access.token.enabled": "true", + "post.logout.redirect.uris": "+", + "pkce.code.challenge.method": "S256" + }, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": true, + "nodeReRegistrationTimeout": 0, + "protocolMappers": [ + { + "id": "59aa4c07-4e3b-4abd-947c-94e4840aab0f", + "name": "locale", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "introspection.token.claim": "true", + "userinfo.token.claim": "true", + "user.attribute": "locale", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "locale", + "jsonType.label": "String" + } + } + ], + "defaultClientScopes": [ + "web-origins", + "acr", + "profile", + "roles", + "basic", + "email" + ], + "optionalClientScopes": [ + "address", + "phone", + "organization", + "offline_access", + "microprofile-jwt" + ] + } + ], + "clientScopes": [ + { + "id": "1c5c7377-5552-4f36-8073-5b7c50ba0b58", + "name": "microprofile-jwt", + "description": "Microprofile - JWT built-in scope", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "true", + "display.on.consent.screen": "false" + }, + "protocolMappers": [ + { + "id": "d26ac380-69ea-47c8-9342-f8108b8b1c7a", + "name": "upn", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "introspection.token.claim": "true", + "userinfo.token.claim": "true", + "user.attribute": "username", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "upn", + "jsonType.label": "String" + } + }, + { + "id": "47e583ab-95d7-4b9e-83c3-37689f6808ff", + "name": "groups", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-realm-role-mapper", + "consentRequired": false, + "config": { + "introspection.token.claim": "true", + "multivalued": "true", + "userinfo.token.claim": "true", + "user.attribute": "foo", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "groups", + "jsonType.label": "String" + } + } + ] + }, + { + "id": "b92d26a9-7930-4f6c-add6-082374546966", + "name": "roles", + "description": "OpenID Connect scope for add user roles to the access token", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "false", + "consent.screen.text": "${rolesScopeConsentText}", + "display.on.consent.screen": "true" + }, + "protocolMappers": [ + { + "id": "0bf151da-a754-460b-bc53-1d78249c3ac1", + "name": "audience resolve", + "protocol": "openid-connect", + "protocolMapper": "oidc-audience-resolve-mapper", + "consentRequired": false, + "config": { + "introspection.token.claim": "true", + "access.token.claim": "true" + } + }, + { + "id": "a806de62-0e08-456f-9e16-76e8b186c724", + "name": "realm roles", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-realm-role-mapper", + "consentRequired": false, + "config": { + "user.attribute": "foo", + "introspection.token.claim": "true", + "access.token.claim": "true", + "claim.name": "realm_access.roles", + "jsonType.label": "String", + "multivalued": "true" + } + }, + { + "id": "9063017e-d52e-4624-acff-22833103a577", + "name": "client roles", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-client-role-mapper", + "consentRequired": false, + "config": { + "user.attribute": "foo", + "introspection.token.claim": "true", + "access.token.claim": "true", + "claim.name": "resource_access.${client_id}.roles", + "jsonType.label": "String", + "multivalued": "true" + } + } + ] + }, + { + "id": "dce5baba-c90f-4347-8b84-3162868c7ffa", + "name": "basic", + "description": "OpenID Connect scope for add all basic claims to the token", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "false", + "display.on.consent.screen": "false" + }, + "protocolMappers": [ + { + "id": "1457d324-6006-4141-b8a7-c45d7ab8814c", + "name": "auth_time", + "protocol": "openid-connect", + "protocolMapper": "oidc-usersessionmodel-note-mapper", + "consentRequired": false, + "config": { + "user.session.note": "AUTH_TIME", + "introspection.token.claim": "true", + "userinfo.token.claim": "true", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "auth_time", + "jsonType.label": "long" + } + }, + { + "id": "0d3b31e5-31f5-4778-adbd-36a06b301af6", + "name": "sub", + "protocol": "openid-connect", + "protocolMapper": "oidc-sub-mapper", + "consentRequired": false, + "config": { + "introspection.token.claim": "true", + "access.token.claim": "true" + } + } + ] + }, + { + "id": "f65dc085-328e-41d8-a3f3-933eed32c804", + "name": "email", + "description": "OpenID Connect built-in scope: email", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "true", + "consent.screen.text": "${emailScopeConsentText}", + "display.on.consent.screen": "true" + }, + "protocolMappers": [ + { + "id": "084130d1-642b-4b44-8643-60962e0a01d0", + "name": "email", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "introspection.token.claim": "true", + "userinfo.token.claim": "true", + "user.attribute": "email", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "email", + "jsonType.label": "String" + } + }, + { + "id": "894569d9-bf66-425e-a07e-892e97d4ac3d", + "name": "email verified", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-property-mapper", + "consentRequired": false, + "config": { + "introspection.token.claim": "true", + "userinfo.token.claim": "true", + "user.attribute": "emailVerified", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "email_verified", + "jsonType.label": "boolean" + } + } + ] + }, + { + "id": "ae961041-beb6-4d8e-b9f2-b0a1f88423f6", + "name": "address", + "description": "OpenID Connect built-in scope: address", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "true", + "consent.screen.text": "${addressScopeConsentText}", + "display.on.consent.screen": "true" + }, + "protocolMappers": [ + { + "id": "84d4f934-f761-4741-bca5-b48581c6b2de", + "name": "address", + "protocol": "openid-connect", + "protocolMapper": "oidc-address-mapper", + "consentRequired": false, + "config": { + "user.attribute.formatted": "formatted", + "user.attribute.country": "country", + "introspection.token.claim": "true", + "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": "5e1cf5ad-00e6-4092-b8aa-76bb293a3efa", + "name": "saml_organization", + "description": "Organization Membership", + "protocol": "saml", + "attributes": { + "display.on.consent.screen": "false" + }, + "protocolMappers": [ + { + "id": "10efbc9e-4f21-42b7-832b-f5de7b3a666c", + "name": "organization", + "protocol": "saml", + "protocolMapper": "saml-organization-membership-mapper", + "consentRequired": false, + "config": {} + } + ] + }, + { + "id": "a1c75182-21f3-4e70-83f4-67e42f28267c", + "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", + "consent.screen.text": "", + "display.on.consent.screen": "false" + }, + "protocolMappers": [ + { + "id": "1a570c6f-6f1a-4503-8677-5762b7b5578a", + "name": "allowed web origins", + "protocol": "openid-connect", + "protocolMapper": "oidc-allowed-origins-mapper", + "consentRequired": false, + "config": { + "introspection.token.claim": "true", + "access.token.claim": "true" + } + } + ] + }, + { + "id": "4e350025-c16f-4a34-b132-4c6c07d0d90f", + "name": "profile", + "description": "OpenID Connect built-in scope: profile", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "true", + "consent.screen.text": "${profileScopeConsentText}", + "display.on.consent.screen": "true" + }, + "protocolMappers": [ + { + "id": "7b1a561c-f0d0-4979-ab02-0e9d564cb5af", + "name": "middle name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "introspection.token.claim": "true", + "userinfo.token.claim": "true", + "user.attribute": "middleName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "middle_name", + "jsonType.label": "String" + } + }, + { + "id": "ed49a16e-928f-4882-a8b6-835b83445349", + "name": "zoneinfo", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "introspection.token.claim": "true", + "userinfo.token.claim": "true", + "user.attribute": "zoneinfo", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "zoneinfo", + "jsonType.label": "String" + } + }, + { + "id": "0fea1c8d-77a9-4325-a414-ca503a702ea1", + "name": "family name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "introspection.token.claim": "true", + "userinfo.token.claim": "true", + "user.attribute": "lastName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "family_name", + "jsonType.label": "String" + } + }, + { + "id": "4ec1df3c-803c-4b3d-a96d-054f17b3745c", + "name": "gender", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "introspection.token.claim": "true", + "userinfo.token.claim": "true", + "user.attribute": "gender", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "gender", + "jsonType.label": "String" + } + }, + { + "id": "b066efb7-76f4-4a42-97ae-39cb8883898a", + "name": "nickname", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "introspection.token.claim": "true", + "userinfo.token.claim": "true", + "user.attribute": "nickname", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "nickname", + "jsonType.label": "String" + } + }, + { + "id": "0ef7cb1a-75f4-4b57-8614-3d35d7f93fc5", + "name": "birthdate", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "introspection.token.claim": "true", + "userinfo.token.claim": "true", + "user.attribute": "birthdate", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "birthdate", + "jsonType.label": "String" + } + }, + { + "id": "dd8c2607-67ab-4f25-96cc-19c9751a0e03", + "name": "profile", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "introspection.token.claim": "true", + "userinfo.token.claim": "true", + "user.attribute": "profile", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "profile", + "jsonType.label": "String" + } + }, + { + "id": "f2fdb527-5bb8-4c41-a260-7b8f2653baa8", + "name": "updated at", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "introspection.token.claim": "true", + "userinfo.token.claim": "true", + "user.attribute": "updatedAt", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "updated_at", + "jsonType.label": "long" + } + }, + { + "id": "672a0701-67a0-4aa4-bbeb-93fa325d2921", + "name": "username", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "introspection.token.claim": "true", + "userinfo.token.claim": "true", + "user.attribute": "username", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "preferred_username", + "jsonType.label": "String" + } + }, + { + "id": "a3ca4541-9326-4b34-b59d-5f6f366e2ff9", + "name": "website", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "introspection.token.claim": "true", + "userinfo.token.claim": "true", + "user.attribute": "website", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "website", + "jsonType.label": "String" + } + }, + { + "id": "ccdc393d-6aee-4c88-b071-b708f4cf2b05", + "name": "locale", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "introspection.token.claim": "true", + "userinfo.token.claim": "true", + "user.attribute": "locale", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "locale", + "jsonType.label": "String" + } + }, + { + "id": "cbf3d8ee-c2d9-445d-8662-279fd1160c80", + "name": "full name", + "protocol": "openid-connect", + "protocolMapper": "oidc-full-name-mapper", + "consentRequired": false, + "config": { + "id.token.claim": "true", + "introspection.token.claim": "true", + "access.token.claim": "true", + "userinfo.token.claim": "true" + } + }, + { + "id": "fc8b06a9-e4fc-4381-830a-2e03f8982ff6", + "name": "given name", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "introspection.token.claim": "true", + "userinfo.token.claim": "true", + "user.attribute": "firstName", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "given_name", + "jsonType.label": "String" + } + }, + { + "id": "a46cc2ac-d92c-4b61-b119-910b4e96e456", + "name": "picture", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "introspection.token.claim": "true", + "userinfo.token.claim": "true", + "user.attribute": "picture", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "picture", + "jsonType.label": "String" + } + } + ] + }, + { + "id": "2b7175c7-d59b-4dea-9759-405299298c21", + "name": "organization", + "description": "Additional claims about the organization a subject belongs to", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "true", + "consent.screen.text": "${organizationScopeConsentText}", + "display.on.consent.screen": "true" + }, + "protocolMappers": [ + { + "id": "cd6a70e3-ebb8-4892-975e-4bece535c387", + "name": "organization", + "protocol": "openid-connect", + "protocolMapper": "oidc-organization-membership-mapper", + "consentRequired": false, + "config": { + "introspection.token.claim": "true", + "multivalued": "true", + "userinfo.token.claim": "true", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "organization", + "jsonType.label": "String" + } + } + ] + }, + { + "id": "074912fc-e8b4-4369-8842-d8e44479e5d7", + "name": "role_list", + "description": "SAML role list", + "protocol": "saml", + "attributes": { + "consent.screen.text": "${samlRoleListScopeConsentText}", + "display.on.consent.screen": "true" + }, + "protocolMappers": [ + { + "id": "8e4761c8-96b5-422b-b9ef-f18970f9a677", + "name": "role list", + "protocol": "saml", + "protocolMapper": "saml-role-list-mapper", + "consentRequired": false, + "config": { + "single": "false", + "attribute.nameformat": "Basic", + "attribute.name": "Role" + } + } + ] + }, + { + "id": "8b3b526e-ea3d-497a-b346-5852ddd29d01", + "name": "service_account", + "description": "Specific scope for a client enabled for service accounts", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "false", + "display.on.consent.screen": "false" + }, + "protocolMappers": [ + { + "id": "7e347974-b093-4a66-8fe0-8bdbab526232", + "name": "Client Host", + "protocol": "openid-connect", + "protocolMapper": "oidc-usersessionmodel-note-mapper", + "consentRequired": false, + "config": { + "user.session.note": "clientHost", + "introspection.token.claim": "true", + "userinfo.token.claim": "true", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "clientHost", + "jsonType.label": "String" + } + }, + { + "id": "0a4fe9bc-c5b1-45fc-80c1-7de78eda92ab", + "name": "Client IP Address", + "protocol": "openid-connect", + "protocolMapper": "oidc-usersessionmodel-note-mapper", + "consentRequired": false, + "config": { + "user.session.note": "clientAddress", + "introspection.token.claim": "true", + "userinfo.token.claim": "true", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "clientAddress", + "jsonType.label": "String" + } + }, + { + "id": "9b86ae58-d68d-4be7-9e48-3113a22caf5f", + "name": "Client ID", + "protocol": "openid-connect", + "protocolMapper": "oidc-usersessionmodel-note-mapper", + "consentRequired": false, + "config": { + "user.session.note": "client_id", + "introspection.token.claim": "true", + "userinfo.token.claim": "true", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "client_id", + "jsonType.label": "String" + } + } + ] + }, + { + "id": "09e32dbb-120d-44bc-89eb-803b2caf35fc", + "name": "phone", + "description": "OpenID Connect built-in scope: phone", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "true", + "consent.screen.text": "${phoneScopeConsentText}", + "display.on.consent.screen": "true" + }, + "protocolMappers": [ + { + "id": "83dc1340-1f91-47eb-8bb5-d324084687f2", + "name": "phone number verified", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "introspection.token.claim": "true", + "userinfo.token.claim": "true", + "user.attribute": "phoneNumberVerified", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "phone_number_verified", + "jsonType.label": "boolean" + } + }, + { + "id": "014dfa26-791d-414b-bfb6-0b08605bf30f", + "name": "phone number", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-attribute-mapper", + "consentRequired": false, + "config": { + "introspection.token.claim": "true", + "userinfo.token.claim": "true", + "user.attribute": "phoneNumber", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "phone_number", + "jsonType.label": "String" + } + } + ] + }, + { + "id": "e582a1a0-4ad9-4bbd-b41e-a503b435da3a", + "name": "acr", + "description": "OpenID Connect scope for add acr (authentication context class reference) to the token", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "false", + "display.on.consent.screen": "false" + }, + "protocolMappers": [ + { + "id": "f762a161-89f2-47a7-83cb-686362280a14", + "name": "acr loa level", + "protocol": "openid-connect", + "protocolMapper": "oidc-acr-mapper", + "consentRequired": false, + "config": { + "id.token.claim": "true", + "introspection.token.claim": "true", + "access.token.claim": "true", + "userinfo.token.claim": "true" + } + } + ] + }, + { + "id": "b288b9a7-e8a8-4b0a-8972-af6083835858", + "name": "offline_access", + "description": "OpenID Connect built-in scope: offline_access", + "protocol": "openid-connect", + "attributes": { + "consent.screen.text": "${offlineAccessScopeConsentText}", + "display.on.consent.screen": "true" + } + } + ], + "defaultDefaultClientScopes": [ + "role_list", + "saml_organization", + "profile", + "email", + "roles", + "web-origins", + "acr", + "basic" + ], + "defaultOptionalClientScopes": [ + "offline_access", + "address", + "phone", + "microprofile-jwt", + "organization" + ], + "browserSecurityHeaders": { + "contentSecurityPolicyReportOnly": "", + "xContentTypeOptions": "nosniff", + "referrerPolicy": "no-referrer", + "xRobotsTag": "none", + "xFrameOptions": "SAMEORIGIN", + "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, + "identityProviders": [], + "identityProviderMappers": [], + "components": { + "org.keycloak.services.clientregistration.policy.ClientRegistrationPolicy": [ + { + "id": "c7eaaf0f-7650-4fc1-968a-889667759858", + "name": "Allowed Client Scopes", + "providerId": "allowed-client-templates", + "subType": "anonymous", + "subComponents": {}, + "config": { + "allow-default-scopes": ["true"] + } + }, + { + "id": "1f0661c3-25de-4ff6-92bf-dbb36264a71b", + "name": "Max Clients Limit", + "providerId": "max-clients", + "subType": "anonymous", + "subComponents": {}, + "config": { + "max-clients": ["200"] + } + }, + { + "id": "a889dafe-f9d0-4728-bdf5-9421d1077d1f", + "name": "Consent Required", + "providerId": "consent-required", + "subType": "anonymous", + "subComponents": {}, + "config": {} + }, + { + "id": "4790f0a4-3450-4dbf-9153-0a1805e02d98", + "name": "Allowed Registration Web Origins", + "providerId": "registration-web-origins", + "subType": "authenticated", + "subComponents": {}, + "config": {} + }, + { + "id": "4084bb89-71f9-4363-a5dd-dfa74e638d80", + "name": "Allowed Protocol Mapper Types", + "providerId": "allowed-protocol-mappers", + "subType": "anonymous", + "subComponents": {}, + "config": { + "allowed-protocol-mapper-types": [ + "saml-user-attribute-mapper", + "oidc-sha256-pairwise-sub-mapper", + "oidc-address-mapper", + "saml-role-list-mapper", + "oidc-usermodel-attribute-mapper", + "oidc-usermodel-property-mapper", + "saml-user-property-mapper", + "oidc-full-name-mapper" + ] + } + }, + { + "id": "dba96a52-5743-47d2-b5f5-42452892b0bd", + "name": "Allowed Client Scopes", + "providerId": "allowed-client-templates", + "subType": "authenticated", + "subComponents": {}, + "config": { + "allow-default-scopes": ["true"] + } + }, + { + "id": "85b9458c-d890-48b8-87b7-7d3d5f331d5f", + "name": "Allowed Protocol Mapper Types", + "providerId": "allowed-protocol-mappers", + "subType": "authenticated", + "subComponents": {}, + "config": { + "allowed-protocol-mapper-types": [ + "saml-user-attribute-mapper", + "oidc-full-name-mapper", + "saml-user-property-mapper", + "oidc-usermodel-property-mapper", + "oidc-sha256-pairwise-sub-mapper", + "saml-role-list-mapper", + "oidc-usermodel-attribute-mapper", + "oidc-address-mapper" + ] + } + }, + { + "id": "181cd220-28a9-4a5e-b2d7-c9092c26ef67", + "name": "Full Scope Disabled", + "providerId": "scope", + "subType": "anonymous", + "subComponents": {}, + "config": {} + }, + { + "id": "be0c3922-b432-408c-935b-81923b0e7018", + "name": "Trusted Hosts", + "providerId": "trusted-hosts", + "subType": "anonymous", + "subComponents": {}, + "config": { + "host-sending-registration-request-must-match": ["true"], + "client-uris-must-match": ["true"] + } + }, + { + "id": "81fe5bf6-4e18-40b8-8cf6-46028fb6704c", + "name": "Allowed Registration Web Origins", + "providerId": "registration-web-origins", + "subType": "anonymous", + "subComponents": {}, + "config": {} + } + ], + "org.keycloak.userprofile.UserProfileProvider": [ + { + "id": "bd8f87c6-ffc2-401d-baab-cccb228e9b50", + "providerId": "declarative-user-profile", + "subComponents": {}, + "config": { + "kc.user.profile.config": [ + "{\"attributes\":[{\"name\":\"username\",\"displayName\":\"${username}\",\"validations\":{\"length\":{\"min\":3,\"max\":255},\"username-prohibited-characters\":{},\"up-username-not-idn-homograph\":{}},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false},{\"name\":\"email\",\"displayName\":\"${email}\",\"validations\":{\"email\":{},\"length\":{\"max\":255}},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false},{\"name\":\"firstName\",\"displayName\":\"${firstName}\",\"validations\":{\"length\":{\"max\":255},\"person-name-prohibited-characters\":{}},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false},{\"name\":\"lastName\",\"displayName\":\"${lastName}\",\"validations\":{\"length\":{\"max\":255},\"person-name-prohibited-characters\":{}},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false}],\"groups\":[{\"name\":\"user-metadata\",\"displayHeader\":\"User metadata\",\"displayDescription\":\"Attributes, which refer to user metadata\"}]}" + ] + } + } + ], + "org.keycloak.keys.KeyProvider": [ + { + "id": "2068dd28-1706-4fc6-8751-ead7dc26cf90", + "name": "aes-generated", + "providerId": "aes-generated", + "subComponents": {}, + "config": { + "kid": ["81bfaacd-ca1f-4b68-a1b2-80102555f5d6"], + "secret": ["XEHl3aG9cESD4wedDu3uAg"], + "priority": ["100"] + } + }, + { + "id": "4bc97a67-b5fd-4bd5-9df9-7366efc0e091", + "name": "hmac-generated-hs512", + "providerId": "hmac-generated", + "subComponents": {}, + "config": { + "kid": ["31342681-e4fb-428d-bd54-07a77581ec75"], + "secret": [ + "UhZlVtujVRkaFsvdVAOGPTEsNIwAJIOfmJDjQeciaQuWIGKWd-RBdKcS0II053kVswbJRGitqc-e0iqBfhZrUBrQyUmmcrCJT09BiaKCicdgRwYrb8fhYagiIg-70jk7fc3j3VINu5eeKjkTiDyfAf_0HS62-8eO4e98A5IW6QE" + ], + "priority": ["100"], + "algorithm": ["HS512"] + } + }, + { + "id": "1cf333a1-b495-47b5-94f4-138e34e92ec7", + "name": "rsa-generated", + "providerId": "rsa-generated", + "subComponents": {}, + "config": { + "privateKey": [ + "MIIEpAIBAAKCAQEAvQ5kJj9mHLGm5zMvW5kYgSbEVvZYWcmMJKMQRWni4RdvbrKpkgsLv6gkH0xiwKU5aaUmk/e6hAZO2UvZ8Tp180VBhk2BXtS21Jm7KbZSVtQBFf33zVqjEXB2d89E1R6RlopzF4+Y6X1xxPnJ1UGxM0yT8uSrGB4CbJaNO4YH6/vUsJWoNXS9MJKFIvm0HP6t+o6DvWGn5HjLK7jhhF6iATZpp0JwqkG5Y+xo6TObx3m11aCR1HrFqlVg6zC3Ht4lhlQh3VhKcoO80gRAURU7WjOOAwauJViYrOF6eAsbMbpTD8EAyXL/4KCFWoITwRpHYNXwSzdR/BvgFlsJwLxJGwIDAQABAoIBABTzpleyyP8/FO8kdgghtFyDzliQ3oO82WIqDCCVNoaZkUjkVfSQctHfsXkifwM4jF9P5TGaz7nX9R8Rz+py/yVhtHxM1JyM2GJBU0OxJ/jlb+VfCvpgJBhHrWljuA4iYCId39lpmZmuxE//GsYejKPRxceyXd/DW6NrH+XL2c7mHe0AznAEfDeIsKWRDCoOjgm2xfpjU204HGLGmU+qTzH4EeZPWvpCnXWZiNBrxSiBUdauCMz6jWBZXW173rfd430t9JMu7zuPqFpcZ/RsLw3blHoPWpbpeULloxfSgxcYD+KP+oCk8t2oubTDGX2ES7OVfSbgy5yMYPbg7g+G97kCgYEA7Jj4d4tdTCOfk5kdqU2R7LB5IX3gsCohmp6FH3yPA2JBQ95Mk6IK15mIvvCXF4zyDvESsevjjQSlEhmYOQ1Us5MdvKZVtM/EgIZmI+3Z+r5M39QWQ8XYkOJr1DT990ed+QVF7H0khT7nmvmVzDYjPE1qtTtzadhwxY8r0Kcmew0CgYEAzI9bpm5rvpf3jfTPZeKb8pc1/4zlUqV0kH+P5BHnssXBX8nVJNgUxcv5xFZrL3MVr5BIYrXSh5qzYduGXkjsjCvo0zdhPmGvRYeL13xJi8EijbK78eORpdx5dN1Oht36+THtWSYnOyFU1gYZEdb3JC0Sc9TwjDPh5RWWLp2MqscCgYEAq85xLy3uc+myaVXYqiZ//qYvb9ieno4ZlNPjy3eBym1BA22boeEbinAdUroWna1l4N/COZ0XwkFLNReM6HD7vuLnxyPqPMBa6xGtfg2sKl6iKC80c8ZpetxQfOp2OWiyGDByFEbTjEafnHP9CSuO7q0w/aXMK2JWkb9ji8K1OMkCgYBmFPB2uMn5/hpi9BV/0btjL4SZ9/UE7l6iMZZcCXdn5noe1DkSvuZ24tjM2xd4QWVEDKui3vumAlScdBG1AY1SUiNJLGzR1avC9eaabYLCRGp67gQOrTMk40aVRE+IzEQPkZPRllGjl3mfqMFf/resjPWVamF0hfun98LPln35RwKBgQCrD+b/1kcSdHRUsaG04vEK8Qpm86E9GV8eLorMJv+gaOAAQXAgxQTp1QXlK/1A11Fj5CYTYg5vQtI16K3KYuF2tdhRR5LRlp0NDK7wf4QNhuK9OQfroHoETngOXGnA2p/RMaDKkAgh49GLT7vMo98ztjsrcRQqNOMGya8L1k48Jg==" + ], + "certificate": [ + "MIICmzCCAYMCBgGcnhPYNDANBgkqhkiG9w0BAQsFADARMQ8wDQYDVQQDDAZtYXN0ZXIwHhcNMjYwMjI3MDc0ODQ2WhcNMzYwMjI3MDc1MDI2WjARMQ8wDQYDVQQDDAZtYXN0ZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9DmQmP2YcsabnMy9bmRiBJsRW9lhZyYwkoxBFaeLhF29usqmSCwu/qCQfTGLApTlppSaT97qEBk7ZS9nxOnXzRUGGTYFe1LbUmbsptlJW1AEV/ffNWqMRcHZ3z0TVHpGWinMXj5jpfXHE+cnVQbEzTJPy5KsYHgJslo07hgfr+9Swlag1dL0wkoUi+bQc/q36joO9YafkeMsruOGEXqIBNmmnQnCqQblj7GjpM5vHebXVoJHUesWqVWDrMLce3iWGVCHdWEpyg7zSBEBRFTtaM44DBq4lWJis4Xp4CxsxulMPwQDJcv/goIVaghPBGkdg1fBLN1H8G+AWWwnAvEkbAgMBAAEwDQYJKoZIhvcNAQELBQADggEBABWqPOyc4ReF3EnjSaD3n6Fk0ZVGDJZ6/du2cqlFm9rFEVlnJ0GS7Cz8an88PTge098gxM3+NSCjfgDN3B2QO//H3SdwjmGvKm1hghQVYvfFafW/Cat/nNqm68K6MCGNGP67OeNMLyl3OAL68SRNM1hoNbCplDt6HhX5s1Cn/iZPEQ7t4o6tt/aO/07E+3WfS3+PNqvt7jPrf0y5OlZ7oCAN0cnegSkbanvZehBlRpLkWhxphlAR90PomrW59Ok60EITscXr1jD1vlOgrvnw41y1L5eSvO3g19rKgqB5NrniavRdonP605109SQacZ31g7vmH/2qvV3MUuT9UBoRRFI=" + ], + "priority": ["100"] + } + }, + { + "id": "b68cba6a-7e0b-42be-a3aa-25d5c342801a", + "name": "rsa-enc-generated", + "providerId": "rsa-enc-generated", + "subComponents": {}, + "config": { + "privateKey": [ + "MIIEowIBAAKCAQEApFfSvqZKE30r0gu77DbLv5P6NBiEsCC30KlQp4gbyyHgQuHFWhPyUNJKi0NJGjyFzkw7cztmB7uJOa9oc54QQITdlzLEQ1Z8zvsv6hG5aNDwSLgCNiKHaIAxe6XmCYwhQX3LNGaUidf/a9JS+Kr/WMjQb9Y2NGbKqM5V2vAskq/p7CR2TLVShX2iGlPVO34qYbJSA6nF98n0x2ZxAdj8P77HqWJs0z/wRGxEFPmoWP4QR+b9q9f2ewr7EmIXOi7ZsxNF4g0CCo4zqUD4VGnGABl158zx+9ONedgBTnZNwnb9iM++bFt5exuvjbQ86jpnPrMR1yhIVKGSAddUlbV9IwIDAQABAoIBAE569BSAM7K/3SvG17yTZFQ99cdoCAFV9oHKQU5nxKIKMN6vkz+Tc+2dpuR/QsspKNrd86vxKyW5LGxkNBS2YFt3N5yrLSddB2gOcxCr2ydPU9feK4wvjAte4IKENGjNxtnQGTiSXg+/muWiAGZovlznNQabPLJkfhYDxuMxO4/mdcNSX3riJ/u6MtUS2BZMxOZWvZZ+t1boakJsn7LUycXngpMlZBrivZ9+bckD75iEAsTlwAzj2Tm1VgycmtwcOwvNAL/Eb35yqemBggYNqjxpdi+3Mm2OgHdWmWIdXpHbuYcw/FaKUKIFJ9JiBZYeDYK2Adb8pHQh050assU6m+ECgYEA5Xe0M6a/yL+j+0lpM9xrz4R21c67uy9Tg70l8/8N1rtam+M7hqtHYMwvtWZ1pSFSoxZ+6iVlI2xg5BqSX1tkV5QNtHcOlrrgysBWPXzz6oyrG+j2pAJ2bvNd+haCu2WOANPbs03bIc4/PUiPevXGKBf0ZuJ22P78GCp+/VZt4YMCgYEAt1hq2ufPSlbYJ3uItmBBPoIHvHDm4MELqjCSPqTo4BKrPdmlDv7p3pAG8+D/8K2jZEDRMyOatEnUH64RqQBuCs9YgcrRqkrzxhnqLGKllH+Z3QOwT+xCntkAnxI8fULeAbOJvw8Nb1dAtTODY+wrvmUEhvbyYQ76guzqtSTfQ+ECgYEA09acf4qTRurUoel1u7DjvqIVavD9kqLwQJBf908hIXm4/mzayUpaDNyzto2uUhHfTjw4UkTPh9JH6I03T9z5V3iQ5md7Cl/foo3Jj95I9+GBHbUF7Qdw+qClw3kAm6v3WoA7NN7NS/oxm4vfGa7Hjr/+mvS6rz1G0bB5p7sgma0CgYAtXwoCZf8cLGWNT7rDNwquR0tWzLG1yM/0K9Tk/7ZJTRVnVubL0TVayFWQIIv1qWKXupqKhzMPjn2Z4V+pbNvOfQUwCVrdQ3MUAPG8TiUfnHwc/36wKI1L9fN7ae3iKZv6280opLb0aKkwrjDDl3wzv5fhNldAwY4ovCxQ63D8wQKBgE6ZR/2bPYAa0O5pA7lPGSKfKYZY4U4zNwhgTAgzm2b7ONyJSP00yVwXoBX4j8qHbotVQY+8VMfFo49t3JCJ61g/Q/T3Uyd43fz1LzoQKFInDe1B7yXfPkEL4R7rllVmEvhoszgivYtevIoE//ZeHiMAn53nBJFgGuQyk7BMx7z0" + ], + "certificate": [ + "MIICmzCCAYMCBgGcnhPYrjANBgkqhkiG9w0BAQsFADARMQ8wDQYDVQQDDAZtYXN0ZXIwHhcNMjYwMjI3MDc0ODQ2WhcNMzYwMjI3MDc1MDI2WjARMQ8wDQYDVQQDDAZtYXN0ZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCkV9K+pkoTfSvSC7vsNsu/k/o0GISwILfQqVCniBvLIeBC4cVaE/JQ0kqLQ0kaPIXOTDtzO2YHu4k5r2hznhBAhN2XMsRDVnzO+y/qEblo0PBIuAI2IodogDF7peYJjCFBfcs0ZpSJ1/9r0lL4qv9YyNBv1jY0ZsqozlXa8CySr+nsJHZMtVKFfaIaU9U7fiphslIDqcX3yfTHZnEB2Pw/vsepYmzTP/BEbEQU+ahY/hBH5v2r1/Z7CvsSYhc6LtmzE0XiDQIKjjOpQPhUacYAGXXnzPH704152AFOdk3Cdv2Iz75sW3l7G6+NtDzqOmc+sxHXKEhUoZIB11SVtX0jAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAKNZLkRF4xSD7KltDoHn3ND+ouDaK5AQH4uZtbp5Rl+3beqwOpnPEJmCzhuhvij6eVngviL0Ga8pFIBzX7zQu2v8oxTFIbGvAYBH9NNkA8R/qsaosC4C/mEmY/H9UDGUXp1VSFI8e08n2GlnVoll9t1wCvhyaMqpFqglmD8SccGTKiBKeSD4v+SWN19+Wi4KOvI5wqR0KKrvlmNWDxbsYzsUbU/gII7Y5nsUB3L2RvugXssX8+zgTYuyBoygEgdXcOKsyWRQ/vmGr9ZE+8RuBsWTS0at8m3SN/nCkarboVFLhnqbRVpV5uLrx4LVRkGNmVCXKccf3Poh+DbxgLD/kNU=" + ], + "priority": ["100"], + "algorithm": ["RSA-OAEP"] + } + } + ] + }, + "internationalizationEnabled": false, + "authenticationFlows": [ + { + "id": "f1ec49bd-55dd-4584-9438-bedf328b356d", + "alias": "Account verification options", + "description": "Method with which to verify the existing account", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "idp-email-verification", + "authenticatorFlow": false, + "requirement": "ALTERNATIVE", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticatorFlow": true, + "requirement": "ALTERNATIVE", + "priority": 20, + "autheticatorFlow": true, + "flowAlias": "Verify Existing Account by Re-authentication", + "userSetupAllowed": false + } + ] + }, + { + "id": "72f9d538-d665-468f-8c06-cc6ef863d699", + "alias": "Browser - Conditional 2FA", + "description": "Flow to determine if any 2FA is required for the authentication", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "conditional-user-configured", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticatorConfig": "browser-conditional-credential", + "authenticator": "conditional-credential", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 20, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "auth-otp-form", + "authenticatorFlow": false, + "requirement": "ALTERNATIVE", + "priority": 30, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "webauthn-authenticator", + "authenticatorFlow": false, + "requirement": "DISABLED", + "priority": 40, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "auth-recovery-authn-code-form", + "authenticatorFlow": false, + "requirement": "DISABLED", + "priority": 50, + "autheticatorFlow": false, + "userSetupAllowed": false + } + ] + }, + { + "id": "b7e3c8f7-17bf-4a76-8921-2afb316272dd", + "alias": "Direct Grant - Conditional OTP", + "description": "Flow to determine if the OTP is required for the authentication", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "conditional-user-configured", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "direct-grant-validate-otp", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 20, + "autheticatorFlow": false, + "userSetupAllowed": false + } + ] + }, + { + "id": "8bb954d6-800e-4ff4-bea8-d5fe51a101e6", + "alias": "First broker login - Conditional 2FA", + "description": "Flow to determine if any 2FA is required for the authentication", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "conditional-user-configured", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticatorConfig": "first-broker-login-conditional-credential", + "authenticator": "conditional-credential", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 20, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "auth-otp-form", + "authenticatorFlow": false, + "requirement": "ALTERNATIVE", + "priority": 30, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "webauthn-authenticator", + "authenticatorFlow": false, + "requirement": "DISABLED", + "priority": 40, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "auth-recovery-authn-code-form", + "authenticatorFlow": false, + "requirement": "DISABLED", + "priority": 50, + "autheticatorFlow": false, + "userSetupAllowed": false + } + ] + }, + { + "id": "9459afd7-9f72-4702-9f60-989664925fd3", + "alias": "Handle Existing Account", + "description": "Handle what to do if there is existing account with same email/username like authenticated identity provider", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "idp-confirm-link", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticatorFlow": true, + "requirement": "REQUIRED", + "priority": 20, + "autheticatorFlow": true, + "flowAlias": "Account verification options", + "userSetupAllowed": false + } + ] + }, + { + "id": "f78ffd37-a52e-4c1a-b524-e7e30e8b59b0", + "alias": "Reset - Conditional OTP", + "description": "Flow to determine if the OTP should be reset or not. Set to REQUIRED to force.", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "conditional-user-configured", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "reset-otp", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 20, + "autheticatorFlow": false, + "userSetupAllowed": false + } + ] + }, + { + "id": "221d25d8-15e0-44f0-ab87-890091819de2", + "alias": "User creation or linking", + "description": "Flow for the existing/non-existing user alternatives", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticatorConfig": "create unique user config", + "authenticator": "idp-create-user-if-unique", + "authenticatorFlow": false, + "requirement": "ALTERNATIVE", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticatorFlow": true, + "requirement": "ALTERNATIVE", + "priority": 20, + "autheticatorFlow": true, + "flowAlias": "Handle Existing Account", + "userSetupAllowed": false + } + ] + }, + { + "id": "3abe4382-9087-4654-9f6a-13a882af038c", + "alias": "Verify Existing Account by Re-authentication", + "description": "Reauthentication of existing account", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "idp-username-password-form", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticatorFlow": true, + "requirement": "CONDITIONAL", + "priority": 20, + "autheticatorFlow": true, + "flowAlias": "First broker login - Conditional 2FA", + "userSetupAllowed": false + } + ] + }, + { + "id": "bb681a9f-3bfa-4fa8-a8b6-74463a6cf493", + "alias": "browser", + "description": "Browser based authentication", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "auth-cookie", + "authenticatorFlow": false, + "requirement": "ALTERNATIVE", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "auth-spnego", + "authenticatorFlow": false, + "requirement": "DISABLED", + "priority": 20, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "identity-provider-redirector", + "authenticatorFlow": false, + "requirement": "ALTERNATIVE", + "priority": 25, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticatorFlow": true, + "requirement": "ALTERNATIVE", + "priority": 30, + "autheticatorFlow": true, + "flowAlias": "forms", + "userSetupAllowed": false + } + ] + }, + { + "id": "f02d0da2-4f63-4ec1-ad1e-1bf5b9388e44", + "alias": "clients", + "description": "Base authentication for clients", + "providerId": "client-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "client-secret", + "authenticatorFlow": false, + "requirement": "ALTERNATIVE", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "client-jwt", + "authenticatorFlow": false, + "requirement": "ALTERNATIVE", + "priority": 20, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "client-secret-jwt", + "authenticatorFlow": false, + "requirement": "ALTERNATIVE", + "priority": 30, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "client-x509", + "authenticatorFlow": false, + "requirement": "ALTERNATIVE", + "priority": 40, + "autheticatorFlow": false, + "userSetupAllowed": false + } + ] + }, + { + "id": "0326d889-4cc3-43fd-94eb-fc05ae1277eb", + "alias": "direct grant", + "description": "OpenID Connect Resource Owner Grant", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "direct-grant-validate-username", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "direct-grant-validate-password", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 20, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticatorFlow": true, + "requirement": "CONDITIONAL", + "priority": 30, + "autheticatorFlow": true, + "flowAlias": "Direct Grant - Conditional OTP", + "userSetupAllowed": false + } + ] + }, + { + "id": "5cf04370-c12d-484f-befb-47fec450afc7", + "alias": "docker auth", + "description": "Used by Docker clients to authenticate against the IDP", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "docker-http-basic-authenticator", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + } + ] + }, + { + "id": "e9abe54d-edc6-4c80-b72a-e6603fb03a02", + "alias": "first broker login", + "description": "Actions taken after first broker login with identity provider account, which is not yet linked to any Keycloak account", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticatorConfig": "review profile config", + "authenticator": "idp-review-profile", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticatorFlow": true, + "requirement": "REQUIRED", + "priority": 20, + "autheticatorFlow": true, + "flowAlias": "User creation or linking", + "userSetupAllowed": false + } + ] + }, + { + "id": "39318842-fb7e-4356-a97e-69db12d00280", + "alias": "forms", + "description": "Username, password, otp and other auth forms.", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "auth-username-password-form", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticatorFlow": true, + "requirement": "CONDITIONAL", + "priority": 20, + "autheticatorFlow": true, + "flowAlias": "Browser - Conditional 2FA", + "userSetupAllowed": false + } + ] + }, + { + "id": "725e0d82-e0b9-428b-88ed-d11ddab6159a", + "alias": "registration", + "description": "Registration flow", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "registration-page-form", + "authenticatorFlow": true, + "requirement": "REQUIRED", + "priority": 10, + "autheticatorFlow": true, + "flowAlias": "registration form", + "userSetupAllowed": false + } + ] + }, + { + "id": "ba6f9d02-2a96-4220-9cbf-d3f64718923d", + "alias": "registration form", + "description": "Registration form", + "providerId": "form-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "registration-user-creation", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 20, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "registration-password-action", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 50, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "registration-recaptcha-action", + "authenticatorFlow": false, + "requirement": "DISABLED", + "priority": 60, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "registration-terms-and-conditions", + "authenticatorFlow": false, + "requirement": "DISABLED", + "priority": 70, + "autheticatorFlow": false, + "userSetupAllowed": false + } + ] + }, + { + "id": "3a53ff54-b0cb-465f-86c8-e243d4ec0004", + "alias": "reset credentials", + "description": "Reset credentials for a user if they forgot their password or something", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "reset-credentials-choose-user", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "reset-credential-email", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 20, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "reset-password", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 30, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticatorFlow": true, + "requirement": "CONDITIONAL", + "priority": 40, + "autheticatorFlow": true, + "flowAlias": "Reset - Conditional OTP", + "userSetupAllowed": false + } + ] + }, + { + "id": "b977c3de-2d43-4759-ba01-3fc5af17b0dd", + "alias": "saml ecp", + "description": "SAML ECP Profile Authentication Flow", + "providerId": "basic-flow", + "topLevel": true, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "http-basic-authenticator", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + } + ] + } + ], + "authenticatorConfig": [ + { + "id": "c10561b1-ae3f-4cb4-9608-72fb3d83a98a", + "alias": "browser-conditional-credential", + "config": { + "credentials": "webauthn-passwordless" + } + }, + { + "id": "d22338ae-5ecc-4b20-b781-fbcd610ffcb6", + "alias": "create unique user config", + "config": { + "require.password.update.after.registration": "false" + } + }, + { + "id": "4338fbaa-8922-4274-9b3b-f6c9c00002a3", + "alias": "first-broker-login-conditional-credential", + "config": { + "credentials": "webauthn-passwordless" + } + }, + { + "id": "48dfd05d-b3be-4d5d-a704-e1a1ac93b8eb", + "alias": "review profile config", + "config": { + "update.profile.on.first.login": "missing" + } + } + ], + "requiredActions": [ + { + "alias": "CONFIGURE_TOTP", + "name": "Configure OTP", + "providerId": "CONFIGURE_TOTP", + "enabled": true, + "defaultAction": false, + "priority": 10, + "config": {} + }, + { + "alias": "TERMS_AND_CONDITIONS", + "name": "Terms and Conditions", + "providerId": "TERMS_AND_CONDITIONS", + "enabled": false, + "defaultAction": false, + "priority": 20, + "config": {} + }, + { + "alias": "UPDATE_PASSWORD", + "name": "Update Password", + "providerId": "UPDATE_PASSWORD", + "enabled": true, + "defaultAction": false, + "priority": 30, + "config": {} + }, + { + "alias": "UPDATE_PROFILE", + "name": "Update Profile", + "providerId": "UPDATE_PROFILE", + "enabled": true, + "defaultAction": false, + "priority": 40, + "config": {} + }, + { + "alias": "VERIFY_EMAIL", + "name": "Verify Email", + "providerId": "VERIFY_EMAIL", + "enabled": true, + "defaultAction": false, + "priority": 50, + "config": {} + }, + { + "alias": "delete_account", + "name": "Delete Account", + "providerId": "delete_account", + "enabled": false, + "defaultAction": false, + "priority": 60, + "config": {} + }, + { + "alias": "UPDATE_EMAIL", + "name": "Update Email", + "providerId": "UPDATE_EMAIL", + "enabled": false, + "defaultAction": false, + "priority": 70, + "config": {} + }, + { + "alias": "webauthn-register", + "name": "Webauthn Register", + "providerId": "webauthn-register", + "enabled": true, + "defaultAction": false, + "priority": 80, + "config": {} + }, + { + "alias": "webauthn-register-passwordless", + "name": "Webauthn Register Passwordless", + "providerId": "webauthn-register-passwordless", + "enabled": true, + "defaultAction": false, + "priority": 90, + "config": {} + }, + { + "alias": "VERIFY_PROFILE", + "name": "Verify Profile", + "providerId": "VERIFY_PROFILE", + "enabled": true, + "defaultAction": false, + "priority": 100, + "config": {} + }, + { + "alias": "delete_credential", + "name": "Delete Credential", + "providerId": "delete_credential", + "enabled": true, + "defaultAction": false, + "priority": 110, + "config": {} + }, + { + "alias": "idp_link", + "name": "Linking Identity Provider", + "providerId": "idp_link", + "enabled": true, + "defaultAction": false, + "priority": 120, + "config": {} + }, + { + "alias": "CONFIGURE_RECOVERY_AUTHN_CODES", + "name": "Recovery Authentication Codes", + "providerId": "CONFIGURE_RECOVERY_AUTHN_CODES", + "enabled": true, + "defaultAction": false, + "priority": 130, + "config": {} + }, + { + "alias": "update_user_locale", + "name": "Update User Locale", + "providerId": "update_user_locale", + "enabled": true, + "defaultAction": false, + "priority": 1000, + "config": {} + } + ], + "browserFlow": "browser", + "registrationFlow": "registration", + "directGrantFlow": "direct grant", + "resetCredentialsFlow": "reset credentials", + "clientAuthenticationFlow": "clients", + "dockerAuthenticationFlow": "docker auth", + "firstBrokerLoginFlow": "first broker login", + "attributes": { + "cibaBackchannelTokenDeliveryMode": "poll", + "cibaAuthRequestedUserHint": "login_hint", + "clientOfflineSessionMaxLifespan": "0", + "oauth2DevicePollingInterval": "5", + "clientSessionIdleTimeout": "0", + "clientOfflineSessionIdleTimeout": "0", + "cibaInterval": "5", + "realmReusableOtpCode": "false", + "cibaExpiresIn": "120", + "oauth2DeviceCodeLifespan": "600", + "saml.signature.algorithm": "", + "parRequestUriLifespan": "60", + "clientSessionMaxLifespan": "0", + "frontendUrl": "", + "acr.loa.map": "{}" + }, + "keycloakVersion": "26.5.4", + "userManagedAccessAllowed": false, + "organizationsEnabled": false, + "verifiableCredentialsEnabled": false, + "adminPermissionsEnabled": false, + "clientProfiles": { + "profiles": [] + }, + "clientPolicies": { + "policies": [] + } +} diff --git a/seeds/keycloak/portabase.json b/seeds/keycloak/portabase.json deleted file mode 100644 index 0131f3e9..00000000 --- a/seeds/keycloak/portabase.json +++ /dev/null @@ -1,2216 +0,0 @@ -{ - "id" : "fb9cf3e7-ba35-48d2-b40e-8a48a98f8acd", - "realm" : "master", - "displayName" : "Portabase", - "displayNameHtml" : "
Portabase
", - "notBefore" : 0, - "defaultSignatureAlgorithm" : "RS256", - "revokeRefreshToken" : false, - "refreshTokenMaxReuse" : 0, - "accessTokenLifespan" : 60, - "accessTokenLifespanForImplicitFlow" : 900, - "ssoSessionIdleTimeout" : 1800, - "ssoSessionMaxLifespan" : 36000, - "ssoSessionIdleTimeoutRememberMe" : 0, - "ssoSessionMaxLifespanRememberMe" : 0, - "offlineSessionIdleTimeout" : 2592000, - "offlineSessionMaxLifespanEnabled" : false, - "offlineSessionMaxLifespan" : 5184000, - "clientSessionIdleTimeout" : 0, - "clientSessionMaxLifespan" : 0, - "clientOfflineSessionIdleTimeout" : 0, - "clientOfflineSessionMaxLifespan" : 0, - "accessCodeLifespan" : 60, - "accessCodeLifespanUserAction" : 300, - "accessCodeLifespanLogin" : 1800, - "actionTokenGeneratedByAdminLifespan" : 43200, - "actionTokenGeneratedByUserLifespan" : 300, - "oauth2DeviceCodeLifespan" : 600, - "oauth2DevicePollingInterval" : 5, - "enabled" : true, - "sslRequired" : "external", - "registrationAllowed" : false, - "registrationEmailAsUsername" : false, - "rememberMe" : false, - "verifyEmail" : false, - "loginWithEmailAllowed" : true, - "duplicateEmailsAllowed" : false, - "resetPasswordAllowed" : false, - "editUsernameAllowed" : false, - "bruteForceProtected" : false, - "permanentLockout" : false, - "maxTemporaryLockouts" : 0, - "bruteForceStrategy" : "MULTIPLE", - "maxFailureWaitSeconds" : 900, - "minimumQuickLoginWaitSeconds" : 60, - "waitIncrementSeconds" : 60, - "quickLoginCheckMilliSeconds" : 1000, - "maxDeltaTimeSeconds" : 43200, - "failureFactor" : 30, - "roles" : { - "realm" : [ { - "id" : "e2068803-d2fb-4955-928d-35afa1b552cf", - "name" : "admin", - "description" : "${role_admin}", - "composite" : true, - "composites" : { - "realm" : [ "create-realm" ], - "client" : { - "master-realm" : [ "create-client", "view-users", "query-realms", "view-authorization", "view-identity-providers", "query-users", "query-groups", "manage-users", "manage-events", "view-clients", "view-realm", "manage-authorization", "manage-realm", "view-events", "impersonation", "query-clients", "manage-identity-providers", "manage-clients" ] - } - }, - "clientRole" : false, - "containerId" : "fb9cf3e7-ba35-48d2-b40e-8a48a98f8acd", - "attributes" : { } - }, { - "id" : "1c6d4bb7-a9f0-4bf8-9780-d97e99de3c3d", - "name" : "default-roles-master", - "description" : "${role_default-roles}", - "composite" : true, - "composites" : { - "realm" : [ "offline_access", "uma_authorization" ], - "client" : { - "account" : [ "view-profile", "manage-account" ] - } - }, - "clientRole" : false, - "containerId" : "fb9cf3e7-ba35-48d2-b40e-8a48a98f8acd", - "attributes" : { } - }, { - "id" : "26712408-59c8-463f-bce1-d8f961b4bf51", - "name" : "create-realm", - "description" : "${role_create-realm}", - "composite" : false, - "clientRole" : false, - "containerId" : "fb9cf3e7-ba35-48d2-b40e-8a48a98f8acd", - "attributes" : { } - }, { - "id" : "546e3598-8de5-4e05-8823-5abe2efebf43", - "name" : "offline_access", - "description" : "${role_offline-access}", - "composite" : false, - "clientRole" : false, - "containerId" : "fb9cf3e7-ba35-48d2-b40e-8a48a98f8acd", - "attributes" : { } - }, { - "id" : "b8bf1864-b840-4377-9f6f-373a7f645dcc", - "name" : "uma_authorization", - "description" : "${role_uma_authorization}", - "composite" : false, - "clientRole" : false, - "containerId" : "fb9cf3e7-ba35-48d2-b40e-8a48a98f8acd", - "attributes" : { } - } ], - "client" : { - "portabase" : [ { - "id" : "180dc40c-1c09-49a2-a86b-782f1a2182c4", - "name" : "uma_protection", - "composite" : false, - "clientRole" : true, - "containerId" : "7b8c7b35-8ffd-47b3-82b5-b152b521cd77", - "attributes" : { } - } ], - "security-admin-console" : [ ], - "admin-cli" : [ ], - "account-console" : [ ], - "broker" : [ { - "id" : "695d4423-e83d-403f-baf1-35076a456366", - "name" : "read-token", - "description" : "${role_read-token}", - "composite" : false, - "clientRole" : true, - "containerId" : "af9b43bb-1902-4ed8-b4f6-caa7ec27efd5", - "attributes" : { } - } ], - "master-realm" : [ { - "id" : "27fbd47b-0350-4f11-a83c-a0134f9079b1", - "name" : "create-client", - "description" : "${role_create-client}", - "composite" : false, - "clientRole" : true, - "containerId" : "6022c206-5f1f-45b7-af07-74ce6804cbc7", - "attributes" : { } - }, { - "id" : "672a49fe-69f9-4371-b945-8bb539a76fa7", - "name" : "view-users", - "description" : "${role_view-users}", - "composite" : true, - "composites" : { - "client" : { - "master-realm" : [ "query-users", "query-groups" ] - } - }, - "clientRole" : true, - "containerId" : "6022c206-5f1f-45b7-af07-74ce6804cbc7", - "attributes" : { } - }, { - "id" : "3df2803b-1be3-4446-ad55-de4a1654f0f1", - "name" : "query-realms", - "description" : "${role_query-realms}", - "composite" : false, - "clientRole" : true, - "containerId" : "6022c206-5f1f-45b7-af07-74ce6804cbc7", - "attributes" : { } - }, { - "id" : "963cdf89-9884-493f-b553-d095a190db70", - "name" : "view-authorization", - "description" : "${role_view-authorization}", - "composite" : false, - "clientRole" : true, - "containerId" : "6022c206-5f1f-45b7-af07-74ce6804cbc7", - "attributes" : { } - }, { - "id" : "0c7db742-fb5a-41ca-816a-ade107446ee8", - "name" : "view-identity-providers", - "description" : "${role_view-identity-providers}", - "composite" : false, - "clientRole" : true, - "containerId" : "6022c206-5f1f-45b7-af07-74ce6804cbc7", - "attributes" : { } - }, { - "id" : "9741b23a-9efa-4fbc-bfae-683f84997e8b", - "name" : "query-users", - "description" : "${role_query-users}", - "composite" : false, - "clientRole" : true, - "containerId" : "6022c206-5f1f-45b7-af07-74ce6804cbc7", - "attributes" : { } - }, { - "id" : "65439bfe-de32-499f-9f68-44ecd96ff49c", - "name" : "query-groups", - "description" : "${role_query-groups}", - "composite" : false, - "clientRole" : true, - "containerId" : "6022c206-5f1f-45b7-af07-74ce6804cbc7", - "attributes" : { } - }, { - "id" : "ecaab7fc-da4b-4613-8b7c-959ed4e225cc", - "name" : "manage-events", - "description" : "${role_manage-events}", - "composite" : false, - "clientRole" : true, - "containerId" : "6022c206-5f1f-45b7-af07-74ce6804cbc7", - "attributes" : { } - }, { - "id" : "e260a5cc-91c5-41db-86f8-01b494c4e66b", - "name" : "manage-users", - "description" : "${role_manage-users}", - "composite" : false, - "clientRole" : true, - "containerId" : "6022c206-5f1f-45b7-af07-74ce6804cbc7", - "attributes" : { } - }, { - "id" : "db6d0e0a-4193-4f6a-9343-d1f182fdda15", - "name" : "view-clients", - "description" : "${role_view-clients}", - "composite" : true, - "composites" : { - "client" : { - "master-realm" : [ "query-clients" ] - } - }, - "clientRole" : true, - "containerId" : "6022c206-5f1f-45b7-af07-74ce6804cbc7", - "attributes" : { } - }, { - "id" : "f8bc7291-d450-48f6-820e-67a8ab2a6b5b", - "name" : "view-realm", - "description" : "${role_view-realm}", - "composite" : false, - "clientRole" : true, - "containerId" : "6022c206-5f1f-45b7-af07-74ce6804cbc7", - "attributes" : { } - }, { - "id" : "3444137f-0938-4340-9d5b-ceef2f7b1e97", - "name" : "manage-authorization", - "description" : "${role_manage-authorization}", - "composite" : false, - "clientRole" : true, - "containerId" : "6022c206-5f1f-45b7-af07-74ce6804cbc7", - "attributes" : { } - }, { - "id" : "a39bf436-1fa4-42d2-80ed-a010b43853aa", - "name" : "manage-realm", - "description" : "${role_manage-realm}", - "composite" : false, - "clientRole" : true, - "containerId" : "6022c206-5f1f-45b7-af07-74ce6804cbc7", - "attributes" : { } - }, { - "id" : "baa18f46-7d1d-4298-b3b0-9b0ecb945557", - "name" : "view-events", - "description" : "${role_view-events}", - "composite" : false, - "clientRole" : true, - "containerId" : "6022c206-5f1f-45b7-af07-74ce6804cbc7", - "attributes" : { } - }, { - "id" : "91298b5d-5182-4056-8240-8fdb188f865e", - "name" : "impersonation", - "description" : "${role_impersonation}", - "composite" : false, - "clientRole" : true, - "containerId" : "6022c206-5f1f-45b7-af07-74ce6804cbc7", - "attributes" : { } - }, { - "id" : "a5a58b82-32eb-4c78-993a-cf9c7e37eabb", - "name" : "query-clients", - "description" : "${role_query-clients}", - "composite" : false, - "clientRole" : true, - "containerId" : "6022c206-5f1f-45b7-af07-74ce6804cbc7", - "attributes" : { } - }, { - "id" : "c8c85c54-7bfb-4d45-8ccc-6253e429f649", - "name" : "manage-clients", - "description" : "${role_manage-clients}", - "composite" : false, - "clientRole" : true, - "containerId" : "6022c206-5f1f-45b7-af07-74ce6804cbc7", - "attributes" : { } - }, { - "id" : "baed486e-dc69-44a9-9630-9a88987142ee", - "name" : "manage-identity-providers", - "description" : "${role_manage-identity-providers}", - "composite" : false, - "clientRole" : true, - "containerId" : "6022c206-5f1f-45b7-af07-74ce6804cbc7", - "attributes" : { } - } ], - "account" : [ { - "id" : "8085c714-b840-4539-823d-a8df8bab3db3", - "name" : "view-applications", - "description" : "${role_view-applications}", - "composite" : false, - "clientRole" : true, - "containerId" : "18b5dfb2-44d4-448e-98df-9652daef1a22", - "attributes" : { } - }, { - "id" : "12089b7a-e685-4c87-bb81-997ecc04ed17", - "name" : "view-profile", - "description" : "${role_view-profile}", - "composite" : false, - "clientRole" : true, - "containerId" : "18b5dfb2-44d4-448e-98df-9652daef1a22", - "attributes" : { } - }, { - "id" : "ea9e72d8-1d23-4f50-86b3-1795067da29f", - "name" : "view-groups", - "description" : "${role_view-groups}", - "composite" : false, - "clientRole" : true, - "containerId" : "18b5dfb2-44d4-448e-98df-9652daef1a22", - "attributes" : { } - }, { - "id" : "2bd8114a-75cf-4d6b-8f42-229f6a5c66a0", - "name" : "delete-account", - "description" : "${role_delete-account}", - "composite" : false, - "clientRole" : true, - "containerId" : "18b5dfb2-44d4-448e-98df-9652daef1a22", - "attributes" : { } - }, { - "id" : "7303b334-e9e0-4236-89b8-e1c9d6562138", - "name" : "view-consent", - "description" : "${role_view-consent}", - "composite" : false, - "clientRole" : true, - "containerId" : "18b5dfb2-44d4-448e-98df-9652daef1a22", - "attributes" : { } - }, { - "id" : "12c6fe35-ec80-4ca2-b2a8-9d6eae4c3a92", - "name" : "manage-account-links", - "description" : "${role_manage-account-links}", - "composite" : false, - "clientRole" : true, - "containerId" : "18b5dfb2-44d4-448e-98df-9652daef1a22", - "attributes" : { } - }, { - "id" : "e56b828b-7d5d-49a2-b686-c1bd535900ac", - "name" : "manage-consent", - "description" : "${role_manage-consent}", - "composite" : true, - "composites" : { - "client" : { - "account" : [ "view-consent" ] - } - }, - "clientRole" : true, - "containerId" : "18b5dfb2-44d4-448e-98df-9652daef1a22", - "attributes" : { } - }, { - "id" : "98e19002-4144-48fc-bcca-4ac6f19a6a37", - "name" : "manage-account", - "description" : "${role_manage-account}", - "composite" : true, - "composites" : { - "client" : { - "account" : [ "manage-account-links" ] - } - }, - "clientRole" : true, - "containerId" : "18b5dfb2-44d4-448e-98df-9652daef1a22", - "attributes" : { } - } ] - } - }, - "groups" : [ { - "id" : "f523647e-76b3-493f-bb1e-f2a3f7deebdb", - "name" : "Admin", - "description" : "", - "path" : "/Admin", - "subGroups" : [ ], - "attributes" : { }, - "realmRoles" : [ "admin" ], - "clientRoles" : { } - }, { - "id" : "f3b7286d-8169-41eb-b3a2-6241bf58907d", - "name" : "Default", - "description" : "", - "path" : "/Default", - "subGroups" : [ ], - "attributes" : { }, - "realmRoles" : [ ], - "clientRoles" : { } - }, { - "id" : "eda8d5c9-d29a-4b35-9372-2b088b9a9d8d", - "name" : "Pending", - "description" : "", - "path" : "/Pending", - "subGroups" : [ ], - "attributes" : { }, - "realmRoles" : [ ], - "clientRoles" : { } - } ], - "defaultRole" : { - "id" : "1c6d4bb7-a9f0-4bf8-9780-d97e99de3c3d", - "name" : "default-roles-master", - "description" : "${role_default-roles}", - "composite" : true, - "clientRole" : false, - "containerId" : "fb9cf3e7-ba35-48d2-b40e-8a48a98f8acd" - }, - "requiredCredentials" : [ "password" ], - "otpPolicyType" : "totp", - "otpPolicyAlgorithm" : "HmacSHA1", - "otpPolicyInitialCounter" : 0, - "otpPolicyDigits" : 6, - "otpPolicyLookAheadWindow" : 1, - "otpPolicyPeriod" : 30, - "otpPolicyCodeReusable" : false, - "otpSupportedApplications" : [ "totpAppFreeOTPName", "totpAppGoogleName", "totpAppMicrosoftAuthenticatorName" ], - "localizationTexts" : { }, - "webAuthnPolicyRpEntityName" : "keycloak", - "webAuthnPolicySignatureAlgorithms" : [ "ES256", "RS256" ], - "webAuthnPolicyRpId" : "", - "webAuthnPolicyAttestationConveyancePreference" : "not specified", - "webAuthnPolicyAuthenticatorAttachment" : "not specified", - "webAuthnPolicyRequireResidentKey" : "not specified", - "webAuthnPolicyUserVerificationRequirement" : "not specified", - "webAuthnPolicyCreateTimeout" : 0, - "webAuthnPolicyAvoidSameAuthenticatorRegister" : false, - "webAuthnPolicyAcceptableAaguids" : [ ], - "webAuthnPolicyExtraOrigins" : [ ], - "webAuthnPolicyPasswordlessRpEntityName" : "keycloak", - "webAuthnPolicyPasswordlessSignatureAlgorithms" : [ "ES256", "RS256" ], - "webAuthnPolicyPasswordlessRpId" : "", - "webAuthnPolicyPasswordlessAttestationConveyancePreference" : "not specified", - "webAuthnPolicyPasswordlessAuthenticatorAttachment" : "not specified", - "webAuthnPolicyPasswordlessRequireResidentKey" : "Yes", - "webAuthnPolicyPasswordlessUserVerificationRequirement" : "required", - "webAuthnPolicyPasswordlessCreateTimeout" : 0, - "webAuthnPolicyPasswordlessAvoidSameAuthenticatorRegister" : false, - "webAuthnPolicyPasswordlessAcceptableAaguids" : [ ], - "webAuthnPolicyPasswordlessExtraOrigins" : [ ], - "users" : [ { - "id" : "9bd127a6-a29f-4a3d-a530-9b7284cf9770", - "username" : "admin", - "emailVerified" : false, - "attributes" : { - "is_temporary_admin" : [ "true" ] - }, - "enabled" : true, - "createdTimestamp" : 1772178626982, - "totp" : false, - "credentials" : [ { - "id" : "731ce7c2-9141-4ff1-8856-3e8625cf1929", - "type" : "password", - "createdDate" : 1772178627073, - "secretData" : "{\"value\":\"quuOeVW9VVoilChYLmvjJWCnAM23OA/gK54tYoJ6atw=\",\"salt\":\"khqIggSOfCNLqP1i9qiwvQ==\",\"additionalParameters\":{}}", - "credentialData" : "{\"hashIterations\":5,\"algorithm\":\"argon2\",\"additionalParameters\":{\"hashLength\":[\"32\"],\"memory\":[\"7168\"],\"type\":[\"id\"],\"version\":[\"1.3\"],\"parallelism\":[\"1\"]}}" - } ], - "disableableCredentialTypes" : [ ], - "requiredActions" : [ ], - "realmRoles" : [ "admin", "default-roles-master" ], - "notBefore" : 0, - "groups" : [ ] - }, { - "id" : "c62607eb-fe31-4ea4-b8cb-56c37039c1b3", - "username" : "development", - "firstName" : "Tech", - "lastName" : "Soluce", - "email" : "development@soluce-technologies.com", - "emailVerified" : true, - "enabled" : true, - "createdTimestamp" : 1772179382148, - "totp" : false, - "credentials" : [ { - "id" : "b1cedcac-5207-4479-bc29-065ba849e414", - "type" : "password", - "userLabel" : "My password", - "createdDate" : 1772179391727, - "secretData" : "{\"value\":\"IXr6L3pvO2BAkn/cH3rh3v2tg1R83u2f8SWEZK2fq5E=\",\"salt\":\"XWV8/yKm7Rw/YXiwXZZUig==\",\"additionalParameters\":{}}", - "credentialData" : "{\"hashIterations\":5,\"algorithm\":\"argon2\",\"additionalParameters\":{\"hashLength\":[\"32\"],\"memory\":[\"7168\"],\"type\":[\"id\"],\"version\":[\"1.3\"],\"parallelism\":[\"1\"]}}" - } ], - "disableableCredentialTypes" : [ ], - "requiredActions" : [ ], - "realmRoles" : [ "admin", "default-roles-master" ], - "notBefore" : 0, - "groups" : [ "/Admin" ] - }, { - "id" : "718dfe46-dbef-41a3-9120-78aeac240431", - "username" : "service-account-portabase", - "emailVerified" : false, - "enabled" : true, - "createdTimestamp" : 1772177793553, - "totp" : false, - "serviceAccountClientId" : "portabase", - "credentials" : [ ], - "disableableCredentialTypes" : [ ], - "requiredActions" : [ ], - "realmRoles" : [ "default-roles-master" ], - "clientRoles" : { - "portabase" : [ "uma_protection" ] - }, - "notBefore" : 0, - "groups" : [ ] - } ], - "scopeMappings" : [ { - "clientScope" : "offline_access", - "roles" : [ "offline_access" ] - } ], - "clientScopeMappings" : { - "account" : [ { - "client" : "account-console", - "roles" : [ "manage-account", "view-groups" ] - } ] - }, - "clients" : [ { - "id" : "18b5dfb2-44d4-448e-98df-9652daef1a22", - "clientId" : "account", - "name" : "${client_account}", - "rootUrl" : "${authBaseUrl}", - "baseUrl" : "/realms/master/account/", - "surrogateAuthRequired" : false, - "enabled" : true, - "alwaysDisplayInConsole" : false, - "clientAuthenticatorType" : "client-secret", - "redirectUris" : [ "/realms/master/account/*" ], - "webOrigins" : [ ], - "notBefore" : 0, - "bearerOnly" : false, - "consentRequired" : false, - "standardFlowEnabled" : true, - "implicitFlowEnabled" : false, - "directAccessGrantsEnabled" : false, - "serviceAccountsEnabled" : false, - "publicClient" : true, - "frontchannelLogout" : false, - "protocol" : "openid-connect", - "attributes" : { - "realm_client" : "false", - "post.logout.redirect.uris" : "+" - }, - "authenticationFlowBindingOverrides" : { }, - "fullScopeAllowed" : false, - "nodeReRegistrationTimeout" : 0, - "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "basic", "email" ], - "optionalClientScopes" : [ "address", "phone", "organization", "offline_access", "microprofile-jwt" ] - }, { - "id" : "b07531b2-43f4-4487-8068-46001dd1abf7", - "clientId" : "account-console", - "name" : "${client_account-console}", - "rootUrl" : "${authBaseUrl}", - "baseUrl" : "/realms/master/account/", - "surrogateAuthRequired" : false, - "enabled" : true, - "alwaysDisplayInConsole" : false, - "clientAuthenticatorType" : "client-secret", - "redirectUris" : [ "/realms/master/account/*" ], - "webOrigins" : [ ], - "notBefore" : 0, - "bearerOnly" : false, - "consentRequired" : false, - "standardFlowEnabled" : true, - "implicitFlowEnabled" : false, - "directAccessGrantsEnabled" : false, - "serviceAccountsEnabled" : false, - "publicClient" : true, - "frontchannelLogout" : false, - "protocol" : "openid-connect", - "attributes" : { - "realm_client" : "false", - "post.logout.redirect.uris" : "+", - "pkce.code.challenge.method" : "S256" - }, - "authenticationFlowBindingOverrides" : { }, - "fullScopeAllowed" : false, - "nodeReRegistrationTimeout" : 0, - "protocolMappers" : [ { - "id" : "ad646174-e521-4bd5-8f78-eb8eed2befb8", - "name" : "audience resolve", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-audience-resolve-mapper", - "consentRequired" : false, - "config" : { } - } ], - "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "basic", "email" ], - "optionalClientScopes" : [ "address", "phone", "organization", "offline_access", "microprofile-jwt" ] - }, { - "id" : "8ad89892-6f85-4f07-b6b6-1fcb1eda58e2", - "clientId" : "admin-cli", - "name" : "${client_admin-cli}", - "surrogateAuthRequired" : false, - "enabled" : true, - "alwaysDisplayInConsole" : false, - "clientAuthenticatorType" : "client-secret", - "redirectUris" : [ ], - "webOrigins" : [ ], - "notBefore" : 0, - "bearerOnly" : false, - "consentRequired" : false, - "standardFlowEnabled" : false, - "implicitFlowEnabled" : false, - "directAccessGrantsEnabled" : true, - "serviceAccountsEnabled" : false, - "publicClient" : true, - "frontchannelLogout" : false, - "protocol" : "openid-connect", - "attributes" : { - "realm_client" : "false", - "client.use.lightweight.access.token.enabled" : "true", - "post.logout.redirect.uris" : "+" - }, - "authenticationFlowBindingOverrides" : { }, - "fullScopeAllowed" : true, - "nodeReRegistrationTimeout" : 0, - "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "basic", "email" ], - "optionalClientScopes" : [ "address", "phone", "organization", "offline_access", "microprofile-jwt" ] - }, { - "id" : "af9b43bb-1902-4ed8-b4f6-caa7ec27efd5", - "clientId" : "broker", - "name" : "${client_broker}", - "surrogateAuthRequired" : false, - "enabled" : true, - "alwaysDisplayInConsole" : false, - "clientAuthenticatorType" : "client-secret", - "redirectUris" : [ ], - "webOrigins" : [ ], - "notBefore" : 0, - "bearerOnly" : true, - "consentRequired" : false, - "standardFlowEnabled" : true, - "implicitFlowEnabled" : false, - "directAccessGrantsEnabled" : false, - "serviceAccountsEnabled" : false, - "publicClient" : false, - "frontchannelLogout" : false, - "protocol" : "openid-connect", - "attributes" : { - "realm_client" : "true", - "post.logout.redirect.uris" : "+" - }, - "authenticationFlowBindingOverrides" : { }, - "fullScopeAllowed" : false, - "nodeReRegistrationTimeout" : 0, - "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "basic", "email" ], - "optionalClientScopes" : [ "address", "phone", "organization", "offline_access", "microprofile-jwt" ] - }, { - "id" : "6022c206-5f1f-45b7-af07-74ce6804cbc7", - "clientId" : "master-realm", - "name" : "master Realm", - "surrogateAuthRequired" : false, - "enabled" : true, - "alwaysDisplayInConsole" : false, - "clientAuthenticatorType" : "client-secret", - "redirectUris" : [ ], - "webOrigins" : [ ], - "notBefore" : 0, - "bearerOnly" : true, - "consentRequired" : false, - "standardFlowEnabled" : true, - "implicitFlowEnabled" : false, - "directAccessGrantsEnabled" : false, - "serviceAccountsEnabled" : false, - "publicClient" : false, - "frontchannelLogout" : false, - "protocol" : "openid-connect", - "attributes" : { - "realm_client" : "true", - "post.logout.redirect.uris" : "+" - }, - "authenticationFlowBindingOverrides" : { }, - "fullScopeAllowed" : false, - "nodeReRegistrationTimeout" : 0, - "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "basic", "email" ], - "optionalClientScopes" : [ "address", "phone", "organization", "offline_access", "microprofile-jwt" ] - }, { - "id" : "7b8c7b35-8ffd-47b3-82b5-b152b521cd77", - "clientId" : "portabase", - "name" : "Portabase", - "description" : "", - "rootUrl" : "http://localhost:8887", - "adminUrl" : "http://localhost:8887", - "baseUrl" : "http://localhost:8887", - "surrogateAuthRequired" : false, - "enabled" : true, - "alwaysDisplayInConsole" : false, - "clientAuthenticatorType" : "client-secret", - "secret" : "**********", - "redirectUris" : [ "http://localhost:8887/api/auth/sso/callback/keycloak" ], - "webOrigins" : [ "http://localhost:8887" ], - "notBefore" : 0, - "bearerOnly" : false, - "consentRequired" : false, - "standardFlowEnabled" : true, - "implicitFlowEnabled" : false, - "directAccessGrantsEnabled" : false, - "serviceAccountsEnabled" : true, - "authorizationServicesEnabled" : true, - "publicClient" : false, - "frontchannelLogout" : true, - "protocol" : "openid-connect", - "attributes" : { - "realm_client" : "false", - "oidc.ciba.grant.enabled" : "false", - "client.secret.creation.time" : "1772177793", - "backchannel.logout.session.required" : "true", - "standard.token.exchange.enabled" : "false", - "post.logout.redirect.uris" : "http://localhost:8887", - "oauth2.device.authorization.grant.enabled" : "true", - "pkce.code.challenge.method" : "S256", - "backchannel.logout.revoke.offline.tokens" : "false", - "dpop.bound.access.tokens" : "false" - }, - "authenticationFlowBindingOverrides" : { }, - "fullScopeAllowed" : true, - "nodeReRegistrationTimeout" : -1, - "protocolMappers" : [ { - "id" : "3e8f8909-e718-4ebe-80b9-ed6501e94cbe", - "name" : "groups", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-group-membership-mapper", - "consentRequired" : false, - "config" : { - "full.path" : "false", - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "multivalued" : "true", - "id.token.claim" : "true", - "lightweight.claim" : "false", - "access.token.claim" : "true", - "claim.name" : "groups" - } - } ], - "defaultClientScopes" : [ "web-origins", "service_account", "acr", "profile", "roles", "basic", "email" ], - "optionalClientScopes" : [ "address", "phone", "organization", "offline_access", "microprofile-jwt" ], - "authorizationSettings" : { - "allowRemoteResourceManagement" : true, - "policyEnforcementMode" : "ENFORCING", - "resources" : [ ], - "policies" : [ ], - "scopes" : [ ], - "decisionStrategy" : "UNANIMOUS" - } - }, { - "id" : "320637e2-0aa2-4601-8862-fe465e887167", - "clientId" : "security-admin-console", - "name" : "${client_security-admin-console}", - "rootUrl" : "${authAdminUrl}", - "baseUrl" : "/admin/master/console/", - "surrogateAuthRequired" : false, - "enabled" : true, - "alwaysDisplayInConsole" : false, - "clientAuthenticatorType" : "client-secret", - "redirectUris" : [ "/admin/master/console/*" ], - "webOrigins" : [ "+" ], - "notBefore" : 0, - "bearerOnly" : false, - "consentRequired" : false, - "standardFlowEnabled" : true, - "implicitFlowEnabled" : false, - "directAccessGrantsEnabled" : false, - "serviceAccountsEnabled" : false, - "publicClient" : true, - "frontchannelLogout" : false, - "protocol" : "openid-connect", - "attributes" : { - "realm_client" : "false", - "client.use.lightweight.access.token.enabled" : "true", - "post.logout.redirect.uris" : "+", - "pkce.code.challenge.method" : "S256" - }, - "authenticationFlowBindingOverrides" : { }, - "fullScopeAllowed" : true, - "nodeReRegistrationTimeout" : 0, - "protocolMappers" : [ { - "id" : "59aa4c07-4e3b-4abd-947c-94e4840aab0f", - "name" : "locale", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "locale", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "locale", - "jsonType.label" : "String" - } - } ], - "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "basic", "email" ], - "optionalClientScopes" : [ "address", "phone", "organization", "offline_access", "microprofile-jwt" ] - } ], - "clientScopes" : [ { - "id" : "1c5c7377-5552-4f36-8073-5b7c50ba0b58", - "name" : "microprofile-jwt", - "description" : "Microprofile - JWT built-in scope", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "true", - "display.on.consent.screen" : "false" - }, - "protocolMappers" : [ { - "id" : "d26ac380-69ea-47c8-9342-f8108b8b1c7a", - "name" : "upn", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "username", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "upn", - "jsonType.label" : "String" - } - }, { - "id" : "47e583ab-95d7-4b9e-83c3-37689f6808ff", - "name" : "groups", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-realm-role-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "multivalued" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "foo", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "groups", - "jsonType.label" : "String" - } - } ] - }, { - "id" : "b92d26a9-7930-4f6c-add6-082374546966", - "name" : "roles", - "description" : "OpenID Connect scope for add user roles to the access token", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "false", - "consent.screen.text" : "${rolesScopeConsentText}", - "display.on.consent.screen" : "true" - }, - "protocolMappers" : [ { - "id" : "0bf151da-a754-460b-bc53-1d78249c3ac1", - "name" : "audience resolve", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-audience-resolve-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "access.token.claim" : "true" - } - }, { - "id" : "a806de62-0e08-456f-9e16-76e8b186c724", - "name" : "realm roles", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-realm-role-mapper", - "consentRequired" : false, - "config" : { - "user.attribute" : "foo", - "introspection.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "realm_access.roles", - "jsonType.label" : "String", - "multivalued" : "true" - } - }, { - "id" : "9063017e-d52e-4624-acff-22833103a577", - "name" : "client roles", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-client-role-mapper", - "consentRequired" : false, - "config" : { - "user.attribute" : "foo", - "introspection.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "resource_access.${client_id}.roles", - "jsonType.label" : "String", - "multivalued" : "true" - } - } ] - }, { - "id" : "dce5baba-c90f-4347-8b84-3162868c7ffa", - "name" : "basic", - "description" : "OpenID Connect scope for add all basic claims to the token", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "false", - "display.on.consent.screen" : "false" - }, - "protocolMappers" : [ { - "id" : "1457d324-6006-4141-b8a7-c45d7ab8814c", - "name" : "auth_time", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usersessionmodel-note-mapper", - "consentRequired" : false, - "config" : { - "user.session.note" : "AUTH_TIME", - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "auth_time", - "jsonType.label" : "long" - } - }, { - "id" : "0d3b31e5-31f5-4778-adbd-36a06b301af6", - "name" : "sub", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-sub-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "access.token.claim" : "true" - } - } ] - }, { - "id" : "f65dc085-328e-41d8-a3f3-933eed32c804", - "name" : "email", - "description" : "OpenID Connect built-in scope: email", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "true", - "consent.screen.text" : "${emailScopeConsentText}", - "display.on.consent.screen" : "true" - }, - "protocolMappers" : [ { - "id" : "084130d1-642b-4b44-8643-60962e0a01d0", - "name" : "email", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "email", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "email", - "jsonType.label" : "String" - } - }, { - "id" : "894569d9-bf66-425e-a07e-892e97d4ac3d", - "name" : "email verified", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-property-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "emailVerified", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "email_verified", - "jsonType.label" : "boolean" - } - } ] - }, { - "id" : "ae961041-beb6-4d8e-b9f2-b0a1f88423f6", - "name" : "address", - "description" : "OpenID Connect built-in scope: address", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "true", - "consent.screen.text" : "${addressScopeConsentText}", - "display.on.consent.screen" : "true" - }, - "protocolMappers" : [ { - "id" : "84d4f934-f761-4741-bca5-b48581c6b2de", - "name" : "address", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-address-mapper", - "consentRequired" : false, - "config" : { - "user.attribute.formatted" : "formatted", - "user.attribute.country" : "country", - "introspection.token.claim" : "true", - "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" : "5e1cf5ad-00e6-4092-b8aa-76bb293a3efa", - "name" : "saml_organization", - "description" : "Organization Membership", - "protocol" : "saml", - "attributes" : { - "display.on.consent.screen" : "false" - }, - "protocolMappers" : [ { - "id" : "10efbc9e-4f21-42b7-832b-f5de7b3a666c", - "name" : "organization", - "protocol" : "saml", - "protocolMapper" : "saml-organization-membership-mapper", - "consentRequired" : false, - "config" : { } - } ] - }, { - "id" : "a1c75182-21f3-4e70-83f4-67e42f28267c", - "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", - "consent.screen.text" : "", - "display.on.consent.screen" : "false" - }, - "protocolMappers" : [ { - "id" : "1a570c6f-6f1a-4503-8677-5762b7b5578a", - "name" : "allowed web origins", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-allowed-origins-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "access.token.claim" : "true" - } - } ] - }, { - "id" : "4e350025-c16f-4a34-b132-4c6c07d0d90f", - "name" : "profile", - "description" : "OpenID Connect built-in scope: profile", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "true", - "consent.screen.text" : "${profileScopeConsentText}", - "display.on.consent.screen" : "true" - }, - "protocolMappers" : [ { - "id" : "7b1a561c-f0d0-4979-ab02-0e9d564cb5af", - "name" : "middle name", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "middleName", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "middle_name", - "jsonType.label" : "String" - } - }, { - "id" : "ed49a16e-928f-4882-a8b6-835b83445349", - "name" : "zoneinfo", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "zoneinfo", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "zoneinfo", - "jsonType.label" : "String" - } - }, { - "id" : "0fea1c8d-77a9-4325-a414-ca503a702ea1", - "name" : "family name", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "lastName", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "family_name", - "jsonType.label" : "String" - } - }, { - "id" : "4ec1df3c-803c-4b3d-a96d-054f17b3745c", - "name" : "gender", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "gender", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "gender", - "jsonType.label" : "String" - } - }, { - "id" : "b066efb7-76f4-4a42-97ae-39cb8883898a", - "name" : "nickname", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "nickname", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "nickname", - "jsonType.label" : "String" - } - }, { - "id" : "0ef7cb1a-75f4-4b57-8614-3d35d7f93fc5", - "name" : "birthdate", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "birthdate", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "birthdate", - "jsonType.label" : "String" - } - }, { - "id" : "dd8c2607-67ab-4f25-96cc-19c9751a0e03", - "name" : "profile", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "profile", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "profile", - "jsonType.label" : "String" - } - }, { - "id" : "f2fdb527-5bb8-4c41-a260-7b8f2653baa8", - "name" : "updated at", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "updatedAt", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "updated_at", - "jsonType.label" : "long" - } - }, { - "id" : "672a0701-67a0-4aa4-bbeb-93fa325d2921", - "name" : "username", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "username", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "preferred_username", - "jsonType.label" : "String" - } - }, { - "id" : "a3ca4541-9326-4b34-b59d-5f6f366e2ff9", - "name" : "website", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "website", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "website", - "jsonType.label" : "String" - } - }, { - "id" : "ccdc393d-6aee-4c88-b071-b708f4cf2b05", - "name" : "locale", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "locale", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "locale", - "jsonType.label" : "String" - } - }, { - "id" : "cbf3d8ee-c2d9-445d-8662-279fd1160c80", - "name" : "full name", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-full-name-mapper", - "consentRequired" : false, - "config" : { - "id.token.claim" : "true", - "introspection.token.claim" : "true", - "access.token.claim" : "true", - "userinfo.token.claim" : "true" - } - }, { - "id" : "fc8b06a9-e4fc-4381-830a-2e03f8982ff6", - "name" : "given name", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "firstName", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "given_name", - "jsonType.label" : "String" - } - }, { - "id" : "a46cc2ac-d92c-4b61-b119-910b4e96e456", - "name" : "picture", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "picture", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "picture", - "jsonType.label" : "String" - } - } ] - }, { - "id" : "2b7175c7-d59b-4dea-9759-405299298c21", - "name" : "organization", - "description" : "Additional claims about the organization a subject belongs to", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "true", - "consent.screen.text" : "${organizationScopeConsentText}", - "display.on.consent.screen" : "true" - }, - "protocolMappers" : [ { - "id" : "cd6a70e3-ebb8-4892-975e-4bece535c387", - "name" : "organization", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-organization-membership-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "multivalued" : "true", - "userinfo.token.claim" : "true", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "organization", - "jsonType.label" : "String" - } - } ] - }, { - "id" : "074912fc-e8b4-4369-8842-d8e44479e5d7", - "name" : "role_list", - "description" : "SAML role list", - "protocol" : "saml", - "attributes" : { - "consent.screen.text" : "${samlRoleListScopeConsentText}", - "display.on.consent.screen" : "true" - }, - "protocolMappers" : [ { - "id" : "8e4761c8-96b5-422b-b9ef-f18970f9a677", - "name" : "role list", - "protocol" : "saml", - "protocolMapper" : "saml-role-list-mapper", - "consentRequired" : false, - "config" : { - "single" : "false", - "attribute.nameformat" : "Basic", - "attribute.name" : "Role" - } - } ] - }, { - "id" : "8b3b526e-ea3d-497a-b346-5852ddd29d01", - "name" : "service_account", - "description" : "Specific scope for a client enabled for service accounts", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "false", - "display.on.consent.screen" : "false" - }, - "protocolMappers" : [ { - "id" : "7e347974-b093-4a66-8fe0-8bdbab526232", - "name" : "Client Host", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usersessionmodel-note-mapper", - "consentRequired" : false, - "config" : { - "user.session.note" : "clientHost", - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "clientHost", - "jsonType.label" : "String" - } - }, { - "id" : "0a4fe9bc-c5b1-45fc-80c1-7de78eda92ab", - "name" : "Client IP Address", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usersessionmodel-note-mapper", - "consentRequired" : false, - "config" : { - "user.session.note" : "clientAddress", - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "clientAddress", - "jsonType.label" : "String" - } - }, { - "id" : "9b86ae58-d68d-4be7-9e48-3113a22caf5f", - "name" : "Client ID", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usersessionmodel-note-mapper", - "consentRequired" : false, - "config" : { - "user.session.note" : "client_id", - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "client_id", - "jsonType.label" : "String" - } - } ] - }, { - "id" : "09e32dbb-120d-44bc-89eb-803b2caf35fc", - "name" : "phone", - "description" : "OpenID Connect built-in scope: phone", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "true", - "consent.screen.text" : "${phoneScopeConsentText}", - "display.on.consent.screen" : "true" - }, - "protocolMappers" : [ { - "id" : "83dc1340-1f91-47eb-8bb5-d324084687f2", - "name" : "phone number verified", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "phoneNumberVerified", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "phone_number_verified", - "jsonType.label" : "boolean" - } - }, { - "id" : "014dfa26-791d-414b-bfb6-0b08605bf30f", - "name" : "phone number", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-attribute-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "userinfo.token.claim" : "true", - "user.attribute" : "phoneNumber", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "phone_number", - "jsonType.label" : "String" - } - } ] - }, { - "id" : "e582a1a0-4ad9-4bbd-b41e-a503b435da3a", - "name" : "acr", - "description" : "OpenID Connect scope for add acr (authentication context class reference) to the token", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "false", - "display.on.consent.screen" : "false" - }, - "protocolMappers" : [ { - "id" : "f762a161-89f2-47a7-83cb-686362280a14", - "name" : "acr loa level", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-acr-mapper", - "consentRequired" : false, - "config" : { - "id.token.claim" : "true", - "introspection.token.claim" : "true", - "access.token.claim" : "true", - "userinfo.token.claim" : "true" - } - } ] - }, { - "id" : "b288b9a7-e8a8-4b0a-8972-af6083835858", - "name" : "offline_access", - "description" : "OpenID Connect built-in scope: offline_access", - "protocol" : "openid-connect", - "attributes" : { - "consent.screen.text" : "${offlineAccessScopeConsentText}", - "display.on.consent.screen" : "true" - } - } ], - "defaultDefaultClientScopes" : [ "role_list", "saml_organization", "profile", "email", "roles", "web-origins", "acr", "basic" ], - "defaultOptionalClientScopes" : [ "offline_access", "address", "phone", "microprofile-jwt", "organization" ], - "browserSecurityHeaders" : { - "contentSecurityPolicyReportOnly" : "", - "xContentTypeOptions" : "nosniff", - "referrerPolicy" : "no-referrer", - "xRobotsTag" : "none", - "xFrameOptions" : "SAMEORIGIN", - "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, - "identityProviders" : [ ], - "identityProviderMappers" : [ ], - "components" : { - "org.keycloak.services.clientregistration.policy.ClientRegistrationPolicy" : [ { - "id" : "c7eaaf0f-7650-4fc1-968a-889667759858", - "name" : "Allowed Client Scopes", - "providerId" : "allowed-client-templates", - "subType" : "anonymous", - "subComponents" : { }, - "config" : { - "allow-default-scopes" : [ "true" ] - } - }, { - "id" : "1f0661c3-25de-4ff6-92bf-dbb36264a71b", - "name" : "Max Clients Limit", - "providerId" : "max-clients", - "subType" : "anonymous", - "subComponents" : { }, - "config" : { - "max-clients" : [ "200" ] - } - }, { - "id" : "a889dafe-f9d0-4728-bdf5-9421d1077d1f", - "name" : "Consent Required", - "providerId" : "consent-required", - "subType" : "anonymous", - "subComponents" : { }, - "config" : { } - }, { - "id" : "4790f0a4-3450-4dbf-9153-0a1805e02d98", - "name" : "Allowed Registration Web Origins", - "providerId" : "registration-web-origins", - "subType" : "authenticated", - "subComponents" : { }, - "config" : { } - }, { - "id" : "4084bb89-71f9-4363-a5dd-dfa74e638d80", - "name" : "Allowed Protocol Mapper Types", - "providerId" : "allowed-protocol-mappers", - "subType" : "anonymous", - "subComponents" : { }, - "config" : { - "allowed-protocol-mapper-types" : [ "saml-user-attribute-mapper", "oidc-sha256-pairwise-sub-mapper", "oidc-address-mapper", "saml-role-list-mapper", "oidc-usermodel-attribute-mapper", "oidc-usermodel-property-mapper", "saml-user-property-mapper", "oidc-full-name-mapper" ] - } - }, { - "id" : "dba96a52-5743-47d2-b5f5-42452892b0bd", - "name" : "Allowed Client Scopes", - "providerId" : "allowed-client-templates", - "subType" : "authenticated", - "subComponents" : { }, - "config" : { - "allow-default-scopes" : [ "true" ] - } - }, { - "id" : "85b9458c-d890-48b8-87b7-7d3d5f331d5f", - "name" : "Allowed Protocol Mapper Types", - "providerId" : "allowed-protocol-mappers", - "subType" : "authenticated", - "subComponents" : { }, - "config" : { - "allowed-protocol-mapper-types" : [ "saml-user-attribute-mapper", "oidc-full-name-mapper", "saml-user-property-mapper", "oidc-usermodel-property-mapper", "oidc-sha256-pairwise-sub-mapper", "saml-role-list-mapper", "oidc-usermodel-attribute-mapper", "oidc-address-mapper" ] - } - }, { - "id" : "181cd220-28a9-4a5e-b2d7-c9092c26ef67", - "name" : "Full Scope Disabled", - "providerId" : "scope", - "subType" : "anonymous", - "subComponents" : { }, - "config" : { } - }, { - "id" : "be0c3922-b432-408c-935b-81923b0e7018", - "name" : "Trusted Hosts", - "providerId" : "trusted-hosts", - "subType" : "anonymous", - "subComponents" : { }, - "config" : { - "host-sending-registration-request-must-match" : [ "true" ], - "client-uris-must-match" : [ "true" ] - } - }, { - "id" : "81fe5bf6-4e18-40b8-8cf6-46028fb6704c", - "name" : "Allowed Registration Web Origins", - "providerId" : "registration-web-origins", - "subType" : "anonymous", - "subComponents" : { }, - "config" : { } - } ], - "org.keycloak.userprofile.UserProfileProvider" : [ { - "id" : "bd8f87c6-ffc2-401d-baab-cccb228e9b50", - "providerId" : "declarative-user-profile", - "subComponents" : { }, - "config" : { - "kc.user.profile.config" : [ "{\"attributes\":[{\"name\":\"username\",\"displayName\":\"${username}\",\"validations\":{\"length\":{\"min\":3,\"max\":255},\"username-prohibited-characters\":{},\"up-username-not-idn-homograph\":{}},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false},{\"name\":\"email\",\"displayName\":\"${email}\",\"validations\":{\"email\":{},\"length\":{\"max\":255}},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false},{\"name\":\"firstName\",\"displayName\":\"${firstName}\",\"validations\":{\"length\":{\"max\":255},\"person-name-prohibited-characters\":{}},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false},{\"name\":\"lastName\",\"displayName\":\"${lastName}\",\"validations\":{\"length\":{\"max\":255},\"person-name-prohibited-characters\":{}},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false}],\"groups\":[{\"name\":\"user-metadata\",\"displayHeader\":\"User metadata\",\"displayDescription\":\"Attributes, which refer to user metadata\"}]}" ] - } - } ], - "org.keycloak.keys.KeyProvider" : [ { - "id" : "2068dd28-1706-4fc6-8751-ead7dc26cf90", - "name" : "aes-generated", - "providerId" : "aes-generated", - "subComponents" : { }, - "config" : { - "kid" : [ "81bfaacd-ca1f-4b68-a1b2-80102555f5d6" ], - "secret" : [ "XEHl3aG9cESD4wedDu3uAg" ], - "priority" : [ "100" ] - } - }, { - "id" : "4bc97a67-b5fd-4bd5-9df9-7366efc0e091", - "name" : "hmac-generated-hs512", - "providerId" : "hmac-generated", - "subComponents" : { }, - "config" : { - "kid" : [ "31342681-e4fb-428d-bd54-07a77581ec75" ], - "secret" : [ "UhZlVtujVRkaFsvdVAOGPTEsNIwAJIOfmJDjQeciaQuWIGKWd-RBdKcS0II053kVswbJRGitqc-e0iqBfhZrUBrQyUmmcrCJT09BiaKCicdgRwYrb8fhYagiIg-70jk7fc3j3VINu5eeKjkTiDyfAf_0HS62-8eO4e98A5IW6QE" ], - "priority" : [ "100" ], - "algorithm" : [ "HS512" ] - } - }, { - "id" : "1cf333a1-b495-47b5-94f4-138e34e92ec7", - "name" : "rsa-generated", - "providerId" : "rsa-generated", - "subComponents" : { }, - "config" : { - "privateKey" : [ "MIIEpAIBAAKCAQEAvQ5kJj9mHLGm5zMvW5kYgSbEVvZYWcmMJKMQRWni4RdvbrKpkgsLv6gkH0xiwKU5aaUmk/e6hAZO2UvZ8Tp180VBhk2BXtS21Jm7KbZSVtQBFf33zVqjEXB2d89E1R6RlopzF4+Y6X1xxPnJ1UGxM0yT8uSrGB4CbJaNO4YH6/vUsJWoNXS9MJKFIvm0HP6t+o6DvWGn5HjLK7jhhF6iATZpp0JwqkG5Y+xo6TObx3m11aCR1HrFqlVg6zC3Ht4lhlQh3VhKcoO80gRAURU7WjOOAwauJViYrOF6eAsbMbpTD8EAyXL/4KCFWoITwRpHYNXwSzdR/BvgFlsJwLxJGwIDAQABAoIBABTzpleyyP8/FO8kdgghtFyDzliQ3oO82WIqDCCVNoaZkUjkVfSQctHfsXkifwM4jF9P5TGaz7nX9R8Rz+py/yVhtHxM1JyM2GJBU0OxJ/jlb+VfCvpgJBhHrWljuA4iYCId39lpmZmuxE//GsYejKPRxceyXd/DW6NrH+XL2c7mHe0AznAEfDeIsKWRDCoOjgm2xfpjU204HGLGmU+qTzH4EeZPWvpCnXWZiNBrxSiBUdauCMz6jWBZXW173rfd430t9JMu7zuPqFpcZ/RsLw3blHoPWpbpeULloxfSgxcYD+KP+oCk8t2oubTDGX2ES7OVfSbgy5yMYPbg7g+G97kCgYEA7Jj4d4tdTCOfk5kdqU2R7LB5IX3gsCohmp6FH3yPA2JBQ95Mk6IK15mIvvCXF4zyDvESsevjjQSlEhmYOQ1Us5MdvKZVtM/EgIZmI+3Z+r5M39QWQ8XYkOJr1DT990ed+QVF7H0khT7nmvmVzDYjPE1qtTtzadhwxY8r0Kcmew0CgYEAzI9bpm5rvpf3jfTPZeKb8pc1/4zlUqV0kH+P5BHnssXBX8nVJNgUxcv5xFZrL3MVr5BIYrXSh5qzYduGXkjsjCvo0zdhPmGvRYeL13xJi8EijbK78eORpdx5dN1Oht36+THtWSYnOyFU1gYZEdb3JC0Sc9TwjDPh5RWWLp2MqscCgYEAq85xLy3uc+myaVXYqiZ//qYvb9ieno4ZlNPjy3eBym1BA22boeEbinAdUroWna1l4N/COZ0XwkFLNReM6HD7vuLnxyPqPMBa6xGtfg2sKl6iKC80c8ZpetxQfOp2OWiyGDByFEbTjEafnHP9CSuO7q0w/aXMK2JWkb9ji8K1OMkCgYBmFPB2uMn5/hpi9BV/0btjL4SZ9/UE7l6iMZZcCXdn5noe1DkSvuZ24tjM2xd4QWVEDKui3vumAlScdBG1AY1SUiNJLGzR1avC9eaabYLCRGp67gQOrTMk40aVRE+IzEQPkZPRllGjl3mfqMFf/resjPWVamF0hfun98LPln35RwKBgQCrD+b/1kcSdHRUsaG04vEK8Qpm86E9GV8eLorMJv+gaOAAQXAgxQTp1QXlK/1A11Fj5CYTYg5vQtI16K3KYuF2tdhRR5LRlp0NDK7wf4QNhuK9OQfroHoETngOXGnA2p/RMaDKkAgh49GLT7vMo98ztjsrcRQqNOMGya8L1k48Jg==" ], - "certificate" : [ "MIICmzCCAYMCBgGcnhPYNDANBgkqhkiG9w0BAQsFADARMQ8wDQYDVQQDDAZtYXN0ZXIwHhcNMjYwMjI3MDc0ODQ2WhcNMzYwMjI3MDc1MDI2WjARMQ8wDQYDVQQDDAZtYXN0ZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9DmQmP2YcsabnMy9bmRiBJsRW9lhZyYwkoxBFaeLhF29usqmSCwu/qCQfTGLApTlppSaT97qEBk7ZS9nxOnXzRUGGTYFe1LbUmbsptlJW1AEV/ffNWqMRcHZ3z0TVHpGWinMXj5jpfXHE+cnVQbEzTJPy5KsYHgJslo07hgfr+9Swlag1dL0wkoUi+bQc/q36joO9YafkeMsruOGEXqIBNmmnQnCqQblj7GjpM5vHebXVoJHUesWqVWDrMLce3iWGVCHdWEpyg7zSBEBRFTtaM44DBq4lWJis4Xp4CxsxulMPwQDJcv/goIVaghPBGkdg1fBLN1H8G+AWWwnAvEkbAgMBAAEwDQYJKoZIhvcNAQELBQADggEBABWqPOyc4ReF3EnjSaD3n6Fk0ZVGDJZ6/du2cqlFm9rFEVlnJ0GS7Cz8an88PTge098gxM3+NSCjfgDN3B2QO//H3SdwjmGvKm1hghQVYvfFafW/Cat/nNqm68K6MCGNGP67OeNMLyl3OAL68SRNM1hoNbCplDt6HhX5s1Cn/iZPEQ7t4o6tt/aO/07E+3WfS3+PNqvt7jPrf0y5OlZ7oCAN0cnegSkbanvZehBlRpLkWhxphlAR90PomrW59Ok60EITscXr1jD1vlOgrvnw41y1L5eSvO3g19rKgqB5NrniavRdonP605109SQacZ31g7vmH/2qvV3MUuT9UBoRRFI=" ], - "priority" : [ "100" ] - } - }, { - "id" : "b68cba6a-7e0b-42be-a3aa-25d5c342801a", - "name" : "rsa-enc-generated", - "providerId" : "rsa-enc-generated", - "subComponents" : { }, - "config" : { - "privateKey" : [ "MIIEowIBAAKCAQEApFfSvqZKE30r0gu77DbLv5P6NBiEsCC30KlQp4gbyyHgQuHFWhPyUNJKi0NJGjyFzkw7cztmB7uJOa9oc54QQITdlzLEQ1Z8zvsv6hG5aNDwSLgCNiKHaIAxe6XmCYwhQX3LNGaUidf/a9JS+Kr/WMjQb9Y2NGbKqM5V2vAskq/p7CR2TLVShX2iGlPVO34qYbJSA6nF98n0x2ZxAdj8P77HqWJs0z/wRGxEFPmoWP4QR+b9q9f2ewr7EmIXOi7ZsxNF4g0CCo4zqUD4VGnGABl158zx+9ONedgBTnZNwnb9iM++bFt5exuvjbQ86jpnPrMR1yhIVKGSAddUlbV9IwIDAQABAoIBAE569BSAM7K/3SvG17yTZFQ99cdoCAFV9oHKQU5nxKIKMN6vkz+Tc+2dpuR/QsspKNrd86vxKyW5LGxkNBS2YFt3N5yrLSddB2gOcxCr2ydPU9feK4wvjAte4IKENGjNxtnQGTiSXg+/muWiAGZovlznNQabPLJkfhYDxuMxO4/mdcNSX3riJ/u6MtUS2BZMxOZWvZZ+t1boakJsn7LUycXngpMlZBrivZ9+bckD75iEAsTlwAzj2Tm1VgycmtwcOwvNAL/Eb35yqemBggYNqjxpdi+3Mm2OgHdWmWIdXpHbuYcw/FaKUKIFJ9JiBZYeDYK2Adb8pHQh050assU6m+ECgYEA5Xe0M6a/yL+j+0lpM9xrz4R21c67uy9Tg70l8/8N1rtam+M7hqtHYMwvtWZ1pSFSoxZ+6iVlI2xg5BqSX1tkV5QNtHcOlrrgysBWPXzz6oyrG+j2pAJ2bvNd+haCu2WOANPbs03bIc4/PUiPevXGKBf0ZuJ22P78GCp+/VZt4YMCgYEAt1hq2ufPSlbYJ3uItmBBPoIHvHDm4MELqjCSPqTo4BKrPdmlDv7p3pAG8+D/8K2jZEDRMyOatEnUH64RqQBuCs9YgcrRqkrzxhnqLGKllH+Z3QOwT+xCntkAnxI8fULeAbOJvw8Nb1dAtTODY+wrvmUEhvbyYQ76guzqtSTfQ+ECgYEA09acf4qTRurUoel1u7DjvqIVavD9kqLwQJBf908hIXm4/mzayUpaDNyzto2uUhHfTjw4UkTPh9JH6I03T9z5V3iQ5md7Cl/foo3Jj95I9+GBHbUF7Qdw+qClw3kAm6v3WoA7NN7NS/oxm4vfGa7Hjr/+mvS6rz1G0bB5p7sgma0CgYAtXwoCZf8cLGWNT7rDNwquR0tWzLG1yM/0K9Tk/7ZJTRVnVubL0TVayFWQIIv1qWKXupqKhzMPjn2Z4V+pbNvOfQUwCVrdQ3MUAPG8TiUfnHwc/36wKI1L9fN7ae3iKZv6280opLb0aKkwrjDDl3wzv5fhNldAwY4ovCxQ63D8wQKBgE6ZR/2bPYAa0O5pA7lPGSKfKYZY4U4zNwhgTAgzm2b7ONyJSP00yVwXoBX4j8qHbotVQY+8VMfFo49t3JCJ61g/Q/T3Uyd43fz1LzoQKFInDe1B7yXfPkEL4R7rllVmEvhoszgivYtevIoE//ZeHiMAn53nBJFgGuQyk7BMx7z0" ], - "certificate" : [ "MIICmzCCAYMCBgGcnhPYrjANBgkqhkiG9w0BAQsFADARMQ8wDQYDVQQDDAZtYXN0ZXIwHhcNMjYwMjI3MDc0ODQ2WhcNMzYwMjI3MDc1MDI2WjARMQ8wDQYDVQQDDAZtYXN0ZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCkV9K+pkoTfSvSC7vsNsu/k/o0GISwILfQqVCniBvLIeBC4cVaE/JQ0kqLQ0kaPIXOTDtzO2YHu4k5r2hznhBAhN2XMsRDVnzO+y/qEblo0PBIuAI2IodogDF7peYJjCFBfcs0ZpSJ1/9r0lL4qv9YyNBv1jY0ZsqozlXa8CySr+nsJHZMtVKFfaIaU9U7fiphslIDqcX3yfTHZnEB2Pw/vsepYmzTP/BEbEQU+ahY/hBH5v2r1/Z7CvsSYhc6LtmzE0XiDQIKjjOpQPhUacYAGXXnzPH704152AFOdk3Cdv2Iz75sW3l7G6+NtDzqOmc+sxHXKEhUoZIB11SVtX0jAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAKNZLkRF4xSD7KltDoHn3ND+ouDaK5AQH4uZtbp5Rl+3beqwOpnPEJmCzhuhvij6eVngviL0Ga8pFIBzX7zQu2v8oxTFIbGvAYBH9NNkA8R/qsaosC4C/mEmY/H9UDGUXp1VSFI8e08n2GlnVoll9t1wCvhyaMqpFqglmD8SccGTKiBKeSD4v+SWN19+Wi4KOvI5wqR0KKrvlmNWDxbsYzsUbU/gII7Y5nsUB3L2RvugXssX8+zgTYuyBoygEgdXcOKsyWRQ/vmGr9ZE+8RuBsWTS0at8m3SN/nCkarboVFLhnqbRVpV5uLrx4LVRkGNmVCXKccf3Poh+DbxgLD/kNU=" ], - "priority" : [ "100" ], - "algorithm" : [ "RSA-OAEP" ] - } - } ] - }, - "internationalizationEnabled" : false, - "authenticationFlows" : [ { - "id" : "f1ec49bd-55dd-4584-9438-bedf328b356d", - "alias" : "Account verification options", - "description" : "Method with which to verify the existing account", - "providerId" : "basic-flow", - "topLevel" : false, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "idp-email-verification", - "authenticatorFlow" : false, - "requirement" : "ALTERNATIVE", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticatorFlow" : true, - "requirement" : "ALTERNATIVE", - "priority" : 20, - "autheticatorFlow" : true, - "flowAlias" : "Verify Existing Account by Re-authentication", - "userSetupAllowed" : false - } ] - }, { - "id" : "72f9d538-d665-468f-8c06-cc6ef863d699", - "alias" : "Browser - Conditional 2FA", - "description" : "Flow to determine if any 2FA is required for the authentication", - "providerId" : "basic-flow", - "topLevel" : false, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "conditional-user-configured", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticatorConfig" : "browser-conditional-credential", - "authenticator" : "conditional-credential", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 20, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "auth-otp-form", - "authenticatorFlow" : false, - "requirement" : "ALTERNATIVE", - "priority" : 30, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "webauthn-authenticator", - "authenticatorFlow" : false, - "requirement" : "DISABLED", - "priority" : 40, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "auth-recovery-authn-code-form", - "authenticatorFlow" : false, - "requirement" : "DISABLED", - "priority" : 50, - "autheticatorFlow" : false, - "userSetupAllowed" : false - } ] - }, { - "id" : "b7e3c8f7-17bf-4a76-8921-2afb316272dd", - "alias" : "Direct Grant - Conditional OTP", - "description" : "Flow to determine if the OTP is required for the authentication", - "providerId" : "basic-flow", - "topLevel" : false, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "conditional-user-configured", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "direct-grant-validate-otp", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 20, - "autheticatorFlow" : false, - "userSetupAllowed" : false - } ] - }, { - "id" : "8bb954d6-800e-4ff4-bea8-d5fe51a101e6", - "alias" : "First broker login - Conditional 2FA", - "description" : "Flow to determine if any 2FA is required for the authentication", - "providerId" : "basic-flow", - "topLevel" : false, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "conditional-user-configured", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticatorConfig" : "first-broker-login-conditional-credential", - "authenticator" : "conditional-credential", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 20, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "auth-otp-form", - "authenticatorFlow" : false, - "requirement" : "ALTERNATIVE", - "priority" : 30, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "webauthn-authenticator", - "authenticatorFlow" : false, - "requirement" : "DISABLED", - "priority" : 40, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "auth-recovery-authn-code-form", - "authenticatorFlow" : false, - "requirement" : "DISABLED", - "priority" : 50, - "autheticatorFlow" : false, - "userSetupAllowed" : false - } ] - }, { - "id" : "9459afd7-9f72-4702-9f60-989664925fd3", - "alias" : "Handle Existing Account", - "description" : "Handle what to do if there is existing account with same email/username like authenticated identity provider", - "providerId" : "basic-flow", - "topLevel" : false, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "idp-confirm-link", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticatorFlow" : true, - "requirement" : "REQUIRED", - "priority" : 20, - "autheticatorFlow" : true, - "flowAlias" : "Account verification options", - "userSetupAllowed" : false - } ] - }, { - "id" : "f78ffd37-a52e-4c1a-b524-e7e30e8b59b0", - "alias" : "Reset - Conditional OTP", - "description" : "Flow to determine if the OTP should be reset or not. Set to REQUIRED to force.", - "providerId" : "basic-flow", - "topLevel" : false, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "conditional-user-configured", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "reset-otp", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 20, - "autheticatorFlow" : false, - "userSetupAllowed" : false - } ] - }, { - "id" : "221d25d8-15e0-44f0-ab87-890091819de2", - "alias" : "User creation or linking", - "description" : "Flow for the existing/non-existing user alternatives", - "providerId" : "basic-flow", - "topLevel" : false, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticatorConfig" : "create unique user config", - "authenticator" : "idp-create-user-if-unique", - "authenticatorFlow" : false, - "requirement" : "ALTERNATIVE", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticatorFlow" : true, - "requirement" : "ALTERNATIVE", - "priority" : 20, - "autheticatorFlow" : true, - "flowAlias" : "Handle Existing Account", - "userSetupAllowed" : false - } ] - }, { - "id" : "3abe4382-9087-4654-9f6a-13a882af038c", - "alias" : "Verify Existing Account by Re-authentication", - "description" : "Reauthentication of existing account", - "providerId" : "basic-flow", - "topLevel" : false, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "idp-username-password-form", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticatorFlow" : true, - "requirement" : "CONDITIONAL", - "priority" : 20, - "autheticatorFlow" : true, - "flowAlias" : "First broker login - Conditional 2FA", - "userSetupAllowed" : false - } ] - }, { - "id" : "bb681a9f-3bfa-4fa8-a8b6-74463a6cf493", - "alias" : "browser", - "description" : "Browser based authentication", - "providerId" : "basic-flow", - "topLevel" : true, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "auth-cookie", - "authenticatorFlow" : false, - "requirement" : "ALTERNATIVE", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "auth-spnego", - "authenticatorFlow" : false, - "requirement" : "DISABLED", - "priority" : 20, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "identity-provider-redirector", - "authenticatorFlow" : false, - "requirement" : "ALTERNATIVE", - "priority" : 25, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticatorFlow" : true, - "requirement" : "ALTERNATIVE", - "priority" : 30, - "autheticatorFlow" : true, - "flowAlias" : "forms", - "userSetupAllowed" : false - } ] - }, { - "id" : "f02d0da2-4f63-4ec1-ad1e-1bf5b9388e44", - "alias" : "clients", - "description" : "Base authentication for clients", - "providerId" : "client-flow", - "topLevel" : true, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "client-secret", - "authenticatorFlow" : false, - "requirement" : "ALTERNATIVE", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "client-jwt", - "authenticatorFlow" : false, - "requirement" : "ALTERNATIVE", - "priority" : 20, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "client-secret-jwt", - "authenticatorFlow" : false, - "requirement" : "ALTERNATIVE", - "priority" : 30, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "client-x509", - "authenticatorFlow" : false, - "requirement" : "ALTERNATIVE", - "priority" : 40, - "autheticatorFlow" : false, - "userSetupAllowed" : false - } ] - }, { - "id" : "0326d889-4cc3-43fd-94eb-fc05ae1277eb", - "alias" : "direct grant", - "description" : "OpenID Connect Resource Owner Grant", - "providerId" : "basic-flow", - "topLevel" : true, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "direct-grant-validate-username", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "direct-grant-validate-password", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 20, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticatorFlow" : true, - "requirement" : "CONDITIONAL", - "priority" : 30, - "autheticatorFlow" : true, - "flowAlias" : "Direct Grant - Conditional OTP", - "userSetupAllowed" : false - } ] - }, { - "id" : "5cf04370-c12d-484f-befb-47fec450afc7", - "alias" : "docker auth", - "description" : "Used by Docker clients to authenticate against the IDP", - "providerId" : "basic-flow", - "topLevel" : true, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "docker-http-basic-authenticator", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - } ] - }, { - "id" : "e9abe54d-edc6-4c80-b72a-e6603fb03a02", - "alias" : "first broker login", - "description" : "Actions taken after first broker login with identity provider account, which is not yet linked to any Keycloak account", - "providerId" : "basic-flow", - "topLevel" : true, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticatorConfig" : "review profile config", - "authenticator" : "idp-review-profile", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticatorFlow" : true, - "requirement" : "REQUIRED", - "priority" : 20, - "autheticatorFlow" : true, - "flowAlias" : "User creation or linking", - "userSetupAllowed" : false - } ] - }, { - "id" : "39318842-fb7e-4356-a97e-69db12d00280", - "alias" : "forms", - "description" : "Username, password, otp and other auth forms.", - "providerId" : "basic-flow", - "topLevel" : false, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "auth-username-password-form", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticatorFlow" : true, - "requirement" : "CONDITIONAL", - "priority" : 20, - "autheticatorFlow" : true, - "flowAlias" : "Browser - Conditional 2FA", - "userSetupAllowed" : false - } ] - }, { - "id" : "725e0d82-e0b9-428b-88ed-d11ddab6159a", - "alias" : "registration", - "description" : "Registration flow", - "providerId" : "basic-flow", - "topLevel" : true, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "registration-page-form", - "authenticatorFlow" : true, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : true, - "flowAlias" : "registration form", - "userSetupAllowed" : false - } ] - }, { - "id" : "ba6f9d02-2a96-4220-9cbf-d3f64718923d", - "alias" : "registration form", - "description" : "Registration form", - "providerId" : "form-flow", - "topLevel" : false, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "registration-user-creation", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 20, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "registration-password-action", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 50, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "registration-recaptcha-action", - "authenticatorFlow" : false, - "requirement" : "DISABLED", - "priority" : 60, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "registration-terms-and-conditions", - "authenticatorFlow" : false, - "requirement" : "DISABLED", - "priority" : 70, - "autheticatorFlow" : false, - "userSetupAllowed" : false - } ] - }, { - "id" : "3a53ff54-b0cb-465f-86c8-e243d4ec0004", - "alias" : "reset credentials", - "description" : "Reset credentials for a user if they forgot their password or something", - "providerId" : "basic-flow", - "topLevel" : true, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "reset-credentials-choose-user", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "reset-credential-email", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 20, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "reset-password", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 30, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticatorFlow" : true, - "requirement" : "CONDITIONAL", - "priority" : 40, - "autheticatorFlow" : true, - "flowAlias" : "Reset - Conditional OTP", - "userSetupAllowed" : false - } ] - }, { - "id" : "b977c3de-2d43-4759-ba01-3fc5af17b0dd", - "alias" : "saml ecp", - "description" : "SAML ECP Profile Authentication Flow", - "providerId" : "basic-flow", - "topLevel" : true, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "http-basic-authenticator", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - } ] - } ], - "authenticatorConfig" : [ { - "id" : "c10561b1-ae3f-4cb4-9608-72fb3d83a98a", - "alias" : "browser-conditional-credential", - "config" : { - "credentials" : "webauthn-passwordless" - } - }, { - "id" : "d22338ae-5ecc-4b20-b781-fbcd610ffcb6", - "alias" : "create unique user config", - "config" : { - "require.password.update.after.registration" : "false" - } - }, { - "id" : "4338fbaa-8922-4274-9b3b-f6c9c00002a3", - "alias" : "first-broker-login-conditional-credential", - "config" : { - "credentials" : "webauthn-passwordless" - } - }, { - "id" : "48dfd05d-b3be-4d5d-a704-e1a1ac93b8eb", - "alias" : "review profile config", - "config" : { - "update.profile.on.first.login" : "missing" - } - } ], - "requiredActions" : [ { - "alias" : "CONFIGURE_TOTP", - "name" : "Configure OTP", - "providerId" : "CONFIGURE_TOTP", - "enabled" : true, - "defaultAction" : false, - "priority" : 10, - "config" : { } - }, { - "alias" : "TERMS_AND_CONDITIONS", - "name" : "Terms and Conditions", - "providerId" : "TERMS_AND_CONDITIONS", - "enabled" : false, - "defaultAction" : false, - "priority" : 20, - "config" : { } - }, { - "alias" : "UPDATE_PASSWORD", - "name" : "Update Password", - "providerId" : "UPDATE_PASSWORD", - "enabled" : true, - "defaultAction" : false, - "priority" : 30, - "config" : { } - }, { - "alias" : "UPDATE_PROFILE", - "name" : "Update Profile", - "providerId" : "UPDATE_PROFILE", - "enabled" : true, - "defaultAction" : false, - "priority" : 40, - "config" : { } - }, { - "alias" : "VERIFY_EMAIL", - "name" : "Verify Email", - "providerId" : "VERIFY_EMAIL", - "enabled" : true, - "defaultAction" : false, - "priority" : 50, - "config" : { } - }, { - "alias" : "delete_account", - "name" : "Delete Account", - "providerId" : "delete_account", - "enabled" : false, - "defaultAction" : false, - "priority" : 60, - "config" : { } - }, { - "alias" : "UPDATE_EMAIL", - "name" : "Update Email", - "providerId" : "UPDATE_EMAIL", - "enabled" : false, - "defaultAction" : false, - "priority" : 70, - "config" : { } - }, { - "alias" : "webauthn-register", - "name" : "Webauthn Register", - "providerId" : "webauthn-register", - "enabled" : true, - "defaultAction" : false, - "priority" : 80, - "config" : { } - }, { - "alias" : "webauthn-register-passwordless", - "name" : "Webauthn Register Passwordless", - "providerId" : "webauthn-register-passwordless", - "enabled" : true, - "defaultAction" : false, - "priority" : 90, - "config" : { } - }, { - "alias" : "VERIFY_PROFILE", - "name" : "Verify Profile", - "providerId" : "VERIFY_PROFILE", - "enabled" : true, - "defaultAction" : false, - "priority" : 100, - "config" : { } - }, { - "alias" : "delete_credential", - "name" : "Delete Credential", - "providerId" : "delete_credential", - "enabled" : true, - "defaultAction" : false, - "priority" : 110, - "config" : { } - }, { - "alias" : "idp_link", - "name" : "Linking Identity Provider", - "providerId" : "idp_link", - "enabled" : true, - "defaultAction" : false, - "priority" : 120, - "config" : { } - }, { - "alias" : "CONFIGURE_RECOVERY_AUTHN_CODES", - "name" : "Recovery Authentication Codes", - "providerId" : "CONFIGURE_RECOVERY_AUTHN_CODES", - "enabled" : true, - "defaultAction" : false, - "priority" : 130, - "config" : { } - }, { - "alias" : "update_user_locale", - "name" : "Update User Locale", - "providerId" : "update_user_locale", - "enabled" : true, - "defaultAction" : false, - "priority" : 1000, - "config" : { } - } ], - "browserFlow" : "browser", - "registrationFlow" : "registration", - "directGrantFlow" : "direct grant", - "resetCredentialsFlow" : "reset credentials", - "clientAuthenticationFlow" : "clients", - "dockerAuthenticationFlow" : "docker auth", - "firstBrokerLoginFlow" : "first broker login", - "attributes" : { - "cibaBackchannelTokenDeliveryMode" : "poll", - "cibaAuthRequestedUserHint" : "login_hint", - "clientOfflineSessionMaxLifespan" : "0", - "oauth2DevicePollingInterval" : "5", - "clientSessionIdleTimeout" : "0", - "clientOfflineSessionIdleTimeout" : "0", - "cibaInterval" : "5", - "realmReusableOtpCode" : "false", - "cibaExpiresIn" : "120", - "oauth2DeviceCodeLifespan" : "600", - "saml.signature.algorithm" : "", - "parRequestUriLifespan" : "60", - "clientSessionMaxLifespan" : "0", - "frontendUrl" : "", - "acr.loa.map" : "{}" - }, - "keycloakVersion" : "26.5.4", - "userManagedAccessAllowed" : false, - "organizationsEnabled" : false, - "verifiableCredentialsEnabled" : false, - "adminPermissionsEnabled" : false, - "clientProfiles" : { - "profiles" : [ ] - }, - "clientPolicies" : { - "policies" : [ ] - } -} \ No newline at end of file diff --git a/seeds/pocket-id/portabase.zip b/seeds/pocket-id/portabase.zip old mode 100755 new mode 100644 index 66744064c67619025f1700192c805ce53f11b36e..9bff50d62764623c2b255d23f9464b566d282ee3 GIT binary patch delta 6478 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 delta 15870 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