diff --git a/.forgejo/workflows/verify.yaml b/.forgejo/workflows/verify.yaml
index be66b11..533a785 100644
--- a/.forgejo/workflows/verify.yaml
+++ b/.forgejo/workflows/verify.yaml
@@ -7,7 +7,7 @@ jobs:
name: Verify
runs-on: docker
steps:
- - uses: actions/checkout@v6
+ - uses: actions/checkout@v7
- name: Install maven
run: |
apt update
diff --git a/README.md b/README.md
index 10e40e7..9cd3766 100644
--- a/README.md
+++ b/README.md
@@ -20,6 +20,10 @@ Once all dependencies are met, simply call `make` to build the provider, which s
There's also `make clean` available for removing the output directory.
+## Testing Setup
+
+See [testing/README.md](testing/README.md) for details on the Docker Compose based setup that includes a realm and the ability to attach a debugger to the running Keycloak.
+
## Example Setup
We assume an unconfigured, fresh Keycloak installation running under `http://localhost:8080`.
diff --git a/attribute-endpoints-provider/pom.xml b/attribute-endpoints-provider/pom.xml
index be1ac28..a6d1663 100644
--- a/attribute-endpoints-provider/pom.xml
+++ b/attribute-endpoints-provider/pom.xml
@@ -86,7 +86,7 @@
maven-surefire-plugin
- 3.5.5
+ 3.5.6
maven-jar-plugin
@@ -104,7 +104,7 @@
https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
maven-site-plugin
- 3.21.0
+ 3.22.0
maven-project-info-reports-plugin
diff --git a/attribute-endpoints-provider/src/main/java/de/ccc/hamburg/keycloak/attribute_endpoints/AttributeEndpointsResourceProvider.java b/attribute-endpoints-provider/src/main/java/de/ccc/hamburg/keycloak/attribute_endpoints/AttributeEndpointsResourceProvider.java
index 889b0b8..d1438d7 100644
--- a/attribute-endpoints-provider/src/main/java/de/ccc/hamburg/keycloak/attribute_endpoints/AttributeEndpointsResourceProvider.java
+++ b/attribute-endpoints-provider/src/main/java/de/ccc/hamburg/keycloak/attribute_endpoints/AttributeEndpointsResourceProvider.java
@@ -3,6 +3,13 @@ package de.ccc.hamburg.keycloak.attribute_endpoints;
import jakarta.ws.rs.*;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.Response;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.stream.Stream;
+
import org.jboss.logging.Logger;
import org.keycloak.component.ComponentModel;
import org.keycloak.models.*;
@@ -198,13 +205,33 @@ public class AttributeEndpointsResourceProvider implements RealmResourceProvider
.map(a -> a.getName())
.toList();
- userProvider = session.users();
- // getRoleMembersStream only returns users with matchRole assigned directly; it misses
- // users who have the role via group membership (incl. parent groups) or composite roles.
- // hasRole() resolves the role the same way authUser.hasRole(authRole) does above.
- users = userProvider.searchForUserStream(realm, Map.of())
- .filter(user -> user.hasRole(matchRole));
- }
+ UserProvider userProvider = session.users();
+ Stream users = userProvider.searchForUserStream(realm, Map.of())
+ .filter(user -> user.hasRole(matchRole));
+
+ List attribute_list = users
+ .map(user -> {
+ Stream attributeStream = attributeNames.stream()
+ .map(attributeName -> user.getAttributeStream(attributeName).toList())
+ .flatMap(Collection::stream);
+
+ return attributeStream
+ .filter(attribute -> !attribute.isEmpty())
+ .toList();
+ })
+ .flatMap(List::stream)
+ .filter(attribute -> {
+ if (regexIsBlank) {
+ return true;
+ }
+ final Pattern pattern = Pattern.compile(configAttributeRegex);
+ final Matcher matcher = pattern.matcher(attribute);
+ return matcher.find();
+ })
+ .toList();
+
+ return Response.ok(attribute_list).build();
+
}
private static Auth getAuth(KeycloakSession session) {
diff --git a/compose.yaml b/compose.yaml
deleted file mode 100644
index 8dc22ff..0000000
--- a/compose.yaml
+++ /dev/null
@@ -1,13 +0,0 @@
-services:
- keycloak:
- image: quay.io/keycloak/keycloak:26.6.0
- pull_policy: always
- command: "start-dev --features=declarative-ui"
- environment:
- KEYCLOAK_ADMIN: admin
- KEYCLOAK_ADMIN_PASSWORD: admin
- KC_LOG_LEVEL: info
- ports:
- - "8080:8080"
- volumes:
- - ./attribute-endpoints-provider/target/attribute-endpoints-provider-1.0-SNAPSHOT.jar:/opt/keycloak/providers/attribute-endpoints-provider.jar
\ No newline at end of file
diff --git a/testing/README.md b/testing/README.md
new file mode 100644
index 0000000..86ff971
--- /dev/null
+++ b/testing/README.md
@@ -0,0 +1,56 @@
+# Creating a Testing Keycloak
+
+The Docker Compose setup in this directory sets up Keycloak and imports a realm `testing`.
+
+## Starting Keycloak
+
+Run `docker compose up -d` to start Keycloak. The admin console will be available at http://localhost:8080/.
+
+You can attach a Java debugger at `localhost:8081`.
+
+The realm export is in `import/testing.json`.
+It will be imported automatically when Keycloak starts.
+
+## Updating the Realm
+
+If you want to make changes to the testing realm and persist them, you need to export the realm.
+
+The following command runs the Keycloak export for the realm `testing` storing it in the mapped directory `import/testing.json`.
+The copying of the database is necessary to avoid locking errors.
+`env -i` makes sure the regular environment variables are not set to avoid port conflicts.
+
+```sh
+docker compose exec -it keycloak sh -c "cp -rp /opt/keycloak/data/h2 /tmp && env -i -- /opt/keycloak/bin/kc.sh export --db dev-file --db-url 'jdbc:h2:file:/tmp/h2/keycloakdb;NON_KEYWORDS=VALUE' --file /opt/keycloak/data/import/testing.json --realm testing"
+```
+
+## Testing Realm Configuration
+
+The realm contains these objects:
+
+* Clients:
+ * `export-dooris-ssh-keys` with secret `export-dooris-ssh-keys-secret` and role `export-dooris-ssh-keys`
+ * `export-mailing-list-addresses` with secret `export-mailing-list-addresses-secret` and role `export-mailing-list-addresses`
+* Realm Roles:
+ * `dooris-authorized`
+ * `mailing-list-chaos-member`
+ * `mailing-list-intern-member`
+ * `export-dooris-ssh-keys`
+ * `export-mailing-list-addresses`
+* Groups:
+ * `chaos` with role `mailing-list-chaos-member`
+ * `ìntern` with roles `dooris-authorized` and `mailing-list-intern-member`
+* Users:
+ * `tester` (Tony Tester), email `tester@example.com`, member of group `chaos`
+ * Mailing List Addresses:
+ * Chaos: `tester+chaos@example.com`
+ * Intern: `tester+intern@example.com`
+ * Dooris SSH Keys:
+ * SSH Key 1: `tester-ssh-key-1`
+ * SSH Key 2: `tester-ssh-key-2`
+ * `hacker` (Hans Acker), email `hacker@example.net`, member of groups `chaos`and `intern`
+ * Mailing List Addresses:
+ * Chaos: `hacker+chaos@example.net`
+ * Intern: `hacker+intern@example.net`
+ * Dooris SSH Keys:
+ * SSH Key 1: `hacker-ssh-key-1`
+ * SSH Key 2: `hacker-ssh-key-2`
diff --git a/testing/compose.yaml b/testing/compose.yaml
new file mode 100644
index 0000000..0311532
--- /dev/null
+++ b/testing/compose.yaml
@@ -0,0 +1,17 @@
+services:
+ keycloak:
+ image: quay.io/keycloak/keycloak:26.6.0
+ pull_policy: always
+ command: "start-dev --features=declarative-ui --import-realm"
+ environment:
+ KC_BOOTSTRAP_ADMIN_USERNAME: admin
+ KC_BOOTSTRAP_ADMIN_PASSWORD: admin
+ KC_LOG_LEVEL: info
+ KC_DEBUG: true
+ KC_DEBUG_PORT: "*:8081"
+ ports:
+ - "8080:8080"
+ - "8081:8081"
+ volumes:
+ - ./import:/opt/keycloak/data/import/
+ - ../attribute-endpoints-provider/target/attribute-endpoints-provider-1.0-SNAPSHOT.jar:/opt/keycloak/providers/attribute-endpoints-provider.jar
\ No newline at end of file
diff --git a/testing/import/testing.json b/testing/import/testing.json
new file mode 100644
index 0000000..a91df6c
--- /dev/null
+++ b/testing/import/testing.json
@@ -0,0 +1,2372 @@
+{
+ "id" : "2f110d7d-3252-45ed-add5-cb56c8f7b0ac",
+ "realm" : "testing",
+ "notBefore" : 0,
+ "defaultSignatureAlgorithm" : "RS256",
+ "revokeRefreshToken" : false,
+ "refreshTokenMaxReuse" : 0,
+ "accessTokenLifespan" : 300,
+ "accessTokenLifespanForImplicitFlow" : 900,
+ "ssoSessionIdleTimeout" : 1800,
+ "ssoSessionMaxLifespan" : 36000,
+ "ssoSessionIdleTimeoutRememberMe" : 0,
+ "ssoSessionMaxLifespanRememberMe" : 0,
+ "offlineSessionIdleTimeout" : 2592000,
+ "offlineSessionMaxLifespanEnabled" : false,
+ "offlineSessionMaxLifespan" : 5184000,
+ "clientSessionIdleTimeout" : 0,
+ "clientSessionMaxLifespan" : 0,
+ "clientOfflineSessionIdleTimeout" : 0,
+ "clientOfflineSessionMaxLifespan" : 0,
+ "accessCodeLifespan" : 60,
+ "accessCodeLifespanUserAction" : 300,
+ "accessCodeLifespanLogin" : 1800,
+ "actionTokenGeneratedByAdminLifespan" : 43200,
+ "actionTokenGeneratedByUserLifespan" : 300,
+ "oauth2DeviceCodeLifespan" : 600,
+ "oauth2DevicePollingInterval" : 5,
+ "enabled" : true,
+ "sslRequired" : "external",
+ "registrationAllowed" : false,
+ "registrationEmailAsUsername" : false,
+ "rememberMe" : false,
+ "verifyEmail" : false,
+ "loginWithEmailAllowed" : true,
+ "duplicateEmailsAllowed" : false,
+ "resetPasswordAllowed" : false,
+ "editUsernameAllowed" : false,
+ "bruteForceProtected" : false,
+ "permanentLockout" : false,
+ "maxTemporaryLockouts" : 0,
+ "bruteForceStrategy" : "MULTIPLE",
+ "maxFailureWaitSeconds" : 900,
+ "minimumQuickLoginWaitSeconds" : 60,
+ "waitIncrementSeconds" : 60,
+ "quickLoginCheckMilliSeconds" : 1000,
+ "maxDeltaTimeSeconds" : 43200,
+ "failureFactor" : 30,
+ "maxSecondaryAuthFailures" : 0,
+ "roles" : {
+ "realm" : [ {
+ "id" : "a96af449-cb49-441c-8037-d58b9f3f7e03",
+ "name" : "export-dooris-ssh-keys",
+ "description" : "Assignee is authorized to export Dooris SSH Keys",
+ "composite" : false,
+ "clientRole" : false,
+ "containerId" : "2f110d7d-3252-45ed-add5-cb56c8f7b0ac",
+ "attributes" : { }
+ }, {
+ "id" : "403d83e5-3f7e-41c4-b81e-51cb5aa1629a",
+ "name" : "export-mailing-list-addresses",
+ "description" : "Assignee is authorized to export mailing-list-addresses",
+ "composite" : false,
+ "clientRole" : false,
+ "containerId" : "2f110d7d-3252-45ed-add5-cb56c8f7b0ac",
+ "attributes" : { }
+ }, {
+ "id" : "ab3c5e56-28db-41ec-be43-a36888c1d65b",
+ "name" : "mailing-list-intern-member",
+ "description" : "Assignees are members of the intern mailing list",
+ "composite" : false,
+ "clientRole" : false,
+ "containerId" : "2f110d7d-3252-45ed-add5-cb56c8f7b0ac",
+ "attributes" : { }
+ }, {
+ "id" : "fde6a2ee-2d09-46a4-8fa1-83649f9151eb",
+ "name" : "offline_access",
+ "description" : "${role_offline-access}",
+ "composite" : false,
+ "clientRole" : false,
+ "containerId" : "2f110d7d-3252-45ed-add5-cb56c8f7b0ac",
+ "attributes" : { }
+ }, {
+ "id" : "9328f419-6385-4981-8465-69a9bc6fe84f",
+ "name" : "default-roles-testing",
+ "description" : "${role_default-roles}",
+ "composite" : true,
+ "composites" : {
+ "realm" : [ "offline_access", "uma_authorization" ],
+ "client" : {
+ "account" : [ "view-profile", "manage-account" ]
+ }
+ },
+ "clientRole" : false,
+ "containerId" : "2f110d7d-3252-45ed-add5-cb56c8f7b0ac",
+ "attributes" : { }
+ }, {
+ "id" : "4421cfbd-f4c7-4a14-a34f-72412eb295c7",
+ "name" : "mailing-list-chaos-member",
+ "description" : "Assignees are members of chaos mailing list",
+ "composite" : false,
+ "clientRole" : false,
+ "containerId" : "2f110d7d-3252-45ed-add5-cb56c8f7b0ac",
+ "attributes" : { }
+ }, {
+ "id" : "923001ff-b44f-4869-808d-6489f52fc1cc",
+ "name" : "uma_authorization",
+ "description" : "${role_uma_authorization}",
+ "composite" : false,
+ "clientRole" : false,
+ "containerId" : "2f110d7d-3252-45ed-add5-cb56c8f7b0ac",
+ "attributes" : { }
+ }, {
+ "id" : "7a7be205-fcd3-448b-b293-ef7d59b59f54",
+ "name" : "dooris-authorized",
+ "description" : "Assignees are allowed to use Dooris",
+ "composite" : false,
+ "clientRole" : false,
+ "containerId" : "2f110d7d-3252-45ed-add5-cb56c8f7b0ac",
+ "attributes" : { }
+ } ],
+ "client" : {
+ "realm-management" : [ {
+ "id" : "5cdbd87c-94b8-47d4-b5a3-ec4760fbece4",
+ "name" : "manage-clients",
+ "description" : "${role_manage-clients}",
+ "composite" : false,
+ "clientRole" : true,
+ "containerId" : "3666c170-90e9-495a-852c-9c1a8b026247",
+ "attributes" : { }
+ }, {
+ "id" : "2f3d4708-857e-40fe-9cde-198033e3aef2",
+ "name" : "query-realms",
+ "description" : "${role_query-realms}",
+ "composite" : false,
+ "clientRole" : true,
+ "containerId" : "3666c170-90e9-495a-852c-9c1a8b026247",
+ "attributes" : { }
+ }, {
+ "id" : "e7a55e70-b8f7-4e25-9219-f3a058ad198f",
+ "name" : "impersonation",
+ "description" : "${role_impersonation}",
+ "composite" : false,
+ "clientRole" : true,
+ "containerId" : "3666c170-90e9-495a-852c-9c1a8b026247",
+ "attributes" : { }
+ }, {
+ "id" : "7352ecaa-b82d-4d93-ac9a-04f503174f6d",
+ "name" : "view-realm",
+ "description" : "${role_view-realm}",
+ "composite" : false,
+ "clientRole" : true,
+ "containerId" : "3666c170-90e9-495a-852c-9c1a8b026247",
+ "attributes" : { }
+ }, {
+ "id" : "1597d724-347d-4eb4-ad7d-6c300791faef",
+ "name" : "query-users",
+ "description" : "${role_query-users}",
+ "composite" : false,
+ "clientRole" : true,
+ "containerId" : "3666c170-90e9-495a-852c-9c1a8b026247",
+ "attributes" : { }
+ }, {
+ "id" : "41cc187f-1e53-48fc-a8b0-134f651c04a4",
+ "name" : "query-clients",
+ "description" : "${role_query-clients}",
+ "composite" : false,
+ "clientRole" : true,
+ "containerId" : "3666c170-90e9-495a-852c-9c1a8b026247",
+ "attributes" : { }
+ }, {
+ "id" : "7219e37a-5e9d-405e-9baf-c26c53c6c766",
+ "name" : "view-authorization",
+ "description" : "${role_view-authorization}",
+ "composite" : false,
+ "clientRole" : true,
+ "containerId" : "3666c170-90e9-495a-852c-9c1a8b026247",
+ "attributes" : { }
+ }, {
+ "id" : "a0225a09-b0c2-407b-9dd5-abbff5a57dcf",
+ "name" : "view-clients",
+ "description" : "${role_view-clients}",
+ "composite" : true,
+ "composites" : {
+ "client" : {
+ "realm-management" : [ "query-clients" ]
+ }
+ },
+ "clientRole" : true,
+ "containerId" : "3666c170-90e9-495a-852c-9c1a8b026247",
+ "attributes" : { }
+ }, {
+ "id" : "1724e3b4-adb8-4ba1-9a79-721544d08738",
+ "name" : "manage-events",
+ "description" : "${role_manage-events}",
+ "composite" : false,
+ "clientRole" : true,
+ "containerId" : "3666c170-90e9-495a-852c-9c1a8b026247",
+ "attributes" : { }
+ }, {
+ "id" : "bd20a067-a063-4690-8824-6495033657e2",
+ "name" : "query-groups",
+ "description" : "${role_query-groups}",
+ "composite" : false,
+ "clientRole" : true,
+ "containerId" : "3666c170-90e9-495a-852c-9c1a8b026247",
+ "attributes" : { }
+ }, {
+ "id" : "ebbcb73f-ddf0-49fd-b40a-11e03af9b047",
+ "name" : "view-identity-providers",
+ "description" : "${role_view-identity-providers}",
+ "composite" : false,
+ "clientRole" : true,
+ "containerId" : "3666c170-90e9-495a-852c-9c1a8b026247",
+ "attributes" : { }
+ }, {
+ "id" : "62505d2a-eea0-4cf0-8162-198b3bc3c1d2",
+ "name" : "create-client",
+ "description" : "${role_create-client}",
+ "composite" : false,
+ "clientRole" : true,
+ "containerId" : "3666c170-90e9-495a-852c-9c1a8b026247",
+ "attributes" : { }
+ }, {
+ "id" : "5a0cc2fa-964c-47ef-b2bf-ebcbb1fd7c13",
+ "name" : "realm-admin",
+ "description" : "${role_realm-admin}",
+ "composite" : true,
+ "composites" : {
+ "client" : {
+ "realm-management" : [ "manage-clients", "query-realms", "impersonation", "view-realm", "query-users", "query-clients", "view-authorization", "view-clients", "manage-events", "query-groups", "view-identity-providers", "create-client", "manage-authorization", "manage-users", "view-users", "view-events", "manage-identity-providers", "manage-realm" ]
+ }
+ },
+ "clientRole" : true,
+ "containerId" : "3666c170-90e9-495a-852c-9c1a8b026247",
+ "attributes" : { }
+ }, {
+ "id" : "f4945547-4c63-476c-b223-cdd6698557df",
+ "name" : "manage-authorization",
+ "description" : "${role_manage-authorization}",
+ "composite" : false,
+ "clientRole" : true,
+ "containerId" : "3666c170-90e9-495a-852c-9c1a8b026247",
+ "attributes" : { }
+ }, {
+ "id" : "b461d060-1f22-4fd0-b47b-8bdb0889ea33",
+ "name" : "manage-users",
+ "description" : "${role_manage-users}",
+ "composite" : false,
+ "clientRole" : true,
+ "containerId" : "3666c170-90e9-495a-852c-9c1a8b026247",
+ "attributes" : { }
+ }, {
+ "id" : "be1f1ece-be9a-4ba4-b214-68f903fb0206",
+ "name" : "view-users",
+ "description" : "${role_view-users}",
+ "composite" : true,
+ "composites" : {
+ "client" : {
+ "realm-management" : [ "query-users", "query-groups" ]
+ }
+ },
+ "clientRole" : true,
+ "containerId" : "3666c170-90e9-495a-852c-9c1a8b026247",
+ "attributes" : { }
+ }, {
+ "id" : "2c0e3948-6950-4427-877d-b7cfb8000ee6",
+ "name" : "manage-identity-providers",
+ "description" : "${role_manage-identity-providers}",
+ "composite" : false,
+ "clientRole" : true,
+ "containerId" : "3666c170-90e9-495a-852c-9c1a8b026247",
+ "attributes" : { }
+ }, {
+ "id" : "049bbbb0-b577-4aad-9454-4bf7f31e73a2",
+ "name" : "view-events",
+ "description" : "${role_view-events}",
+ "composite" : false,
+ "clientRole" : true,
+ "containerId" : "3666c170-90e9-495a-852c-9c1a8b026247",
+ "attributes" : { }
+ }, {
+ "id" : "f55c718b-5280-4d1f-bc87-62433ae9dff2",
+ "name" : "manage-realm",
+ "description" : "${role_manage-realm}",
+ "composite" : false,
+ "clientRole" : true,
+ "containerId" : "3666c170-90e9-495a-852c-9c1a8b026247",
+ "attributes" : { }
+ } ],
+ "security-admin-console" : [ ],
+ "export-dooris-ssh-keys" : [ ],
+ "admin-cli" : [ ],
+ "account-console" : [ ],
+ "export-mailing-list-addresses" : [ ],
+ "broker" : [ {
+ "id" : "e704e419-5d19-49d4-9b87-cfbc63bfe3bf",
+ "name" : "read-token",
+ "description" : "${role_read-token}",
+ "composite" : false,
+ "clientRole" : true,
+ "containerId" : "31480b85-63d7-4ca5-92d8-bdb20a06bf05",
+ "attributes" : { }
+ } ],
+ "account" : [ {
+ "id" : "227cb594-b8ef-4923-8d24-5c6c10b95040",
+ "name" : "view-groups",
+ "description" : "${role_view-groups}",
+ "composite" : false,
+ "clientRole" : true,
+ "containerId" : "891c72d7-3d4a-4ba7-87a3-4b0b66cb579e",
+ "attributes" : { }
+ }, {
+ "id" : "085e189c-44b4-44f3-8656-7f8557bb4378",
+ "name" : "delete-account",
+ "description" : "${role_delete-account}",
+ "composite" : false,
+ "clientRole" : true,
+ "containerId" : "891c72d7-3d4a-4ba7-87a3-4b0b66cb579e",
+ "attributes" : { }
+ }, {
+ "id" : "2adadd55-4894-4526-9363-057c2af12cb6",
+ "name" : "view-consent",
+ "description" : "${role_view-consent}",
+ "composite" : false,
+ "clientRole" : true,
+ "containerId" : "891c72d7-3d4a-4ba7-87a3-4b0b66cb579e",
+ "attributes" : { }
+ }, {
+ "id" : "76806048-a444-4c09-a6b6-892c7b808d50",
+ "name" : "view-applications",
+ "description" : "${role_view-applications}",
+ "composite" : false,
+ "clientRole" : true,
+ "containerId" : "891c72d7-3d4a-4ba7-87a3-4b0b66cb579e",
+ "attributes" : { }
+ }, {
+ "id" : "db8769ea-52f2-4e9a-9b9c-eb087e8763eb",
+ "name" : "manage-account",
+ "description" : "${role_manage-account}",
+ "composite" : true,
+ "composites" : {
+ "client" : {
+ "account" : [ "manage-account-links" ]
+ }
+ },
+ "clientRole" : true,
+ "containerId" : "891c72d7-3d4a-4ba7-87a3-4b0b66cb579e",
+ "attributes" : { }
+ }, {
+ "id" : "4ed78057-c7cf-4304-830f-f7e2e1058e1f",
+ "name" : "view-profile",
+ "description" : "${role_view-profile}",
+ "composite" : false,
+ "clientRole" : true,
+ "containerId" : "891c72d7-3d4a-4ba7-87a3-4b0b66cb579e",
+ "attributes" : { }
+ }, {
+ "id" : "25c55944-45ec-41a2-b44f-504bca8b5867",
+ "name" : "manage-consent",
+ "description" : "${role_manage-consent}",
+ "composite" : true,
+ "composites" : {
+ "client" : {
+ "account" : [ "view-consent" ]
+ }
+ },
+ "clientRole" : true,
+ "containerId" : "891c72d7-3d4a-4ba7-87a3-4b0b66cb579e",
+ "attributes" : { }
+ }, {
+ "id" : "662f89ed-29b6-4b33-86a6-a3dc45d1f67a",
+ "name" : "manage-account-links",
+ "description" : "${role_manage-account-links}",
+ "composite" : false,
+ "clientRole" : true,
+ "containerId" : "891c72d7-3d4a-4ba7-87a3-4b0b66cb579e",
+ "attributes" : { }
+ } ]
+ }
+ },
+ "groups" : [ {
+ "id" : "68f0ba8e-9f16-44f8-b70d-5a4142c30bd5",
+ "name" : "chaos",
+ "description" : "",
+ "path" : "/chaos",
+ "subGroups" : [ ],
+ "attributes" : { },
+ "realmRoles" : [ "mailing-list-chaos-member" ],
+ "clientRoles" : { }
+ }, {
+ "id" : "cb191c22-2afa-4cc8-b71c-0ad5eb032f2d",
+ "name" : "intern",
+ "description" : "",
+ "path" : "/intern",
+ "subGroups" : [ ],
+ "attributes" : { },
+ "realmRoles" : [ "mailing-list-intern-member", "dooris-authorized" ],
+ "clientRoles" : { }
+ } ],
+ "defaultRole" : {
+ "id" : "9328f419-6385-4981-8465-69a9bc6fe84f",
+ "name" : "default-roles-testing",
+ "description" : "${role_default-roles}",
+ "composite" : true,
+ "clientRole" : false,
+ "containerId" : "2f110d7d-3252-45ed-add5-cb56c8f7b0ac"
+ },
+ "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" : "1a4e6feb-7349-4961-8ebf-50f553e88ac5",
+ "username" : "hacker",
+ "firstName" : "Hans",
+ "lastName" : "Acker",
+ "email" : "hacker@example.com",
+ "emailVerified" : false,
+ "attributes" : {
+ "ssh-key-1" : [ "hacker-ssh-key-1" ],
+ "mailing-list-address-intern" : [ "hacker+intern@example.net" ],
+ "ssh-key-2" : [ "hacker-ssh-key-2" ],
+ "mailing-list-address-chaos" : [ "hacker+chaos@example.net" ]
+ },
+ "enabled" : true,
+ "createdTimestamp" : 1784376038850,
+ "totp" : false,
+ "credentials" : [ ],
+ "disableableCredentialTypes" : [ ],
+ "requiredActions" : [ ],
+ "realmRoles" : [ "default-roles-testing" ],
+ "notBefore" : 0,
+ "groups" : [ "/chaos", "/intern" ]
+ }, {
+ "id" : "20904a4a-2ee5-4226-8965-c8d90b488653",
+ "username" : "service-account-export-dooris-ssh-keys",
+ "emailVerified" : false,
+ "enabled" : true,
+ "createdTimestamp" : 1784372754885,
+ "totp" : false,
+ "serviceAccountClientId" : "export-dooris-ssh-keys",
+ "credentials" : [ ],
+ "disableableCredentialTypes" : [ ],
+ "requiredActions" : [ ],
+ "realmRoles" : [ "default-roles-testing" ],
+ "notBefore" : 0,
+ "groups" : [ ]
+ }, {
+ "id" : "d52d64fb-b619-450e-9db5-5336e757b07a",
+ "username" : "service-account-export-mailing-list-addresses",
+ "emailVerified" : false,
+ "enabled" : true,
+ "createdTimestamp" : 1784372816293,
+ "totp" : false,
+ "serviceAccountClientId" : "export-mailing-list-addresses",
+ "credentials" : [ ],
+ "disableableCredentialTypes" : [ ],
+ "requiredActions" : [ ],
+ "realmRoles" : [ "default-roles-testing" ],
+ "notBefore" : 0,
+ "groups" : [ ]
+ }, {
+ "id" : "187fd2b8-1d4b-4020-b2cc-15cc98b7eec3",
+ "username" : "tester",
+ "firstName" : "Tony",
+ "lastName" : "Tester",
+ "email" : "tester@example.com",
+ "emailVerified" : false,
+ "attributes" : {
+ "ssh-key-1" : [ "tester-ssh-key-1" ],
+ "mailing-list-address-intern" : [ "tester+intern@example.com" ],
+ "ssh-key-2" : [ "tester-ssh-key-2" ],
+ "mailing-list-address-chaos" : [ "tester+chaos@example.com" ]
+ },
+ "enabled" : true,
+ "createdTimestamp" : 1784375858793,
+ "totp" : false,
+ "credentials" : [ ],
+ "disableableCredentialTypes" : [ ],
+ "requiredActions" : [ ],
+ "realmRoles" : [ "default-roles-testing" ],
+ "notBefore" : 0,
+ "groups" : [ "/chaos" ]
+ } ],
+ "scopeMappings" : [ {
+ "clientScope" : "offline_access",
+ "roles" : [ "offline_access" ]
+ } ],
+ "clientScopeMappings" : {
+ "account" : [ {
+ "client" : "account-console",
+ "roles" : [ "manage-account", "view-groups" ]
+ } ]
+ },
+ "clients" : [ {
+ "id" : "891c72d7-3d4a-4ba7-87a3-4b0b66cb579e",
+ "clientId" : "account",
+ "name" : "${client_account}",
+ "rootUrl" : "${authBaseUrl}",
+ "baseUrl" : "/realms/testing/account/",
+ "surrogateAuthRequired" : false,
+ "enabled" : true,
+ "alwaysDisplayInConsole" : false,
+ "clientAuthenticatorType" : "client-secret",
+ "redirectUris" : [ "/realms/testing/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", "offline_access", "organization", "microprofile-jwt" ]
+ }, {
+ "id" : "483e0419-7a14-432d-8dc2-63e7bc11834e",
+ "clientId" : "account-console",
+ "name" : "${client_account-console}",
+ "rootUrl" : "${authBaseUrl}",
+ "baseUrl" : "/realms/testing/account/",
+ "surrogateAuthRequired" : false,
+ "enabled" : true,
+ "alwaysDisplayInConsole" : false,
+ "clientAuthenticatorType" : "client-secret",
+ "redirectUris" : [ "/realms/testing/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" : "6067528d-8b22-461d-87de-8d3286e22a63",
+ "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", "offline_access", "organization", "microprofile-jwt" ]
+ }, {
+ "id" : "d55992ee-3699-426e-8746-898d6fbb97da",
+ "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", "offline_access", "organization", "microprofile-jwt" ]
+ }, {
+ "id" : "31480b85-63d7-4ca5-92d8-bdb20a06bf05",
+ "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", "offline_access", "organization", "microprofile-jwt" ]
+ }, {
+ "id" : "15bb2ee5-3319-45b3-b085-622989b34d09",
+ "clientId" : "export-dooris-ssh-keys",
+ "name" : "",
+ "description" : "Service Account to export SSH Keys",
+ "rootUrl" : "",
+ "adminUrl" : "",
+ "baseUrl" : "",
+ "surrogateAuthRequired" : false,
+ "enabled" : true,
+ "alwaysDisplayInConsole" : false,
+ "clientAuthenticatorType" : "client-secret",
+ "secret" : "export-dooris-ssh-keys-secret",
+ "redirectUris" : [ "/*" ],
+ "webOrigins" : [ "/*" ],
+ "notBefore" : 0,
+ "bearerOnly" : false,
+ "consentRequired" : false,
+ "standardFlowEnabled" : false,
+ "implicitFlowEnabled" : false,
+ "directAccessGrantsEnabled" : false,
+ "serviceAccountsEnabled" : true,
+ "publicClient" : false,
+ "frontchannelLogout" : true,
+ "protocol" : "openid-connect",
+ "attributes" : {
+ "logout.confirmation.enabled" : "false",
+ "client.secret.creation.time" : "1784372754",
+ "standard.token.exchange.enabled" : "false",
+ "oauth2.jwt.authorization.grant.enabled" : "false",
+ "frontchannel.logout.session.required" : "true",
+ "post.logout.redirect.uris" : "+",
+ "oauth2.device.authorization.grant.enabled" : "false",
+ "backchannel.logout.revoke.offline.tokens" : "false",
+ "realm_client" : "false",
+ "oidc.ciba.grant.enabled" : "false",
+ "backchannel.logout.session.required" : "true",
+ "display.on.consent.screen" : "false",
+ "dpop.bound.access.tokens" : "false"
+ },
+ "authenticationFlowBindingOverrides" : { },
+ "fullScopeAllowed" : true,
+ "nodeReRegistrationTimeout" : -1,
+ "defaultClientScopes" : [ "web-origins", "service_account", "acr", "profile", "roles", "basic", "email" ],
+ "optionalClientScopes" : [ "address", "phone", "offline_access", "organization", "microprofile-jwt" ]
+ }, {
+ "id" : "c4a8c271-9294-44b7-945d-4023f845922c",
+ "clientId" : "export-mailing-list-addresses",
+ "name" : "",
+ "description" : "Service Account to export mailing list addresses",
+ "rootUrl" : "",
+ "adminUrl" : "",
+ "baseUrl" : "",
+ "surrogateAuthRequired" : false,
+ "enabled" : true,
+ "alwaysDisplayInConsole" : false,
+ "clientAuthenticatorType" : "client-secret",
+ "secret" : "export-mailing-list-addresses-secret",
+ "redirectUris" : [ "/*" ],
+ "webOrigins" : [ "/*" ],
+ "notBefore" : 0,
+ "bearerOnly" : false,
+ "consentRequired" : false,
+ "standardFlowEnabled" : false,
+ "implicitFlowEnabled" : false,
+ "directAccessGrantsEnabled" : false,
+ "serviceAccountsEnabled" : true,
+ "publicClient" : false,
+ "frontchannelLogout" : true,
+ "protocol" : "openid-connect",
+ "attributes" : {
+ "logout.confirmation.enabled" : "false",
+ "client.secret.creation.time" : "1784372816",
+ "standard.token.exchange.enabled" : "false",
+ "oauth2.jwt.authorization.grant.enabled" : "false",
+ "frontchannel.logout.session.required" : "true",
+ "post.logout.redirect.uris" : "+",
+ "oauth2.device.authorization.grant.enabled" : "false",
+ "backchannel.logout.revoke.offline.tokens" : "false",
+ "realm_client" : "false",
+ "oidc.ciba.grant.enabled" : "false",
+ "backchannel.logout.session.required" : "true",
+ "display.on.consent.screen" : "false",
+ "dpop.bound.access.tokens" : "false"
+ },
+ "authenticationFlowBindingOverrides" : { },
+ "fullScopeAllowed" : true,
+ "nodeReRegistrationTimeout" : -1,
+ "defaultClientScopes" : [ "web-origins", "service_account", "acr", "profile", "roles", "basic", "email" ],
+ "optionalClientScopes" : [ "address", "phone", "offline_access", "organization", "microprofile-jwt" ]
+ }, {
+ "id" : "3666c170-90e9-495a-852c-9c1a8b026247",
+ "clientId" : "realm-management",
+ "name" : "${client_realm-management}",
+ "surrogateAuthRequired" : false,
+ "enabled" : true,
+ "alwaysDisplayInConsole" : false,
+ "clientAuthenticatorType" : "client-secret",
+ "redirectUris" : [ ],
+ "webOrigins" : [ ],
+ "notBefore" : 0,
+ "bearerOnly" : true,
+ "consentRequired" : false,
+ "standardFlowEnabled" : true,
+ "implicitFlowEnabled" : false,
+ "directAccessGrantsEnabled" : false,
+ "serviceAccountsEnabled" : false,
+ "publicClient" : false,
+ "frontchannelLogout" : false,
+ "protocol" : "openid-connect",
+ "attributes" : {
+ "realm_client" : "true",
+ "post.logout.redirect.uris" : "+"
+ },
+ "authenticationFlowBindingOverrides" : { },
+ "fullScopeAllowed" : false,
+ "nodeReRegistrationTimeout" : 0,
+ "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "basic", "email" ],
+ "optionalClientScopes" : [ "address", "phone", "offline_access", "organization", "microprofile-jwt" ]
+ }, {
+ "id" : "4ef48a10-149d-4856-abf0-aa812f325dba",
+ "clientId" : "security-admin-console",
+ "name" : "${client_security-admin-console}",
+ "rootUrl" : "${authAdminUrl}",
+ "baseUrl" : "/admin/testing/console/",
+ "surrogateAuthRequired" : false,
+ "enabled" : true,
+ "alwaysDisplayInConsole" : false,
+ "clientAuthenticatorType" : "client-secret",
+ "redirectUris" : [ "/admin/testing/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" : "19ccf819-2a1e-48a1-b44c-50c31374696d",
+ "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", "offline_access", "organization", "microprofile-jwt" ]
+ } ],
+ "clientScopes" : [ {
+ "id" : "f76d9915-4e2e-4a68-b631-0bdec5dfcb45",
+ "name" : "saml_organization",
+ "description" : "Organization Membership",
+ "protocol" : "saml",
+ "attributes" : {
+ "display.on.consent.screen" : "false"
+ },
+ "protocolMappers" : [ {
+ "id" : "f1624dae-24b8-494d-9857-45f9363d1308",
+ "name" : "organization",
+ "protocol" : "saml",
+ "protocolMapper" : "saml-organization-membership-mapper",
+ "consentRequired" : false,
+ "config" : { }
+ } ]
+ }, {
+ "id" : "29e54d71-0254-40b9-ac79-c49c2e712625",
+ "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" : "533ab2af-e962-4698-8524-ff1e5feaabc0",
+ "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" : "4dd69138-6701-410c-b21b-39cd45e81cda",
+ "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" : "dc27696c-4762-456d-b33e-c045056c8d44",
+ "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" : "70b4d2bd-f366-491d-bc82-6dccc65c5e84",
+ "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" : "98455946-9bde-45ba-a9a1-b82dbb3c65d0",
+ "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" : "73e63434-7636-436a-a42b-aead32f1c15f",
+ "name" : "audience resolve",
+ "protocol" : "openid-connect",
+ "protocolMapper" : "oidc-audience-resolve-mapper",
+ "consentRequired" : false,
+ "config" : {
+ "introspection.token.claim" : "true",
+ "access.token.claim" : "true"
+ }
+ }, {
+ "id" : "d881458a-5e02-45f3-a688-dc655243ebd6",
+ "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" : "e6c64ea5-fc31-4edf-964a-2a3b90feef76",
+ "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" : "508f9f87-fbe7-4eab-88dd-bbc11b98413f",
+ "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" : "2e4639eb-47b3-4d30-80d0-2be2d045c2dc",
+ "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" : "6554bc30-75bd-4482-852a-85896e1610cf",
+ "name" : "allowed web origins",
+ "protocol" : "openid-connect",
+ "protocolMapper" : "oidc-allowed-origins-mapper",
+ "consentRequired" : false,
+ "config" : {
+ "introspection.token.claim" : "true",
+ "access.token.claim" : "true"
+ }
+ } ]
+ }, {
+ "id" : "429bfa3e-0a01-439d-8841-416f80f34b88",
+ "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" : "455bc3c1-bdb7-4dc2-b0dd-5f1b4e30c30b",
+ "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" : "176d2bd5-faa4-4e23-8988-389284108f45",
+ "name" : "offline_access",
+ "description" : "OpenID Connect built-in scope: offline_access",
+ "protocol" : "openid-connect",
+ "attributes" : {
+ "consent.screen.text" : "${offlineAccessScopeConsentText}",
+ "display.on.consent.screen" : "true"
+ }
+ }, {
+ "id" : "ae111ad2-1447-41c2-8ef1-cb3b5ed4604a",
+ "name" : "role_list",
+ "description" : "SAML role list",
+ "protocol" : "saml",
+ "attributes" : {
+ "consent.screen.text" : "${samlRoleListScopeConsentText}",
+ "display.on.consent.screen" : "true"
+ },
+ "protocolMappers" : [ {
+ "id" : "4db2128d-46ee-41c5-8af7-110b7d82e3a8",
+ "name" : "role list",
+ "protocol" : "saml",
+ "protocolMapper" : "saml-role-list-mapper",
+ "consentRequired" : false,
+ "config" : {
+ "single" : "false",
+ "attribute.nameformat" : "Basic",
+ "attribute.name" : "Role"
+ }
+ } ]
+ }, {
+ "id" : "271c4400-68b5-4e44-8463-f278252e6b88",
+ "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" : "d4684e59-2e2f-40eb-8048-ade56e3f3d8c",
+ "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" : "d5e0a980-7c52-4a2b-acbb-9cd10c2464a1",
+ "name" : "sub",
+ "protocol" : "openid-connect",
+ "protocolMapper" : "oidc-sub-mapper",
+ "consentRequired" : false,
+ "config" : {
+ "introspection.token.claim" : "true",
+ "access.token.claim" : "true"
+ }
+ } ]
+ }, {
+ "id" : "2595443e-9d0b-465c-87ab-2f8b2e014499",
+ "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" : "00309faf-7af2-4aac-b5fa-f5758aa27e10",
+ "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" : "0b7ce719-0e1d-48e9-b8fe-a50184cfc991",
+ "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" : "bd16c4af-1049-4e0f-b610-1b8eced9d706",
+ "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" : "a29e2bba-a266-4f6d-8748-cc7211c8ecc1",
+ "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" : "e86c005c-ff4b-467e-ae84-070b94a238cd",
+ "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" : "bac8134e-3c6f-4a4c-8ac1-098b816c3a81",
+ "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" : "2ca3342f-0a35-48d8-86af-89136f960a23",
+ "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" : "329be32c-5561-4983-93c8-a0283d763871",
+ "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" : "8f61ee81-1c87-4eae-a1a6-0001811a6065",
+ "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" : "3dc6cda7-037e-4baf-82db-ef8301574252",
+ "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" : "7eafd2dd-581c-4447-9397-5fd902067ec3",
+ "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" : "ef5ff6a9-c290-4b3d-8b32-752a4d4f8e46",
+ "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" : "4bd7348b-687c-4723-bb5f-9aa45794e318",
+ "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" : "3d5629ed-3327-43b3-95fd-9d707a65c8c4",
+ "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" : "6cbe4e71-5174-47f2-8eb8-1db66140a3ef",
+ "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" : "a0510c49-62a3-4baa-b2f2-8fa0d0700e07",
+ "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" : "cf768d7e-0edd-4e07-af5a-0751a72ec317",
+ "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" : "6bd57b47-9fb8-4014-b2e7-b574ade6cca5",
+ "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" : "85a355a3-8750-4498-9ed7-43074fa51ea5",
+ "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" : "5900ee40-6371-415c-9d48-e5d2e04af176",
+ "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" : "e4176aa7-4e8f-4879-9dd4-ddbdcb499f79",
+ "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" : "be3ccfee-4966-4066-a04c-2d71790c6921",
+ "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" : "4e0efd0a-2389-4806-8304-78f42aea9fbb",
+ "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" : "0a3aed92-2ac9-4dc0-98a4-60fff5606d57",
+ "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" : "f0c21663-c525-444b-a927-bf5d5a45000f",
+ "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"
+ }
+ } ]
+ } ],
+ "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" : "743aea19-eae3-407e-9bbb-a9eeb964c97e",
+ "name" : "Allowed Registration Web Origins",
+ "providerId" : "registration-web-origins",
+ "subType" : "authenticated",
+ "subComponents" : { },
+ "config" : { }
+ }, {
+ "id" : "c0990503-232a-4878-be20-f7597c397a43",
+ "name" : "Allowed Protocol Mapper Types",
+ "providerId" : "allowed-protocol-mappers",
+ "subType" : "authenticated",
+ "subComponents" : { },
+ "config" : {
+ "allowed-protocol-mapper-types" : [ "saml-user-property-mapper", "saml-user-attribute-mapper", "oidc-usermodel-attribute-mapper", "oidc-address-mapper", "oidc-full-name-mapper", "saml-role-list-mapper", "oidc-sha256-pairwise-sub-mapper", "oidc-usermodel-property-mapper" ]
+ }
+ }, {
+ "id" : "a49de9bf-462b-4c61-bb52-0373732f4b1b",
+ "name" : "Allowed Client Scopes",
+ "providerId" : "allowed-client-templates",
+ "subType" : "authenticated",
+ "subComponents" : { },
+ "config" : {
+ "allow-default-scopes" : [ "true" ]
+ }
+ }, {
+ "id" : "e5f5d0d8-4a74-4d98-b0f6-c873115a4b4d",
+ "name" : "Allowed Client Scopes",
+ "providerId" : "allowed-client-templates",
+ "subType" : "anonymous",
+ "subComponents" : { },
+ "config" : {
+ "allow-default-scopes" : [ "true" ]
+ }
+ }, {
+ "id" : "af0bc676-55da-4f23-bdd3-ef88d0758063",
+ "name" : "Trusted Hosts",
+ "providerId" : "trusted-hosts",
+ "subType" : "anonymous",
+ "subComponents" : { },
+ "config" : {
+ "host-sending-registration-request-must-match" : [ "true" ],
+ "client-uris-must-match" : [ "true" ]
+ }
+ }, {
+ "id" : "9e4df0b0-e7eb-47bd-999f-89edf5143750",
+ "name" : "Max Clients Limit",
+ "providerId" : "max-clients",
+ "subType" : "anonymous",
+ "subComponents" : { },
+ "config" : {
+ "max-clients" : [ "200" ]
+ }
+ }, {
+ "id" : "70a09b7d-8852-4f8e-b09e-05c9407ada3d",
+ "name" : "Consent Required",
+ "providerId" : "consent-required",
+ "subType" : "anonymous",
+ "subComponents" : { },
+ "config" : { }
+ }, {
+ "id" : "d1870dd5-a864-4632-a568-de759638999e",
+ "name" : "Allowed Registration Web Origins",
+ "providerId" : "registration-web-origins",
+ "subType" : "anonymous",
+ "subComponents" : { },
+ "config" : { }
+ }, {
+ "id" : "11709f15-8a91-4829-92f7-0d6710ef1fad",
+ "name" : "Allowed Protocol Mapper Types",
+ "providerId" : "allowed-protocol-mappers",
+ "subType" : "anonymous",
+ "subComponents" : { },
+ "config" : {
+ "allowed-protocol-mapper-types" : [ "oidc-sha256-pairwise-sub-mapper", "oidc-full-name-mapper", "oidc-address-mapper", "saml-role-list-mapper", "oidc-usermodel-attribute-mapper", "saml-user-property-mapper", "oidc-usermodel-property-mapper", "saml-user-attribute-mapper" ]
+ }
+ }, {
+ "id" : "dd4024e9-f080-4319-aeb7-7f9906c345c5",
+ "name" : "Full Scope Disabled",
+ "providerId" : "scope",
+ "subType" : "anonymous",
+ "subComponents" : { },
+ "config" : { }
+ } ],
+ "org.keycloak.userprofile.UserProfileProvider" : [ {
+ "id" : "3794f85d-517e-41c8-a2ea-eeb6b6413397",
+ "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}},\"required\":{\"roles\":[\"user\"]},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false},{\"name\":\"firstName\",\"displayName\":\"${firstName}\",\"validations\":{\"length\":{\"max\":255},\"person-name-prohibited-characters\":{}},\"required\":{\"roles\":[\"user\"]},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false},{\"name\":\"lastName\",\"displayName\":\"${lastName}\",\"validations\":{\"length\":{\"max\":255},\"person-name-prohibited-characters\":{}},\"required\":{\"roles\":[\"user\"]},\"permissions\":{\"view\":[\"admin\",\"user\"],\"edit\":[\"admin\",\"user\"]},\"multivalued\":false},{\"name\":\"ssh-key-1\",\"displayName\":\"SSH Key 1\",\"validations\":{},\"annotations\":{},\"permissions\":{\"view\":[],\"edit\":[\"admin\",\"user\"]},\"group\":\"dooris-ssh-keys\",\"multivalued\":false},{\"name\":\"ssh-key-2\",\"displayName\":\"SSH Key 2\",\"validations\":{},\"annotations\":{},\"permissions\":{\"view\":[],\"edit\":[\"admin\",\"user\"]},\"group\":\"dooris-ssh-keys\",\"multivalued\":false},{\"name\":\"mailing-list-address-chaos\",\"displayName\":\"chaos@\",\"validations\":{},\"annotations\":{},\"permissions\":{\"view\":[],\"edit\":[\"admin\",\"user\"]},\"group\":\"mailing-list-addresses\",\"multivalued\":false},{\"name\":\"mailing-list-address-intern\",\"displayName\":\"intern@\",\"validations\":{},\"annotations\":{},\"permissions\":{\"view\":[],\"edit\":[\"admin\",\"user\"]},\"group\":\"mailing-list-addresses\",\"multivalued\":false}],\"groups\":[{\"name\":\"user-metadata\",\"displayHeader\":\"User metadata\",\"displayDescription\":\"Attributes, which refer to user metadata\"},{\"name\":\"mailing-list-addresses\",\"displayHeader\":\"Mailing List Addresses\",\"displayDescription\":\"Addresses to subscribe with to the respective mailing list\",\"annotations\":{}},{\"name\":\"dooris-ssh-keys\",\"displayHeader\":\"Dooris SSH Keys\",\"displayDescription\":\"SSH Keys to use for Dooris\",\"annotations\":{}}]}" ]
+ }
+ } ],
+ "org.keycloak.keys.KeyProvider" : [ {
+ "id" : "ca2445a5-7c81-4eae-a95e-1ac58e1805ab",
+ "name" : "hmac-generated-hs512",
+ "providerId" : "hmac-generated",
+ "subComponents" : { },
+ "config" : {
+ "kid" : [ "a0a65013-e2e4-4d24-917c-4b0a0424820e" ],
+ "secret" : [ "1B0mUVjZ0UzE2lnlAoQZPJuI6z_ek8ygSrOMS0ss2C8bkOedGfVY107EwD0HGCFxEfHNLJ-L1Nokfjl-ShKlyn5DF5va8bCAdrQRfihWWuLS3UAnPzHNJv1kWT_XjS5z18_4TUGPoenfO91G1FZh57O3NOXq_VHEkIqQCaVCXaI" ],
+ "priority" : [ "100" ],
+ "algorithm" : [ "HS512" ]
+ }
+ }, {
+ "id" : "eeb49ee3-805c-459e-923e-b0fdabd75bca",
+ "name" : "aes-generated",
+ "providerId" : "aes-generated",
+ "subComponents" : { },
+ "config" : {
+ "kid" : [ "8c64d3db-8aa2-45ff-bd89-04edcdf2108b" ],
+ "secret" : [ "ECvPIcjCQP2nJyYP--Y_iA" ],
+ "priority" : [ "100" ]
+ }
+ }, {
+ "id" : "e68df07e-c423-46b0-8e1f-a364d814fc01",
+ "name" : "rsa-enc-generated",
+ "providerId" : "rsa-enc-generated",
+ "subComponents" : { },
+ "config" : {
+ "privateKey" : [ "MIIEowIBAAKCAQEA1ir1jQ9ie27gdCk1dQPRBj7GCvf3GXsnGtGPgn5/x9/uYBZe/vL88fB6KFv3F1zCrTNqvEtuFhABurDw+fGfe2pSd3eVN6e6TQ1wU2DZc9cs8Hqruox5LhiNilmB+PMrsSWkTr7T2K/eZnez9yhQzDtg1wRRjZY4gt71WdH17g62K5jwdM+MP2jJj0h7iCaP4cMPFLaQXykJLlyOJD1GmkC0TFKAfeNRcBmDEZIDjVkkVwSFZM9E6n38zphtFDo+5rV1bs3lIARmwWz1ohursTefaT/JO7iVwkIS2d4+Hz0yjlCeuDvglJ6AEg59sE8cdTgKV+0ouB4zBYuBwuYFNQIDAQABAoIBAB24+eRzyCUn7s/wOtJcjzvLUSI15lM2UOewlwwd5jn6YqjEh2E2nn2CnvwkQeyPcRfR1PRWO5b67bfX1U8QMM6oo31KWVPPW/7+6Hc0hQ6bREoI8aBYMnvVPdTU4JbeQ1K4eKR9E1rf6CusXTY7SstX9PP3o3cqQU7YW+X1SlOZR0dF86u63RPzXXDGuXKF4xPfJ+oAqhrXJHKWubYqkCOEehJWHN/giB1L2KhCnBjhsQUSNkZZnF6g6VH3hoGa34V416a8J/AX9fRLXABoIiF1K+NhsjemtvoVVG9BRR+k1sy5aY2Sw8ZyPRiCNg3q1Bd/MX4SCxmzqEIFng9i7RkCgYEA+mrBI4Ebgnz0jNiUwtxlNTiXEnmSvBInKDMhfyjnKbrJd/xbIH6VSP+oPg6H/IfA353opEGOrrAq0t/YIO+cSz2RIbubGfpz0Ll69MdM9XPf0SZOwI0hO/OCtr9NRph3cO6bdpYjHq0SSZBSc4BixIhyj48phL8MV9ENU1pHI0sCgYEA2vFQVYINXtngyVQhCQpYeTc6oPw/Rz7XwSVl+4kmAvUQlpUzdh7dOQsZHd3jTovqNujxE/RATcqRFkyfmMzuOxrmJfb66eAfD7DhRq7SBJxFn3KwekLlX5ofwXOXit/w5soNbz2TyzvWC08vPHPv9vYK0rJMOs6HW9yHotmNqX8CgYAznDrwGVTVIPG58Y0/V/MX8/DW4u2GC2u8kkUuEv0JkbCiJQWW/d/Aqsg++fm25zeuHrpq2AQTJsW8rlu59ghNTYQS4rqFsSObeg7IUicfU2FmlrGWZ7/YvkhLZ8QCb7v2L4ck+q6ETQE+3hrQKT6x6LlLsyLIdCOUGcbYTfvpXwKBgAJC/eZ0OnkhXQ4XXWP/hFx0MpnZITo2LvpizYPkrczYBTzY+7gbp4NgVvkVArUcAuZgT6U6H7PuBMOrNPbaHxfjNj9sJrllxExgMmONiMPdbWaxQ5tvt3jeWbeg3w7jM1Te/3aHt1AhJRvmzIEeXXs6nXABwYHWAlXzmD8Zajo3AoGBAMxbCLhDrZOd+hxtiJugXmp7mtKGP+zKU0e9pB+tZbQ/tJjYO5qnWVuNe8VajZxz3R32Sj++sDv5ZtHvPOoVpdsOmhiOekfvQkDR7GaRPrgjTVFcDqH3dWUWbYFGtcuPYijq3Lli/XeCHcT/owxrXXXnHGUGJAasDUTFg+cd9onS" ],
+ "certificate" : [ "MIICnTCCAYUCBgGfdQaBBTANBgkqhkiG9w0BAQsFADASMRAwDgYDVQQDDAd0ZXN0aW5nMB4XDTI2MDcxODExMzgwOFoXDTM2MDcxODExMzk0OFowEjEQMA4GA1UEAwwHdGVzdGluZzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANYq9Y0PYntu4HQpNXUD0QY+xgr39xl7JxrRj4J+f8ff7mAWXv7y/PHweihb9xdcwq0zarxLbhYQAbqw8Pnxn3tqUnd3lTenuk0NcFNg2XPXLPB6q7qMeS4YjYpZgfjzK7ElpE6+09iv3mZ3s/coUMw7YNcEUY2WOILe9VnR9e4OtiuY8HTPjD9oyY9Ie4gmj+HDDxS2kF8pCS5cjiQ9RppAtExSgH3jUXAZgxGSA41ZJFcEhWTPROp9/M6YbRQ6Pua1dW7N5SAEZsFs9aIbq7E3n2k/yTu4lcJCEtnePh89Mo5Qnrg74JSegBIOfbBPHHU4ClftKLgeMwWLgcLmBTUCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAQCYZ0su+yiJV6quViUIOgjNjbFRwDfNdcc05TlxUkcsOisCbeMdClI7e1y84YfDblrM40nnye/tu5+/173y2xUzoBLPdWq5gHofH9DuHJD+xQxhfEvQ4vQadRsW2r9UaXa+jTBM3rEz2R8zxw01BtXD9WA56xEUbdcfeIeqoCa1hfKE8bF7BL2VVn6+HQ19e1HfV/OzMYhSt+50XjNkaEMy+1pc22LrfYEZ34j5ZOYLv6d9dWcrxqkxhp/mWKPZlpWit0G8Zt9u8h4REJyK+jtNqUi255qEQczfrlhw1Frs0M0NLHTjA72s2TLznFPTbSLxs14z3m8H3LxJAMrkycg==" ],
+ "priority" : [ "100" ],
+ "algorithm" : [ "RSA-OAEP" ]
+ }
+ }, {
+ "id" : "c8030050-e582-462c-8c85-d64bafb77a30",
+ "name" : "rsa-generated",
+ "providerId" : "rsa-generated",
+ "subComponents" : { },
+ "config" : {
+ "privateKey" : [ "MIIEowIBAAKCAQEAyD3ShupqEMXbCVvGtWlmIoTEtqRXRZtHAHHc7GmHGstzpr3g7nBRCBerWCKvZCGK83wdtz8kTHPa4IJ8UuQsYPoIk2k8UukSuj2VwqT+aiP0xExSMfh0C9kCPsEtbtf0OOX4PxNIKsSbIevdxFJmm3TPKl1q1KT7iOKv/8gZmFqC5HFCh06mIYmz37DD3Aa1eMslhoNA21xvka80c9l5hHdLQWw73tTIwQ50oNr0xDqvjqClMqLQvM/R4R7siyJlZdNVCevGDUL6qLJLp7j6WLhtH706qavDL3jREfEi6AULJDdEfewTFUktfv9z+6GgGBn+/JaZsR8biK8CDZrR/QIDAQABAoIBAAJG4CTVbejHdBVVgSoIhh6WvuNA64Me1jlECFUrsALILa2WWHCGP7nvLR5mFt/EBWmlHkycxMOzeWNjI4Vy2DRWjBoIE0LePL14FMyWhhQNu5x9y11Qest5YpB/G7+Q3l0nuTA+ucR2HGEBBE/LlhDc/c+9jByeffACj9s3ghA6ScEGPn2YiQW5jA178TbEV9cDHQO4C707xwrFuDm3RBJon4siKJij5Oq2rDsivhv6PGZRdHCxoGzlL2Z3GkmWqZ0Bv0dqdO5/TWuiZCgFMrgEBvoegqOOBRELK7Hs2jkgGo3IqvWtdDgmNxD1adnd6prW3IkYW5IjoBDoU2Dw5pECgYEA/Pm31auLW/MUnwTctVmfpdT4VnmkNslj4t/DjRsNw1GZAf3WAqevsxUOnJ+sYKDRETRU0iIVPf+9sTwwVdGRD2xf701wc6RNh8SUamxrNTIoHS5EVeByvkP8BIO/8pbWvbJFxLTTCycfQvhmvjKrUaddlu7wZzRfdwDhCi5g8FkCgYEAyqKzkRch/FWOkPqzGgnXd1hJxMMfXGV1HmBmRSuz/PkdHePvbJcZqY2lHdkGFuWaWa4MxrZdfXiyGa6n2kGjXkDqGLBMN6tuiJ8hesUBfTm0NtdeLlipDKQOam4OJmber6EQTqkFJC8FoCFaXvWOaOx1v0leWr+DGMQvYZN5GkUCgYBNw63hPvR99YFXSLVYAg7zeT5FxurV9J6B9Ws1iyV17zVryU3qTwXRtR1ixCrHIWhjM4UHe3awMldrjicFmoBPD2+GLnXs9ormu2UsOdvS5HI0Vi6nf3GGT3u/H4j316p3cb/EshlWClavzZA303eaiCpa5WR9NTpLaLfE23DtMQKBgDLHWOZH/L1GF2bfXBhvVO5UUpAbMXWu+w10rMwyqnT/XDuMTghRSR4DH9h99Rexy98jTZJSStVRdJgY+3knL7BD5iXvr/nXXOihr/sa+UePOUjw6WoFz78aMX6cO7GF39H1M6fylRY/LlK1aPcY4+oJL2yTDzEAgvKm3xS9pwBdAoGBAJTt5DMDsK0eU6YPgJ5Ef0IaHoHKCrheUuTUe8rfGi04lxVHlp9/QJFMDtdQDAaAvJCWModVUf7E2YOiT+rCaeaewMzekxakFBZSPOIbk9CxkBb8/pcL9NLG6DkKpZTkVpzhzL0vmkyyZgzpK88W++baHf5t7c0Srv8OTwHXVMp1" ],
+ "certificate" : [ "MIICnTCCAYUCBgGfdQaBZjANBgkqhkiG9w0BAQsFADASMRAwDgYDVQQDDAd0ZXN0aW5nMB4XDTI2MDcxODExMzgwOFoXDTM2MDcxODExMzk0OFowEjEQMA4GA1UEAwwHdGVzdGluZzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMg90obqahDF2wlbxrVpZiKExLakV0WbRwBx3OxphxrLc6a94O5wUQgXq1gir2QhivN8Hbc/JExz2uCCfFLkLGD6CJNpPFLpEro9lcKk/moj9MRMUjH4dAvZAj7BLW7X9Djl+D8TSCrEmyHr3cRSZpt0zypdatSk+4jir//IGZhaguRxQodOpiGJs9+ww9wGtXjLJYaDQNtcb5GvNHPZeYR3S0FsO97UyMEOdKDa9MQ6r46gpTKi0LzP0eEe7IsiZWXTVQnrxg1C+qiyS6e4+li4bR+9Oqmrwy940RHxIugFCyQ3RH3sExVJLX7/c/uhoBgZ/vyWmbEfG4ivAg2a0f0CAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAsGNzBfF+qeIqXuKFYUkEq3Qi9oHuQEDK/0Cuc39Ubj6lBj0kxmnA2UVAmx6stD1hXKaHzQCd8OreV3v247ypwCWE+LuqA4KpID2RKnCLJxKvoN8QaMS0ZSRpu8CA4kFHoB86YctxU53niMQ2ZVqRE2UgQBQcWUW9BU0Ke/mpBIakIvwq1S9aHS6TY5cAGxbZhYqLNUZUy4Db7dOhj17q3Fqr3ddk1l/B5K9lMp6MzAw/H0zpPyM7xx1/g0TsRZiSaYrNTLtuMMeRhgkjfXj1zO77LHRpTu3aXF+TgNVrH2V9kjM39kpbFdtaRQLjLfNE9P8UjymqyYTmBWz77ghN6w==" ],
+ "priority" : [ "100" ]
+ }
+ } ],
+ "org.keycloak.services.ui.extend.UiPageProvider" : [ {
+ "id" : "84fffafa-a7f7-493a-9718-f447ff444585",
+ "providerId" : "Attribute Endpoints",
+ "subComponents" : { },
+ "config" : {
+ "match-role" : [ "mailing-list-intern-member" ],
+ "auth-role" : [ "export-mailing-list-addresses" ],
+ "attribute-group" : [ "mailing-list-addresses" ],
+ "slug" : [ "mailing-list-addresses-intern" ]
+ }
+ }, {
+ "id" : "dd02b66b-d603-4f43-9b7e-f6b7f74fb7a8",
+ "providerId" : "Attribute Endpoints",
+ "subComponents" : { },
+ "config" : {
+ "match-role" : [ "dooris-authorized" ],
+ "auth-role" : [ "export-dooris-ssh-keys" ],
+ "attribute-group" : [ "dooris-ssh-keys" ],
+ "slug" : [ "dooris-ssh-keys" ]
+ }
+ }, {
+ "id" : "9c2edab9-f39a-4925-b984-03e1e1d8fbbb",
+ "providerId" : "Attribute Endpoints",
+ "subComponents" : { },
+ "config" : {
+ "match-role" : [ "mailing-list-chaos-member" ],
+ "attribute-group" : [ "mailing-list-addresses" ],
+ "auth-role" : [ "export-mailing-list-addresses" ],
+ "slug" : [ "mailing-list-addresses-chaos" ]
+ }
+ } ]
+ },
+ "internationalizationEnabled" : false,
+ "authenticationFlows" : [ {
+ "id" : "4d18d565-2d84-40ba-ba83-73468bb03d21",
+ "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" : "c14318af-7c5d-4744-ab3f-747b99e999b6",
+ "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" : "e0d22b15-be99-491a-b972-24fd9bd115ab",
+ "alias" : "Browser - Conditional Organization",
+ "description" : "Flow to determine if the organization identity-first login is to be used",
+ "providerId" : "basic-flow",
+ "topLevel" : false,
+ "builtIn" : true,
+ "authenticationExecutions" : [ {
+ "authenticator" : "conditional-user-configured",
+ "authenticatorFlow" : false,
+ "requirement" : "REQUIRED",
+ "priority" : 10,
+ "autheticatorFlow" : false,
+ "userSetupAllowed" : false
+ }, {
+ "authenticator" : "organization",
+ "authenticatorFlow" : false,
+ "requirement" : "ALTERNATIVE",
+ "priority" : 20,
+ "autheticatorFlow" : false,
+ "userSetupAllowed" : false
+ } ]
+ }, {
+ "id" : "7daf9f99-5e1d-49ab-99d4-c8b349e0a0a2",
+ "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" : "1ea0e4d7-d008-405f-8504-617b6be2e5ce",
+ "alias" : "First Broker Login - Conditional Organization",
+ "description" : "Flow to determine if the authenticator that adds organization members is to be used",
+ "providerId" : "basic-flow",
+ "topLevel" : false,
+ "builtIn" : true,
+ "authenticationExecutions" : [ {
+ "authenticator" : "conditional-user-configured",
+ "authenticatorFlow" : false,
+ "requirement" : "REQUIRED",
+ "priority" : 10,
+ "autheticatorFlow" : false,
+ "userSetupAllowed" : false
+ }, {
+ "authenticator" : "idp-add-organization-member",
+ "authenticatorFlow" : false,
+ "requirement" : "REQUIRED",
+ "priority" : 20,
+ "autheticatorFlow" : false,
+ "userSetupAllowed" : false
+ } ]
+ }, {
+ "id" : "81510b28-b475-426d-84ba-de69ff08bcdf",
+ "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" : "521c4d53-03b8-4a7d-8c0b-aeeb3f4fb1bc",
+ "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" : "44bd5640-b500-4ec3-9740-95190a70abf6",
+ "alias" : "Organization",
+ "providerId" : "basic-flow",
+ "topLevel" : false,
+ "builtIn" : true,
+ "authenticationExecutions" : [ {
+ "authenticatorFlow" : true,
+ "requirement" : "CONDITIONAL",
+ "priority" : 10,
+ "autheticatorFlow" : true,
+ "flowAlias" : "Browser - Conditional Organization",
+ "userSetupAllowed" : false
+ } ]
+ }, {
+ "id" : "7636f767-4cab-48ee-b071-4613249793f3",
+ "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" : "8ec46c7c-b709-43db-8628-25619f4d01d7",
+ "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" : "843bdf74-c4f8-476c-9c06-482e29a28416",
+ "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" : "50bf949f-852a-44c2-b474-7c21da79d8fe",
+ "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" : 26,
+ "autheticatorFlow" : true,
+ "flowAlias" : "Organization",
+ "userSetupAllowed" : false
+ }, {
+ "authenticatorFlow" : true,
+ "requirement" : "ALTERNATIVE",
+ "priority" : 30,
+ "autheticatorFlow" : true,
+ "flowAlias" : "forms",
+ "userSetupAllowed" : false
+ } ]
+ }, {
+ "id" : "133e5b36-6ecb-4376-a44b-15012c076767",
+ "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
+ }, {
+ "authenticator" : "federated-jwt",
+ "authenticatorFlow" : false,
+ "requirement" : "ALTERNATIVE",
+ "priority" : 50,
+ "autheticatorFlow" : false,
+ "userSetupAllowed" : false
+ } ]
+ }, {
+ "id" : "4c2254e0-095c-4761-a300-48c369c99653",
+ "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" : "459c222e-58b0-4904-b08e-89df761e59c4",
+ "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" : "5ceb5acc-6bc5-416c-b798-cc98dd01a7da",
+ "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
+ }, {
+ "authenticatorFlow" : true,
+ "requirement" : "CONDITIONAL",
+ "priority" : 60,
+ "autheticatorFlow" : true,
+ "flowAlias" : "First Broker Login - Conditional Organization",
+ "userSetupAllowed" : false
+ } ]
+ }, {
+ "id" : "9dd1bb28-3e38-423a-baa9-5cdcfe6f69cd",
+ "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" : "1cabc63b-5041-4344-8630-f9d9e63a7d6c",
+ "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" : "1e40d58f-8abd-4ab7-bd14-3ef1d80f1e39",
+ "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" : "b205d22b-231e-47da-98de-027aede30bdd",
+ "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" : "995c3a30-1685-4a50-b433-0e2be3bed232",
+ "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" : "913740cc-8001-4a27-907e-707465878b36",
+ "alias" : "browser-conditional-credential",
+ "config" : {
+ "credentials" : "webauthn-passwordless"
+ }
+ }, {
+ "id" : "6b7ef72b-4f8b-4fbd-927d-8155500197ac",
+ "alias" : "create unique user config",
+ "config" : {
+ "require.password.update.after.registration" : "false"
+ }
+ }, {
+ "id" : "c0aa77da-f368-4f11-89d0-ee724bed8074",
+ "alias" : "first-broker-login-conditional-credential",
+ "config" : {
+ "credentials" : "webauthn-passwordless"
+ }
+ }, {
+ "id" : "a9b756d5-c9a5-4716-84ec-ecd7ef7f3f36",
+ "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",
+ "parRequestUriLifespan" : "60",
+ "clientSessionMaxLifespan" : "0",
+ "scimApiEnabled" : "false"
+ },
+ "keycloakVersion" : "26.6.0",
+ "userManagedAccessAllowed" : false,
+ "organizationsEnabled" : false,
+ "verifiableCredentialsEnabled" : false,
+ "adminPermissionsEnabled" : false,
+ "scimApiEnabled" : false,
+ "clientProfiles" : {
+ "profiles" : [ ]
+ },
+ "clientPolicies" : {
+ "policies" : [ ]
+ }
+}
\ No newline at end of file