From 6081c9ff9fbfa7cfed1ada96d2aefac44dd86c83 Mon Sep 17 00:00:00 2001 From: lovasoa Date: Tue, 5 Nov 2024 21:03:20 +0100 Subject: [PATCH] add biome linting and formatting for a consistent style and easier contributions this should prevent useless conflicts --- .vscode/launch.json | 143 +- .vscode/settings.json | 6 +- biome.json | 16 + .../www/css/prism-tabler-theme.css | 68 +- .../CRUD - Authentication/www/css/style.css | 6 +- .../sqlpage/sqlpage.json | 4 +- .../sqlpage/sqlpage.json | 4 +- .../website/js/code-editor.js | 52 +- .../sqlpage/sqlpage.json | 4 +- .../sqlpage/sqlpage.json | 6 +- .../website_header.json | 16 +- examples/nginx/sqlpage_config/sqlpage.json | 2 +- examples/official-site/highlightjs-launch.js | 2 +- .../highlightjs-tabler-theme.css | 48 +- examples/official-site/style_pricing.css | 33 +- .../sqlpage/sqlpage.json | 4 +- .../sqlpage/sqlpage.json | 4 +- .../keycloak-configuration.json | 9568 +++++++++-------- .../my_react_component.js | 43 +- .../style.css | 7 +- sqlpage/apexcharts.js | 475 +- sqlpage/sqlpage.css | 5 +- sqlpage/sqlpage.js | 127 +- sqlpage/tomselect.js | 6 +- tests/end-to-end/official-site.spec.ts | 149 +- tests/end-to-end/playwright.config.ts | 12 +- 26 files changed, 5849 insertions(+), 4961 deletions(-) create mode 100644 biome.json diff --git a/.vscode/launch.json b/.vscode/launch.json index 3a101da1..74ef38df 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -1,83 +1,64 @@ { - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 - "version": "0.2.0", - "configurations": [ - { - "type": "lldb", - "request": "launch", - "name": "Debug unit tests in library 'sqlpage'", - "cargo": { - "args": [ - "test", - "--no-run", - "--lib", - "--package=sqlpage" - ], - "filter": { - "name": "sqlpage", - "kind": "lib" - } - }, - "args": [], - "cwd": "${workspaceFolder}" - }, - { - "type": "lldb", - "request": "launch", - "name": "Debug executable 'sqlpage'", - "cargo": { - "args": [ - "build", - "--bin=sqlpage", - "--package=sqlpage" - ], - "filter": { - "name": "sqlpage", - "kind": "bin" - } - }, - "args": [], - "cwd": "${workspaceFolder}" - }, - { - "type": "lldb", - "request": "launch", - "name": "Debug unit tests in executable 'sqlpage'", - "cargo": { - "args": [ - "test", - "--no-run", - "--bin=sqlpage", - "--package=sqlpage" - ], - "filter": { - "name": "sqlpage", - "kind": "bin" - } - }, - "args": [], - "cwd": "${workspaceFolder}" - }, - { - "type": "lldb", - "request": "launch", - "name": "Debug integration test 'index'", - "cargo": { - "args": [ - "test", - "--no-run", - "--test=index", - "--package=sqlpage" - ], - "filter": { - "name": "index", - "kind": "test" - } - }, - "args": [], - "cwd": "${workspaceFolder}" + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "lldb", + "request": "launch", + "name": "Debug unit tests in library 'sqlpage'", + "cargo": { + "args": ["test", "--no-run", "--lib", "--package=sqlpage"], + "filter": { + "name": "sqlpage", + "kind": "lib" } - ] -} \ No newline at end of file + }, + "args": [], + "cwd": "${workspaceFolder}" + }, + { + "type": "lldb", + "request": "launch", + "name": "Debug executable 'sqlpage'", + "cargo": { + "args": ["build", "--bin=sqlpage", "--package=sqlpage"], + "filter": { + "name": "sqlpage", + "kind": "bin" + } + }, + "args": [], + "cwd": "${workspaceFolder}" + }, + { + "type": "lldb", + "request": "launch", + "name": "Debug unit tests in executable 'sqlpage'", + "cargo": { + "args": ["test", "--no-run", "--bin=sqlpage", "--package=sqlpage"], + "filter": { + "name": "sqlpage", + "kind": "bin" + } + }, + "args": [], + "cwd": "${workspaceFolder}" + }, + { + "type": "lldb", + "request": "launch", + "name": "Debug integration test 'index'", + "cargo": { + "args": ["test", "--no-run", "--test=index", "--package=sqlpage"], + "filter": { + "name": "index", + "kind": "test" + } + }, + "args": [], + "cwd": "${workspaceFolder}" + } + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json index 352a6265..0ee06669 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,5 +1,3 @@ { - "rust-analyzer.linkedProjects": [ - "./Cargo.toml" - ] -} \ No newline at end of file + "rust-analyzer.linkedProjects": ["./Cargo.toml"] +} diff --git a/biome.json b/biome.json new file mode 100644 index 00000000..15f52de3 --- /dev/null +++ b/biome.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json", + "files": { + "ignore": ["examples/official-site/pgconf/**"], + "ignoreUnknown": true + }, + "formatter": { + "indentStyle": "space", + "indentWidth": 2 + }, + "vcs": { + "enabled": true, + "useIgnoreFile": true, + "clientKind": "git" + } +} diff --git a/examples/CRUD - Authentication/www/css/prism-tabler-theme.css b/examples/CRUD - Authentication/www/css/prism-tabler-theme.css index 63b4611f..ce29ac90 100644 --- a/examples/CRUD - Authentication/www/css/prism-tabler-theme.css +++ b/examples/CRUD - Authentication/www/css/prism-tabler-theme.css @@ -2,43 +2,43 @@ .token.prolog, .token.doctype, .token.cdata { - color: var(--tblr-gray-300); + color: var(--tblr-gray-300); } .token.punctuation { - color: var(--tblr-gray-500); + color: var(--tblr-gray-500); } .namespace { - opacity: .7; + opacity: 0.7; } .token.property, .token.tag { - color: #f92672; + color: #f92672; - /* We need to reset the 'tag' styles set by tabler */ - border: 0; - display: inherit; - height: inherit; - border-radius: inherit; - padding: 0; - background: inherit; - box-shadow: inherit; + /* We need to reset the 'tag' styles set by tabler */ + border: 0; + display: inherit; + height: inherit; + border-radius: inherit; + padding: 0; + background: inherit; + box-shadow: inherit; } .token.number { - color: #ea9999; + color: #ea9999; } .token.boolean { - color: #ae81ff; + color: #ae81ff; } .token.selector, .token.attr-name, .token.string { - color: #97e1a3; + color: #97e1a3; } .token.operator, @@ -46,47 +46,47 @@ .token.url, .language-css .token.string, .style .token.string { - color: #f8f8f2; + color: #f8f8f2; } .token.atrule, -.token.attr-value -{ - color: #e6db74; +.token.attr-value { + color: #e6db74; } - -.token.keyword{ -color: #95d1ff; +.token.keyword { + color: #95d1ff; } .token.regex, .token.important { - color: var(--tblr-yellow); + color: var(--tblr-yellow); } .token.important { - font-weight: bold; + font-weight: bold; } .token.entity { - cursor: help; + cursor: help; } .token { - transition: .3s; + transition: .3s; } -code::selection, code ::selection { - background: var(--tblr-yellow); - color: var(--tblr-gray-900); - border-radius: .1em; +code::selection, +code ::selection { + background: var(--tblr-yellow); + color: var(--tblr-gray-900); + border-radius: .1em; } -code .token.keyword::selection, code .token.punctuation::selection { - color: var(--tblr-gray-800); +code .token.keyword::selection, +code .token.punctuation::selection { + color: var(--tblr-gray-800); } pre code { - padding: 0; -} \ No newline at end of file + padding: 0; +} diff --git a/examples/CRUD - Authentication/www/css/style.css b/examples/CRUD - Authentication/www/css/style.css index 670eef93..a6bace37 100644 --- a/examples/CRUD - Authentication/www/css/style.css +++ b/examples/CRUD - Authentication/www/css/style.css @@ -11,13 +11,13 @@ } div.dropdown-menu- { - min-width: inherit !important; + min-width: inherit !important; } a.dropdown-item- { - min-width: inherit !important; + min-width: inherit !important; } .slim_item { - min-width: inherit !important; + min-width: inherit !important; } diff --git a/examples/PostGIS - using sqlpage with geographic data/sqlpage/sqlpage.json b/examples/PostGIS - using sqlpage with geographic data/sqlpage/sqlpage.json index a0806999..5216cfac 100644 --- a/examples/PostGIS - using sqlpage with geographic data/sqlpage/sqlpage.json +++ b/examples/PostGIS - using sqlpage with geographic data/sqlpage/sqlpage.json @@ -1,3 +1,3 @@ { - "database_url": "postgres://my_username:my_password@localhost:5432/my_geographic_database" -} \ No newline at end of file + "database_url": "postgres://my_username:my_password@localhost:5432/my_geographic_database" +} diff --git a/examples/SQLPage developer user interface/sqlpage/sqlpage.json b/examples/SQLPage developer user interface/sqlpage/sqlpage.json index 237588e9..6759cb60 100644 --- a/examples/SQLPage developer user interface/sqlpage/sqlpage.json +++ b/examples/SQLPage developer user interface/sqlpage/sqlpage.json @@ -1,3 +1,3 @@ { - "content_security_policy": "script-src blob: 'self' https://cdn.jsdelivr.net;" -} \ No newline at end of file + "content_security_policy": "script-src blob: 'self' https://cdn.jsdelivr.net;" +} diff --git a/examples/SQLPage developer user interface/website/js/code-editor.js b/examples/SQLPage developer user interface/website/js/code-editor.js index 7686754d..e8c35f54 100644 --- a/examples/SQLPage developer user interface/website/js/code-editor.js +++ b/examples/SQLPage developer user interface/website/js/code-editor.js @@ -1,34 +1,34 @@ -const cdn = 'https://cdn.jsdelivr.net/npm/monaco-editor@0.50.0/'; +const cdn = "https://cdn.jsdelivr.net/npm/monaco-editor@0.50.0/"; function on_monaco_load() { - // Create an editor div, display it after the '#code-editor' textarea, hide the textarea, and create a Monaco editor in the div with the contents of the textarea - // When the form is submitted, set the value of the textarea to the value of the Monaco editor - const textarea = document.getElementById('code-editor'); - const editorDiv = document.createElement('div'); - editorDiv.style.width = '100%'; - editorDiv.style.height = '700px'; - textarea.parentNode.insertBefore(editorDiv, textarea.nextSibling); - const monacoConfig = { - value: textarea.value, - language: 'sql', - }; + // Create an editor div, display it after the '#code-editor' textarea, hide the textarea, and create a Monaco editor in the div with the contents of the textarea + // When the form is submitted, set the value of the textarea to the value of the Monaco editor + const textarea = document.getElementById("code-editor"); + const editorDiv = document.createElement("div"); + editorDiv.style.width = "100%"; + editorDiv.style.height = "700px"; + textarea.parentNode.insertBefore(editorDiv, textarea.nextSibling); + const monacoConfig = { + value: textarea.value, + language: "sql", + }; - self.MonacoEnvironment = { - baseUrl: cdn + 'min/', - }; - const editor = monaco.editor.create(editorDiv, monacoConfig); - textarea.style.display = 'none'; - const form = textarea.form; - form.addEventListener('submit', () => { - textarea.value = editor.getValue(); - }); + self.MonacoEnvironment = { + baseUrl: `${cdn}min/`, + }; + const editor = monaco.editor.create(editorDiv, monacoConfig); + textarea.style.display = "none"; + const form = textarea.form; + form.addEventListener("submit", () => { + textarea.value = editor.getValue(); + }); } function set_require_config() { - require.config({ paths: { vs: cdn + 'min/vs' } }); - require(['vs/editor/editor.main'], on_monaco_load); + require.config({ paths: { vs: `${cdn}min/vs` } }); + require(["vs/editor/editor.main"], on_monaco_load); } -const loader_script = document.createElement('script'); -loader_script.src = cdn + 'min/vs/loader.js'; +const loader_script = document.createElement("script"); +loader_script.src = `${cdn}min/vs/loader.js`; loader_script.onload = set_require_config; -document.head.appendChild(loader_script); \ No newline at end of file +document.head.appendChild(loader_script); diff --git a/examples/image gallery with user uploads/sqlpage/sqlpage.json b/examples/image gallery with user uploads/sqlpage/sqlpage.json index 60322051..d7dc65b3 100644 --- a/examples/image gallery with user uploads/sqlpage/sqlpage.json +++ b/examples/image gallery with user uploads/sqlpage/sqlpage.json @@ -1,3 +1,3 @@ { - "max_uploaded_file_size": 5000000 -} \ No newline at end of file + "max_uploaded_file_size": 5000000 +} diff --git a/examples/make a geographic data application using sqlite extensions/sqlpage/sqlpage.json b/examples/make a geographic data application using sqlite extensions/sqlpage/sqlpage.json index 3f615f2f..7835c9be 100644 --- a/examples/make a geographic data application using sqlite extensions/sqlpage/sqlpage.json +++ b/examples/make a geographic data application using sqlite extensions/sqlpage/sqlpage.json @@ -1,5 +1,3 @@ { - "sqlite_extensions": [ - "mod_spatialite" - ] -} \ No newline at end of file + "sqlite_extensions": ["mod_spatialite"] +} diff --git a/examples/multiple-choice-question/website_header.json b/examples/multiple-choice-question/website_header.json index 235afce0..95e4088d 100644 --- a/examples/multiple-choice-question/website_header.json +++ b/examples/multiple-choice-question/website_header.json @@ -1,11 +1,7 @@ { - "component": "shell", - "title": "SQLPage Questions", - "icon": "help-hexagon", - "link": "/index.sql", - "menu_item": [ - "index", - "results", - "admin" - ] -} \ No newline at end of file + "component": "shell", + "title": "SQLPage Questions", + "icon": "help-hexagon", + "link": "/index.sql", + "menu_item": ["index", "results", "admin"] +} diff --git a/examples/nginx/sqlpage_config/sqlpage.json b/examples/nginx/sqlpage_config/sqlpage.json index 9a5d3302..1c564962 100644 --- a/examples/nginx/sqlpage_config/sqlpage.json +++ b/examples/nginx/sqlpage_config/sqlpage.json @@ -4,4 +4,4 @@ "max_uploaded_file_size": 10485760, "compress_responses": false, "environment": "production" -} \ No newline at end of file +} diff --git a/examples/official-site/highlightjs-launch.js b/examples/official-site/highlightjs-launch.js index 221b45bd..66ce4773 100644 --- a/examples/official-site/highlightjs-launch.js +++ b/examples/official-site/highlightjs-launch.js @@ -1 +1 @@ -hljs.highlightAll() \ No newline at end of file +hljs.highlightAll(); diff --git a/examples/official-site/highlightjs-tabler-theme.css b/examples/official-site/highlightjs-tabler-theme.css index 67dfa506..8bb94c0c 100644 --- a/examples/official-site/highlightjs-tabler-theme.css +++ b/examples/official-site/highlightjs-tabler-theme.css @@ -3,46 +3,46 @@ .hljs-prolog, .hljs-meta, .hljs-cdata { - color: #a598a3; + color: #a598a3; } /* Punctuation */ .hljs-template-variable, .hljs-punctuation { - color: #e9eac7; + color: #e9eac7; } /* Namespace */ .hljs-namespace { - opacity: .7; + opacity: 0.7; } /* Property and Tag */ .hljs-property { - color: #de5f8f; + color: #de5f8f; } /* Number */ .hljs-number { - color: #ea9999; + color: #ea9999; } /* Boolean */ .hljs-literal { - color: #ae81ff; + color: #ae81ff; } /* Selector, Attr-name, and String */ .hljs-attr { - color: #fcfce5; + color: #fcfce5; } .hljs-name { - color: #e4faf6; + color: #e4faf6; } .hljs-selector-tag, .hljs-string { - color: #97e1a3; + color: #97e1a3; } /* Operator, Entity, URL, CSS String, and Style String */ @@ -51,55 +51,57 @@ .hljs-link, .language-css .hljs-string, .style .hljs-string { - color: #f8f8f2; + color: #f8f8f2; } /* At-rule and Attr-value */ .hljs-tag, .hljs-keyword, .hljs-attribute-value { - color: #e6db74; + color: #e6db74; } /* Keyword */ .hljs-template-tag, .hljs-keyword { - color: #95d1ff; + color: #95d1ff; } /* Regex and Important */ .hljs-regexp, .hljs-important { - color: var(--tblr-yellow); + color: var(--tblr-yellow); } /* Important */ .hljs-important { - font-weight: bold; + font-weight: bold; } /* Entity */ .hljs-symbol { - cursor: help; + cursor: help; } /* Token transition */ .hljs { - transition: .3s; + transition: .3s; } /* Code selection */ -code::selection, code ::selection { - background: var(--tblr-yellow); - color: var(--tblr-gray-900); - border-radius: .1em; +code::selection, +code ::selection { + background: var(--tblr-yellow); + color: var(--tblr-gray-900); + border-radius: .1em; } -code .hljs-keyword::selection, code .hljs-punctuation::selection { - color: var(--tblr-gray-800); +code .hljs-keyword::selection, +code .hljs-punctuation::selection { + color: var(--tblr-gray-800); } /* Pre code padding */ pre code { - padding: 0; + padding: 0; } diff --git a/examples/official-site/style_pricing.css b/examples/official-site/style_pricing.css index 96e03a61..9bb0b1c0 100644 --- a/examples/official-site/style_pricing.css +++ b/examples/official-site/style_pricing.css @@ -1,16 +1,17 @@ -/* Ensure all unordered and ordered lists are left-aligned */ -ul, ol { - text-align: left; /* Aligns bullet points to the left */ - margin-left: 20px; /* Adds indentation for better readability */ - padding-left: 20px; /* Adds space between bullet and text */ -} - -/* Optional: Style for the individual list items */ -li { - margin-bottom: 10px; /* Adds space between list items */ -} - -/* Optional: Ensure the body text is also left-aligned */ -body { - text-align: left; /* Makes sure the overall page is left-aligned */ -} +/* Ensure all unordered and ordered lists are left-aligned */ +ul, +ol { + text-align: left; /* Aligns bullet points to the left */ + margin-left: 20px; /* Adds indentation for better readability */ + padding-left: 20px; /* Adds space between bullet and text */ +} + +/* Optional: Style for the individual list items */ +li { + margin-bottom: 10px; /* Adds space between list items */ +} + +/* Optional: Ensure the body text is also left-aligned */ +body { + text-align: left; /* Makes sure the overall page is left-aligned */ +} diff --git a/examples/read-and-set-http-cookies/sqlpage/sqlpage.json b/examples/read-and-set-http-cookies/sqlpage/sqlpage.json index 78995eb2..268bd02b 100644 --- a/examples/read-and-set-http-cookies/sqlpage/sqlpage.json +++ b/examples/read-and-set-http-cookies/sqlpage/sqlpage.json @@ -1,3 +1,3 @@ { - "database_url": "sqlite://:memory:" -} \ No newline at end of file + "database_url": "sqlite://:memory:" +} diff --git a/examples/simple-website-example/sqlpage/sqlpage.json b/examples/simple-website-example/sqlpage/sqlpage.json index 78995eb2..268bd02b 100644 --- a/examples/simple-website-example/sqlpage/sqlpage.json +++ b/examples/simple-website-example/sqlpage/sqlpage.json @@ -1,3 +1,3 @@ { - "database_url": "sqlite://:memory:" -} \ No newline at end of file + "database_url": "sqlite://:memory:" +} diff --git a/examples/single sign on/keycloak-configuration.json b/examples/single sign on/keycloak-configuration.json index daf0b9d0..63188a69 100644 --- a/examples/single sign on/keycloak-configuration.json +++ b/examples/single sign on/keycloak-configuration.json @@ -1,4402 +1,5194 @@ -[ { - "id" : "5f73cb7b-599f-4f68-83c3-b17124e40d58", - "realm" : "master", - "displayName" : "Keycloak", - "displayNameHtml" : "
Keycloak
", - "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, - "maxFailureWaitSeconds" : 900, - "minimumQuickLoginWaitSeconds" : 60, - "waitIncrementSeconds" : 60, - "quickLoginCheckMilliSeconds" : 1000, - "maxDeltaTimeSeconds" : 43200, - "failureFactor" : 30, - "roles" : { - "realm" : [ { - "id" : "fa37048d-c55d-487b-9f05-5b2ecd1ad183", - "name" : "uma_authorization", - "description" : "${role_uma_authorization}", - "composite" : false, - "clientRole" : false, - "containerId" : "5f73cb7b-599f-4f68-83c3-b17124e40d58", - "attributes" : { } - }, { - "id" : "4c2fe5cf-a97e-4f1f-9f6c-cc60e37f1716", - "name" : "create-realm", - "description" : "${role_create-realm}", - "composite" : false, - "clientRole" : false, - "containerId" : "5f73cb7b-599f-4f68-83c3-b17124e40d58", - "attributes" : { } - }, { - "id" : "e0046137-2806-4965-88e0-0c91ae41b926", - "name" : "admin", - "description" : "${role_admin}", - "composite" : true, - "composites" : { - "realm" : [ "create-realm" ], - "client" : { - "sqlpage_demo-realm" : [ "query-groups", "manage-identity-providers", "view-identity-providers", "create-client", "manage-events", "manage-users", "view-clients", "manage-realm", "view-events", "query-realms", "manage-clients", "manage-authorization", "view-users", "view-authorization", "view-realm", "impersonation", "query-users", "query-clients" ], - "master-realm" : [ "view-clients", "create-client", "query-realms", "manage-identity-providers", "query-users", "manage-clients", "view-users", "manage-events", "view-realm", "query-clients", "manage-users", "view-events", "query-groups", "impersonation", "manage-authorization", "manage-realm", "view-authorization", "view-identity-providers" ] +[ + { + "id": "5f73cb7b-599f-4f68-83c3-b17124e40d58", + "realm": "master", + "displayName": "Keycloak", + "displayNameHtml": "
Keycloak
", + "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, + "maxFailureWaitSeconds": 900, + "minimumQuickLoginWaitSeconds": 60, + "waitIncrementSeconds": 60, + "quickLoginCheckMilliSeconds": 1000, + "maxDeltaTimeSeconds": 43200, + "failureFactor": 30, + "roles": { + "realm": [ + { + "id": "fa37048d-c55d-487b-9f05-5b2ecd1ad183", + "name": "uma_authorization", + "description": "${role_uma_authorization}", + "composite": false, + "clientRole": false, + "containerId": "5f73cb7b-599f-4f68-83c3-b17124e40d58", + "attributes": {} + }, + { + "id": "4c2fe5cf-a97e-4f1f-9f6c-cc60e37f1716", + "name": "create-realm", + "description": "${role_create-realm}", + "composite": false, + "clientRole": false, + "containerId": "5f73cb7b-599f-4f68-83c3-b17124e40d58", + "attributes": {} + }, + { + "id": "e0046137-2806-4965-88e0-0c91ae41b926", + "name": "admin", + "description": "${role_admin}", + "composite": true, + "composites": { + "realm": ["create-realm"], + "client": { + "sqlpage_demo-realm": [ + "query-groups", + "manage-identity-providers", + "view-identity-providers", + "create-client", + "manage-events", + "manage-users", + "view-clients", + "manage-realm", + "view-events", + "query-realms", + "manage-clients", + "manage-authorization", + "view-users", + "view-authorization", + "view-realm", + "impersonation", + "query-users", + "query-clients" + ], + "master-realm": [ + "view-clients", + "create-client", + "query-realms", + "manage-identity-providers", + "query-users", + "manage-clients", + "view-users", + "manage-events", + "view-realm", + "query-clients", + "manage-users", + "view-events", + "query-groups", + "impersonation", + "manage-authorization", + "manage-realm", + "view-authorization", + "view-identity-providers" + ] + } + }, + "clientRole": false, + "containerId": "5f73cb7b-599f-4f68-83c3-b17124e40d58", + "attributes": {} + }, + { + "id": "0ddc8579-014d-4eb6-ab53-fde831a6e154", + "name": "offline_access", + "description": "${role_offline-access}", + "composite": false, + "clientRole": false, + "containerId": "5f73cb7b-599f-4f68-83c3-b17124e40d58", + "attributes": {} + }, + { + "id": "61cb3fed-151e-451f-b011-56d1151776ac", + "name": "default-roles-master", + "description": "${role_default-roles}", + "composite": true, + "composites": { + "realm": ["offline_access", "uma_authorization"], + "client": { + "account": ["manage-account", "view-profile"] + } + }, + "clientRole": false, + "containerId": "5f73cb7b-599f-4f68-83c3-b17124e40d58", + "attributes": {} + } + ], + "client": { + "sqlpage_demo-realm": [ + { + "id": "40ced5cd-0c95-4744-a94a-c3a5dd0fb663", + "name": "manage-users", + "description": "${role_manage-users}", + "composite": false, + "clientRole": true, + "containerId": "bf7f06c1-44b0-49a8-9b2f-ec7404cc5f68", + "attributes": {} + }, + { + "id": "60403499-b079-4fdb-b15f-6a945ff0bf0a", + "name": "view-clients", + "description": "${role_view-clients}", + "composite": true, + "composites": { + "client": { + "sqlpage_demo-realm": ["query-clients"] + } + }, + "clientRole": true, + "containerId": "bf7f06c1-44b0-49a8-9b2f-ec7404cc5f68", + "attributes": {} + }, + { + "id": "4bda1119-5e5f-47ba-9d43-682db8329ccd", + "name": "query-groups", + "description": "${role_query-groups}", + "composite": false, + "clientRole": true, + "containerId": "bf7f06c1-44b0-49a8-9b2f-ec7404cc5f68", + "attributes": {} + }, + { + "id": "8b31c85c-a443-4560-b95e-8b7a83642075", + "name": "manage-realm", + "description": "${role_manage-realm}", + "composite": false, + "clientRole": true, + "containerId": "bf7f06c1-44b0-49a8-9b2f-ec7404cc5f68", + "attributes": {} + }, + { + "id": "37febc4a-1285-43b0-925f-e38faab5e2d2", + "name": "view-events", + "description": "${role_view-events}", + "composite": false, + "clientRole": true, + "containerId": "bf7f06c1-44b0-49a8-9b2f-ec7404cc5f68", + "attributes": {} + }, + { + "id": "7e898f5d-d3b0-4403-905f-fb1d90642b74", + "name": "query-realms", + "description": "${role_query-realms}", + "composite": false, + "clientRole": true, + "containerId": "bf7f06c1-44b0-49a8-9b2f-ec7404cc5f68", + "attributes": {} + }, + { + "id": "dc84895d-4926-47a3-a848-5c82362d23d7", + "name": "manage-clients", + "description": "${role_manage-clients}", + "composite": false, + "clientRole": true, + "containerId": "bf7f06c1-44b0-49a8-9b2f-ec7404cc5f68", + "attributes": {} + }, + { + "id": "d638dabd-fd0b-4a62-84ea-c1555fc3e7df", + "name": "manage-identity-providers", + "description": "${role_manage-identity-providers}", + "composite": false, + "clientRole": true, + "containerId": "bf7f06c1-44b0-49a8-9b2f-ec7404cc5f68", + "attributes": {} + }, + { + "id": "1d39315b-0b1e-4088-a2ca-c47c2a4d90e7", + "name": "manage-authorization", + "description": "${role_manage-authorization}", + "composite": false, + "clientRole": true, + "containerId": "bf7f06c1-44b0-49a8-9b2f-ec7404cc5f68", + "attributes": {} + }, + { + "id": "fe8dc00f-e512-4d90-a5d0-7f811173f904", + "name": "view-users", + "description": "${role_view-users}", + "composite": true, + "composites": { + "client": { + "sqlpage_demo-realm": ["query-groups", "query-users"] + } + }, + "clientRole": true, + "containerId": "bf7f06c1-44b0-49a8-9b2f-ec7404cc5f68", + "attributes": {} + }, + { + "id": "52f054ce-8ff5-4889-b72a-75a9a4177096", + "name": "view-authorization", + "description": "${role_view-authorization}", + "composite": false, + "clientRole": true, + "containerId": "bf7f06c1-44b0-49a8-9b2f-ec7404cc5f68", + "attributes": {} + }, + { + "id": "19a225db-b6e6-4a4a-a94d-8f48d2b800a5", + "name": "view-identity-providers", + "description": "${role_view-identity-providers}", + "composite": false, + "clientRole": true, + "containerId": "bf7f06c1-44b0-49a8-9b2f-ec7404cc5f68", + "attributes": {} + }, + { + "id": "ee30de19-c3a3-4d91-92c9-665efd0b81e9", + "name": "view-realm", + "description": "${role_view-realm}", + "composite": false, + "clientRole": true, + "containerId": "bf7f06c1-44b0-49a8-9b2f-ec7404cc5f68", + "attributes": {} + }, + { + "id": "c52f6f99-480c-4fc8-b3fb-809ac4de2310", + "name": "create-client", + "description": "${role_create-client}", + "composite": false, + "clientRole": true, + "containerId": "bf7f06c1-44b0-49a8-9b2f-ec7404cc5f68", + "attributes": {} + }, + { + "id": "2a0f02c1-da44-4d20-af96-e572a2565be8", + "name": "impersonation", + "description": "${role_impersonation}", + "composite": false, + "clientRole": true, + "containerId": "bf7f06c1-44b0-49a8-9b2f-ec7404cc5f68", + "attributes": {} + }, + { + "id": "130d9aa5-ac88-4328-94d4-3a3ef9816186", + "name": "query-users", + "description": "${role_query-users}", + "composite": false, + "clientRole": true, + "containerId": "bf7f06c1-44b0-49a8-9b2f-ec7404cc5f68", + "attributes": {} + }, + { + "id": "5fd36a14-c6e5-40d6-a672-4d77f7ce1254", + "name": "manage-events", + "description": "${role_manage-events}", + "composite": false, + "clientRole": true, + "containerId": "bf7f06c1-44b0-49a8-9b2f-ec7404cc5f68", + "attributes": {} + }, + { + "id": "72306ee2-fd75-486d-8b97-a841263a076e", + "name": "query-clients", + "description": "${role_query-clients}", + "composite": false, + "clientRole": true, + "containerId": "bf7f06c1-44b0-49a8-9b2f-ec7404cc5f68", + "attributes": {} + } + ], + "security-admin-console": [], + "admin-cli": [], + "account-console": [], + "broker": [ + { + "id": "8d3a5474-6dfe-4469-b8bc-41ae80a0f233", + "name": "read-token", + "description": "${role_read-token}", + "composite": false, + "clientRole": true, + "containerId": "df3db4cd-a33d-4ee2-b01b-18045049b41a", + "attributes": {} + } + ], + "master-realm": [ + { + "id": "bc5b59c5-ddd5-491c-87c7-032490debf43", + "name": "view-clients", + "description": "${role_view-clients}", + "composite": true, + "composites": { + "client": { + "master-realm": ["query-clients"] + } + }, + "clientRole": true, + "containerId": "b2f502a5-827b-4bf7-b091-a8fddd00a387", + "attributes": {} + }, + { + "id": "519edb16-8a73-42c2-8338-ea0615fa15fd", + "name": "create-client", + "description": "${role_create-client}", + "composite": false, + "clientRole": true, + "containerId": "b2f502a5-827b-4bf7-b091-a8fddd00a387", + "attributes": {} + }, + { + "id": "a68d4b01-74d5-4c5b-9be7-33f61d3624dd", + "name": "view-events", + "description": "${role_view-events}", + "composite": false, + "clientRole": true, + "containerId": "b2f502a5-827b-4bf7-b091-a8fddd00a387", + "attributes": {} + }, + { + "id": "a1809708-2e5f-49e6-aede-26e2554ff476", + "name": "query-groups", + "description": "${role_query-groups}", + "composite": false, + "clientRole": true, + "containerId": "b2f502a5-827b-4bf7-b091-a8fddd00a387", + "attributes": {} + }, + { + "id": "84f1ac8d-79d0-4ad9-a8e1-7230da1a9992", + "name": "impersonation", + "description": "${role_impersonation}", + "composite": false, + "clientRole": true, + "containerId": "b2f502a5-827b-4bf7-b091-a8fddd00a387", + "attributes": {} + }, + { + "id": "a1e8ce6e-6a7e-4d73-876d-1e7f42bc4080", + "name": "manage-identity-providers", + "description": "${role_manage-identity-providers}", + "composite": false, + "clientRole": true, + "containerId": "b2f502a5-827b-4bf7-b091-a8fddd00a387", + "attributes": {} + }, + { + "id": "2596e057-92ae-476c-9e64-48ea027b905d", + "name": "query-realms", + "description": "${role_query-realms}", + "composite": false, + "clientRole": true, + "containerId": "b2f502a5-827b-4bf7-b091-a8fddd00a387", + "attributes": {} + }, + { + "id": "bf8a6c05-3614-4fef-8554-b303110843c3", + "name": "query-users", + "description": "${role_query-users}", + "composite": false, + "clientRole": true, + "containerId": "b2f502a5-827b-4bf7-b091-a8fddd00a387", + "attributes": {} + }, + { + "id": "f8e778fe-eb68-435c-a6ba-20a606b3c76d", + "name": "manage-clients", + "description": "${role_manage-clients}", + "composite": false, + "clientRole": true, + "containerId": "b2f502a5-827b-4bf7-b091-a8fddd00a387", + "attributes": {} + }, + { + "id": "585afece-a5b2-43db-9000-9c2d8b8efa46", + "name": "manage-authorization", + "description": "${role_manage-authorization}", + "composite": false, + "clientRole": true, + "containerId": "b2f502a5-827b-4bf7-b091-a8fddd00a387", + "attributes": {} + }, + { + "id": "34bc0dc8-898d-4860-906e-1ce9da5c0523", + "name": "view-users", + "description": "${role_view-users}", + "composite": true, + "composites": { + "client": { + "master-realm": ["query-groups", "query-users"] + } + }, + "clientRole": true, + "containerId": "b2f502a5-827b-4bf7-b091-a8fddd00a387", + "attributes": {} + }, + { + "id": "41695096-c0a7-40fb-963b-a0b2a48f7b4e", + "name": "manage-realm", + "description": "${role_manage-realm}", + "composite": false, + "clientRole": true, + "containerId": "b2f502a5-827b-4bf7-b091-a8fddd00a387", + "attributes": {} + }, + { + "id": "80b05b2d-92e9-469f-9081-d1afc6ddf965", + "name": "manage-events", + "description": "${role_manage-events}", + "composite": false, + "clientRole": true, + "containerId": "b2f502a5-827b-4bf7-b091-a8fddd00a387", + "attributes": {} + }, + { + "id": "daf30043-9627-4686-9b76-9559c8ef4b4d", + "name": "view-realm", + "description": "${role_view-realm}", + "composite": false, + "clientRole": true, + "containerId": "b2f502a5-827b-4bf7-b091-a8fddd00a387", + "attributes": {} + }, + { + "id": "2e9bc83b-807a-4c0b-89b0-b840143e6f40", + "name": "view-authorization", + "description": "${role_view-authorization}", + "composite": false, + "clientRole": true, + "containerId": "b2f502a5-827b-4bf7-b091-a8fddd00a387", + "attributes": {} + }, + { + "id": "f60c6aa3-ce53-41a2-a5b8-68c0a648d5b7", + "name": "query-clients", + "description": "${role_query-clients}", + "composite": false, + "clientRole": true, + "containerId": "b2f502a5-827b-4bf7-b091-a8fddd00a387", + "attributes": {} + }, + { + "id": "c27d3690-ba51-472a-baac-47d12711a9fd", + "name": "view-identity-providers", + "description": "${role_view-identity-providers}", + "composite": false, + "clientRole": true, + "containerId": "b2f502a5-827b-4bf7-b091-a8fddd00a387", + "attributes": {} + }, + { + "id": "02d6931e-f3be-4e98-a65e-8d591d8ad119", + "name": "manage-users", + "description": "${role_manage-users}", + "composite": false, + "clientRole": true, + "containerId": "b2f502a5-827b-4bf7-b091-a8fddd00a387", + "attributes": {} + } + ], + "account": [ + { + "id": "a5beee68-7d37-410e-b91c-1bbfe311c561", + "name": "manage-account-links", + "description": "${role_manage-account-links}", + "composite": false, + "clientRole": true, + "containerId": "548df36a-4803-4f86-add2-8a11665adac8", + "attributes": {} + }, + { + "id": "447234fa-61f0-4721-8102-3f98ce445879", + "name": "manage-account", + "description": "${role_manage-account}", + "composite": true, + "composites": { + "client": { + "account": ["manage-account-links"] + } + }, + "clientRole": true, + "containerId": "548df36a-4803-4f86-add2-8a11665adac8", + "attributes": {} + }, + { + "id": "c4a7b25b-e306-4a90-baca-fcdb5b8a9a03", + "name": "view-applications", + "description": "${role_view-applications}", + "composite": false, + "clientRole": true, + "containerId": "548df36a-4803-4f86-add2-8a11665adac8", + "attributes": {} + }, + { + "id": "d53be66b-ed3d-4bab-bcc2-047118d5eae8", + "name": "view-profile", + "description": "${role_view-profile}", + "composite": false, + "clientRole": true, + "containerId": "548df36a-4803-4f86-add2-8a11665adac8", + "attributes": {} + }, + { + "id": "1951173a-4eb1-4453-841f-0fb155cf5927", + "name": "view-groups", + "description": "${role_view-groups}", + "composite": false, + "clientRole": true, + "containerId": "548df36a-4803-4f86-add2-8a11665adac8", + "attributes": {} + }, + { + "id": "8ee81e62-4e2b-4b7f-a754-3876355dad7a", + "name": "manage-consent", + "description": "${role_manage-consent}", + "composite": true, + "composites": { + "client": { + "account": ["view-consent"] + } + }, + "clientRole": true, + "containerId": "548df36a-4803-4f86-add2-8a11665adac8", + "attributes": {} + }, + { + "id": "b1bf48f8-8ee8-4783-8f4b-4befa3478f9c", + "name": "delete-account", + "description": "${role_delete-account}", + "composite": false, + "clientRole": true, + "containerId": "548df36a-4803-4f86-add2-8a11665adac8", + "attributes": {} + }, + { + "id": "2a77c895-227c-44a0-b046-a36eea529966", + "name": "view-consent", + "description": "${role_view-consent}", + "composite": false, + "clientRole": true, + "containerId": "548df36a-4803-4f86-add2-8a11665adac8", + "attributes": {} + } + ] + } + }, + "groups": [], + "defaultRole": { + "id": "61cb3fed-151e-451f-b011-56d1151776ac", + "name": "default-roles-master", + "description": "${role_default-roles}", + "composite": true, + "clientRole": false, + "containerId": "5f73cb7b-599f-4f68-83c3-b17124e40d58" + }, + "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"], + "webAuthnPolicyRpId": "", + "webAuthnPolicyAttestationConveyancePreference": "not specified", + "webAuthnPolicyAuthenticatorAttachment": "not specified", + "webAuthnPolicyRequireResidentKey": "not specified", + "webAuthnPolicyUserVerificationRequirement": "not specified", + "webAuthnPolicyCreateTimeout": 0, + "webAuthnPolicyAvoidSameAuthenticatorRegister": false, + "webAuthnPolicyAcceptableAaguids": [], + "webAuthnPolicyExtraOrigins": [], + "webAuthnPolicyPasswordlessRpEntityName": "keycloak", + "webAuthnPolicyPasswordlessSignatureAlgorithms": ["ES256"], + "webAuthnPolicyPasswordlessRpId": "", + "webAuthnPolicyPasswordlessAttestationConveyancePreference": "not specified", + "webAuthnPolicyPasswordlessAuthenticatorAttachment": "not specified", + "webAuthnPolicyPasswordlessRequireResidentKey": "not specified", + "webAuthnPolicyPasswordlessUserVerificationRequirement": "not specified", + "webAuthnPolicyPasswordlessCreateTimeout": 0, + "webAuthnPolicyPasswordlessAvoidSameAuthenticatorRegister": false, + "webAuthnPolicyPasswordlessAcceptableAaguids": [], + "webAuthnPolicyPasswordlessExtraOrigins": [], + "users": [ + { + "id": "58e5d97b-9831-490f-bbc0-68f460f16d81", + "username": "admin", + "emailVerified": false, + "createdTimestamp": 1714302502071, + "enabled": true, + "totp": false, + "credentials": [ + { + "id": "27bded41-d568-47f5-a269-f27ab4771e2a", + "type": "password", + "createdDate": 1714302502562, + "secretData": "{\"value\":\"zxGd9GuNE1SzUjftYGfX5ezyW2wGI6NxHgzrIvbnA7oFFlGbScyvw/JGQM7P1WNXvVduMoxoLF89Z6ouj04NAw==\",\"salt\":\"vjBzOJpRplLE5ttVq2jf7A==\",\"additionalParameters\":{}}", + "credentialData": "{\"hashIterations\":210000,\"algorithm\":\"pbkdf2-sha512\",\"additionalParameters\":{}}" + } + ], + "disableableCredentialTypes": [], + "requiredActions": [], + "realmRoles": ["admin", "default-roles-master"], + "notBefore": 0, + "groups": [] + } + ], + "scopeMappings": [ + { + "clientScope": "offline_access", + "roles": ["offline_access"] + } + ], + "clientScopeMappings": { + "account": [ + { + "client": "account-console", + "roles": ["manage-account", "view-groups"] + } + ] + }, + "clients": [ + { + "id": "548df36a-4803-4f86-add2-8a11665adac8", + "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": { + "post.logout.redirect.uris": "+" + }, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "protocolMappers": [ + { + "id": "d9279cc6-cb5b-41c1-8fd7-36e7f60a23b7", + "name": "given name", + "protocol": "cas", + "protocolMapper": "cas-usermodel-property-mapper", + "consentRequired": false, + "config": { + "user.attribute": "firstName", + "claim.name": "givenName", + "jsonType.label": "String" + } + }, + { + "id": "100d64da-deea-405d-b5a5-56cc99608fa0", + "name": "email", + "protocol": "cas", + "protocolMapper": "cas-usermodel-property-mapper", + "consentRequired": false, + "config": { + "user.attribute": "email", + "claim.name": "mail", + "jsonType.label": "String" + } + }, + { + "id": "cad8d965-0689-471c-a8f5-4f7c3b00d9b1", + "name": "full name", + "protocol": "cas", + "protocolMapper": "cas-full-name-mapper", + "consentRequired": false, + "config": { + "claim.name": "cn", + "jsonType.label": "String" + } + }, + { + "id": "b41078e0-72dc-4144-81e8-af081a05edbd", + "name": "family name", + "protocol": "cas", + "protocolMapper": "cas-usermodel-property-mapper", + "consentRequired": false, + "config": { + "user.attribute": "lastName", + "claim.name": "sn", + "jsonType.label": "String" + } + } + ], + "defaultClientScopes": [ + "web-origins", + "acr", + "profile", + "roles", + "email" + ], + "optionalClientScopes": [ + "address", + "phone", + "offline_access", + "microprofile-jwt" + ] + }, + { + "id": "4fa7d798-9835-48f4-a0fe-3c3492332330", + "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": { + "post.logout.redirect.uris": "+", + "pkce.code.challenge.method": "S256" + }, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "protocolMappers": [ + { + "id": "0b95958b-e395-438d-8497-039d7218d177", + "name": "family name", + "protocol": "cas", + "protocolMapper": "cas-usermodel-property-mapper", + "consentRequired": false, + "config": { + "user.attribute": "lastName", + "claim.name": "sn", + "jsonType.label": "String" + } + }, + { + "id": "b7e6d29a-cb8f-4b44-890a-9eb657afe855", + "name": "email", + "protocol": "cas", + "protocolMapper": "cas-usermodel-property-mapper", + "consentRequired": false, + "config": { + "user.attribute": "email", + "claim.name": "mail", + "jsonType.label": "String" + } + }, + { + "id": "1eac3cae-7b57-44e9-964e-08465d791657", + "name": "given name", + "protocol": "cas", + "protocolMapper": "cas-usermodel-property-mapper", + "consentRequired": false, + "config": { + "user.attribute": "firstName", + "claim.name": "givenName", + "jsonType.label": "String" + } + }, + { + "id": "7ecbae12-e10d-441d-8d3e-58bfeee4fd24", + "name": "full name", + "protocol": "cas", + "protocolMapper": "cas-full-name-mapper", + "consentRequired": false, + "config": { + "claim.name": "cn", + "jsonType.label": "String" + } + }, + { + "id": "c868d4b5-ae14-45ac-b067-b14169485108", + "name": "audience resolve", + "protocol": "openid-connect", + "protocolMapper": "oidc-audience-resolve-mapper", + "consentRequired": false, + "config": {} + } + ], + "defaultClientScopes": [ + "web-origins", + "acr", + "profile", + "roles", + "email" + ], + "optionalClientScopes": [ + "address", + "phone", + "offline_access", + "microprofile-jwt" + ] + }, + { + "id": "28900f98-4064-47bc-a5c7-cea8a942b271", + "clientId": "admin-cli", + "name": "${client_admin-cli}", + "surrogateAuthRequired": false, + "enabled": true, + "alwaysDisplayInConsole": false, + "clientAuthenticatorType": "client-secret", + "redirectUris": [], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": false, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": true, + "serviceAccountsEnabled": false, + "publicClient": true, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": {}, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "protocolMappers": [ + { + "id": "2161312a-e188-4b1f-a667-4e2de4509a58", + "name": "email", + "protocol": "cas", + "protocolMapper": "cas-usermodel-property-mapper", + "consentRequired": false, + "config": { + "user.attribute": "email", + "claim.name": "mail", + "jsonType.label": "String" + } + }, + { + "id": "9a9c2187-e74a-4abf-bf40-a809af28b9c6", + "name": "family name", + "protocol": "cas", + "protocolMapper": "cas-usermodel-property-mapper", + "consentRequired": false, + "config": { + "user.attribute": "lastName", + "claim.name": "sn", + "jsonType.label": "String" + } + }, + { + "id": "b58ac8bc-2c8e-45b0-94d7-5d12c6d75d59", + "name": "full name", + "protocol": "cas", + "protocolMapper": "cas-full-name-mapper", + "consentRequired": false, + "config": { + "claim.name": "cn", + "jsonType.label": "String" + } + }, + { + "id": "857c8afc-fa5b-4d99-879c-c57cef6aba04", + "name": "given name", + "protocol": "cas", + "protocolMapper": "cas-usermodel-property-mapper", + "consentRequired": false, + "config": { + "user.attribute": "firstName", + "claim.name": "givenName", + "jsonType.label": "String" + } + } + ], + "defaultClientScopes": [ + "web-origins", + "acr", + "profile", + "roles", + "email" + ], + "optionalClientScopes": [ + "address", + "phone", + "offline_access", + "microprofile-jwt" + ] + }, + { + "id": "df3db4cd-a33d-4ee2-b01b-18045049b41a", + "clientId": "broker", + "name": "${client_broker}", + "surrogateAuthRequired": false, + "enabled": true, + "alwaysDisplayInConsole": false, + "clientAuthenticatorType": "client-secret", + "redirectUris": [], + "webOrigins": [], + "notBefore": 0, + "bearerOnly": true, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": false, + "serviceAccountsEnabled": false, + "publicClient": false, + "frontchannelLogout": false, + "protocol": "openid-connect", + "attributes": {}, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "protocolMappers": [ + { + "id": "74b9c284-7c0e-49df-b2cd-b66d795cf3c4", + "name": "full name", + "protocol": "cas", + "protocolMapper": "cas-full-name-mapper", + "consentRequired": false, + "config": { + "claim.name": "cn", + "jsonType.label": "String" + } + }, + { + "id": "3b7f9e64-5284-4dfa-90ac-a1c3330696b3", + "name": "email", + "protocol": "cas", + "protocolMapper": "cas-usermodel-property-mapper", + "consentRequired": false, + "config": { + "user.attribute": "email", + "claim.name": "mail", + "jsonType.label": "String" + } + }, + { + "id": "24ebaebc-0557-40fe-a009-f808ce945683", + "name": "family name", + "protocol": "cas", + "protocolMapper": "cas-usermodel-property-mapper", + "consentRequired": false, + "config": { + "user.attribute": "lastName", + "claim.name": "sn", + "jsonType.label": "String" + } + }, + { + "id": "8b808633-3d15-40ae-bead-ca78fe818123", + "name": "given name", + "protocol": "cas", + "protocolMapper": "cas-usermodel-property-mapper", + "consentRequired": false, + "config": { + "user.attribute": "firstName", + "claim.name": "givenName", + "jsonType.label": "String" + } + } + ], + "defaultClientScopes": [ + "web-origins", + "acr", + "profile", + "roles", + "email" + ], + "optionalClientScopes": [ + "address", + "phone", + "offline_access", + "microprofile-jwt" + ] + }, + { + "id": "b2f502a5-827b-4bf7-b091-a8fddd00a387", + "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, + "attributes": {}, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "defaultClientScopes": [ + "web-origins", + "acr", + "profile", + "roles", + "email" + ], + "optionalClientScopes": [ + "address", + "phone", + "offline_access", + "microprofile-jwt" + ] + }, + { + "id": "071f72e9-d5bb-455a-9be1-4fcb1331e457", + "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": { + "post.logout.redirect.uris": "+", + "pkce.code.challenge.method": "S256" + }, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "protocolMappers": [ + { + "id": "889813d1-5d6e-4231-bd20-a4a6f97473cc", + "name": "email", + "protocol": "cas", + "protocolMapper": "cas-usermodel-property-mapper", + "consentRequired": false, + "config": { + "user.attribute": "email", + "claim.name": "mail", + "jsonType.label": "String" + } + }, + { + "id": "b1fddb28-d474-48e7-84e2-0162ef1025c6", + "name": "given name", + "protocol": "cas", + "protocolMapper": "cas-usermodel-property-mapper", + "consentRequired": false, + "config": { + "user.attribute": "firstName", + "claim.name": "givenName", + "jsonType.label": "String" + } + }, + { + "id": "5315dcae-6e46-48aa-a9f9-7e185c3ca07c", + "name": "family name", + "protocol": "cas", + "protocolMapper": "cas-usermodel-property-mapper", + "consentRequired": false, + "config": { + "user.attribute": "lastName", + "claim.name": "sn", + "jsonType.label": "String" + } + }, + { + "id": "ce16e2de-8217-45f6-8771-b07df4a1ad61", + "name": "full name", + "protocol": "cas", + "protocolMapper": "cas-full-name-mapper", + "consentRequired": false, + "config": { + "claim.name": "cn", + "jsonType.label": "String" + } + }, + { + "id": "2b89a9f1-a008-4585-ba1b-2f572ff9ab79", + "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", + "email" + ], + "optionalClientScopes": [ + "address", + "phone", + "offline_access", + "microprofile-jwt" + ] + }, + { + "id": "bf7f06c1-44b0-49a8-9b2f-ec7404cc5f68", + "clientId": "sqlpage_demo-realm", + "name": "sqlpage_demo 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, + "attributes": {}, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "defaultClientScopes": [], + "optionalClientScopes": [] + } + ], + "clientScopes": [ + { + "id": "1e989c16-9d9d-4f3c-94a3-716818c8dc9d", + "name": "offline_access", + "description": "OpenID Connect built-in scope: offline_access", + "protocol": "openid-connect", + "attributes": { + "consent.screen.text": "${offlineAccessScopeConsentText}", + "display.on.consent.screen": "true" } }, - "clientRole" : false, - "containerId" : "5f73cb7b-599f-4f68-83c3-b17124e40d58", - "attributes" : { } - }, { - "id" : "0ddc8579-014d-4eb6-ab53-fde831a6e154", - "name" : "offline_access", - "description" : "${role_offline-access}", - "composite" : false, - "clientRole" : false, - "containerId" : "5f73cb7b-599f-4f68-83c3-b17124e40d58", - "attributes" : { } - }, { - "id" : "61cb3fed-151e-451f-b011-56d1151776ac", - "name" : "default-roles-master", - "description" : "${role_default-roles}", - "composite" : true, - "composites" : { - "realm" : [ "offline_access", "uma_authorization" ], - "client" : { - "account" : [ "manage-account", "view-profile" ] + { + "id": "4d80d5a5-95b0-47f4-bf08-71ff6b937aed", + "name": "profile", + "description": "OpenID Connect built-in scope: profile", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "true", + "display.on.consent.screen": "true", + "consent.screen.text": "${profileScopeConsentText}" + }, + "protocolMappers": [ + { + "id": "d9f8bbb5-888b-421f-8f10-827d71fc7358", + "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": "7345ab35-e87d-4528-aed7-6a6706de8b0e", + "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": "6601aaa8-200b-436d-ab91-28ba73293929", + "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": "7078b501-9680-43b2-8453-8c41d8fc978c", + "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": "ee508732-54be-4521-a6bf-5e96a8f00fbe", + "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": "894275e2-3795-43dc-8d0a-91f4c1643003", + "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": "688312eb-1d1e-4970-b687-c2c695019444", + "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": "0dfa839a-c270-475b-830e-d467e62fe902", + "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": "0b4b524c-8a60-400a-84a3-fc9f7cbe50c0", + "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": "b1132b2d-e1a3-4aab-bf17-24adfbf8a83d", + "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": "9beed4ad-1273-4691-8fdb-bd061cc26d0b", + "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": "0964864c-7715-4d62-b2b5-e975fa008220", + "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": "271101af-00a4-4795-b196-a8bd55608722", + "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": "a0eb9ae7-dfc4-4da4-a127-3a8b93b25cb4", + "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": "dc6647f4-0dce-47f9-afb9-0a31bd0d6ebc", + "name": "roles", + "description": "OpenID Connect scope for add user roles to the access token", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "false", + "display.on.consent.screen": "true", + "consent.screen.text": "${rolesScopeConsentText}" + }, + "protocolMappers": [ + { + "id": "d9494cdb-c2f3-456b-a537-87206389168d", + "name": "audience resolve", + "protocol": "openid-connect", + "protocolMapper": "oidc-audience-resolve-mapper", + "consentRequired": false, + "config": { + "introspection.token.claim": "true", + "access.token.claim": "true" + } + }, + { + "id": "bfcdf78c-4736-46da-9380-630c90b536f7", + "name": "realm roles", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-realm-role-mapper", + "consentRequired": false, + "config": { + "introspection.token.claim": "true", + "multivalued": "true", + "user.attribute": "foo", + "access.token.claim": "true", + "claim.name": "realm_access.roles", + "jsonType.label": "String" + } + }, + { + "id": "8126f072-2927-44f0-a9b2-acd1dc6380b2", + "name": "client roles", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-client-role-mapper", + "consentRequired": false, + "config": { + "introspection.token.claim": "true", + "multivalued": "true", + "user.attribute": "foo", + "access.token.claim": "true", + "claim.name": "resource_access.${client_id}.roles", + "jsonType.label": "String" + } + } + ] + }, + { + "id": "795915bd-d6f5-467f-a2fd-f828090e778f", + "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": "c213dbf9-fdd7-4a8a-9a9e-9440c06ef513", + "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" + } + } + ] + }, + { + "id": "2cea4163-775c-4943-800c-fb65df65e2bb", + "name": "phone", + "description": "OpenID Connect built-in scope: phone", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "true", + "display.on.consent.screen": "true", + "consent.screen.text": "${phoneScopeConsentText}" + }, + "protocolMappers": [ + { + "id": "7a93c95d-1d84-4277-b44e-ed57761b8bf4", + "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": "3cc9adcb-1a09-424d-a7c9-b8c4ed6f98d7", + "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": "ec0a170e-3020-4c72-bc82-035757e5f9fa", + "name": "web-origins", + "description": "OpenID Connect scope for add allowed web origins to the access token", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "false", + "display.on.consent.screen": "false", + "consent.screen.text": "" + }, + "protocolMappers": [ + { + "id": "64ae245b-f699-4762-83d0-9d85d8205065", + "name": "allowed web origins", + "protocol": "openid-connect", + "protocolMapper": "oidc-allowed-origins-mapper", + "consentRequired": false, + "config": { + "introspection.token.claim": "true", + "access.token.claim": "true" + } + } + ] + }, + { + "id": "ca1a8718-ad1d-4970-8b2b-074326cdffac", + "name": "email", + "description": "OpenID Connect built-in scope: email", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "true", + "display.on.consent.screen": "true", + "consent.screen.text": "${emailScopeConsentText}" + }, + "protocolMappers": [ + { + "id": "212c3ce9-b512-466e-86b1-c58b5440aa90", + "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": "6ba8694a-ec0f-4684-b82e-d36c4ee04139", + "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": "2a9f50b0-fcd6-4f96-98d5-d311693a379f", + "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": "c1f53b10-2a8d-4191-b4ae-24cc07a2f78f", + "name": "groups", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-realm-role-mapper", + "consentRequired": false, + "config": { + "introspection.token.claim": "true", + "multivalued": "true", + "user.attribute": "foo", + "id.token.claim": "true", + "access.token.claim": "true", + "claim.name": "groups", + "jsonType.label": "String" + } + }, + { + "id": "90c9e9a5-cdb2-40b2-bd2a-bce5c0924721", + "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": "4f873674-3e7f-4dff-bb20-83060bca777b", + "name": "role_list", + "description": "SAML role list", + "protocol": "saml", + "attributes": { + "consent.screen.text": "${samlRoleListScopeConsentText}", + "display.on.consent.screen": "true" + }, + "protocolMappers": [ + { + "id": "839733ca-3361-46c9-9782-2204afb5a876", + "name": "role list", + "protocol": "saml", + "protocolMapper": "saml-role-list-mapper", + "consentRequired": false, + "config": { + "single": "false", + "attribute.nameformat": "Basic", + "attribute.name": "Role" + } + } + ] + }, + { + "id": "be0ed55a-e21d-4362-914f-b32a5c6b4dc1", + "name": "address", + "description": "OpenID Connect built-in scope: address", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "true", + "display.on.consent.screen": "true", + "consent.screen.text": "${addressScopeConsentText}" + }, + "protocolMappers": [ + { + "id": "921bba46-dbaf-4d54-8b23-a8a40d55ab1c", + "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" + } + } + ] + } + ], + "defaultDefaultClientScopes": [ + "role_list", + "profile", + "email", + "roles", + "web-origins", + "acr" + ], + "defaultOptionalClientScopes": [ + "offline_access", + "address", + "phone", + "microprofile-jwt" + ], + "browserSecurityHeaders": { + "contentSecurityPolicyReportOnly": "", + "xContentTypeOptions": "nosniff", + "referrerPolicy": "no-referrer", + "xRobotsTag": "none", + "xFrameOptions": "SAMEORIGIN", + "xXSSProtection": "1; mode=block", + "contentSecurityPolicy": "frame-src 'self'; frame-ancestors 'self'; object-src 'none';", + "strictTransportSecurity": "max-age=31536000; includeSubDomains" + }, + "smtpServer": {}, + "eventsEnabled": false, + "eventsListeners": ["jboss-logging"], + "enabledEventTypes": [], + "adminEventsEnabled": false, + "adminEventsDetailsEnabled": false, + "identityProviders": [], + "identityProviderMappers": [], + "components": { + "org.keycloak.services.clientregistration.policy.ClientRegistrationPolicy": [ + { + "id": "ca563eb4-e8c7-4364-8211-9df69030c180", + "name": "Allowed Protocol Mapper Types", + "providerId": "allowed-protocol-mappers", + "subType": "authenticated", + "subComponents": {}, + "config": { + "allowed-protocol-mapper-types": [ + "oidc-sha256-pairwise-sub-mapper", + "saml-user-property-mapper", + "oidc-usermodel-attribute-mapper", + "oidc-full-name-mapper", + "saml-role-list-mapper", + "oidc-usermodel-property-mapper", + "saml-user-attribute-mapper", + "oidc-address-mapper" + ] + } + }, + { + "id": "82df5247-f222-4828-a045-b6b0a130f3a9", + "name": "Allowed Protocol Mapper Types", + "providerId": "allowed-protocol-mappers", + "subType": "anonymous", + "subComponents": {}, + "config": { + "allowed-protocol-mapper-types": [ + "oidc-full-name-mapper", + "saml-user-attribute-mapper", + "saml-user-property-mapper", + "oidc-address-mapper", + "oidc-usermodel-attribute-mapper", + "saml-role-list-mapper", + "oidc-usermodel-property-mapper", + "oidc-sha256-pairwise-sub-mapper" + ] + } + }, + { + "id": "6c34bd81-cb51-45df-86a2-a36d0cd74ab5", + "name": "Allowed Client Scopes", + "providerId": "allowed-client-templates", + "subType": "authenticated", + "subComponents": {}, + "config": { + "allow-default-scopes": ["true"] + } + }, + { + "id": "84cba6d0-c941-4ab9-977a-7831b89b4d20", + "name": "Max Clients Limit", + "providerId": "max-clients", + "subType": "anonymous", + "subComponents": {}, + "config": { + "max-clients": ["200"] + } + }, + { + "id": "5cacf453-2d45-4d67-ba19-92d3f130625c", + "name": "Full Scope Disabled", + "providerId": "scope", + "subType": "anonymous", + "subComponents": {}, + "config": {} + }, + { + "id": "b1192031-af2f-4e6b-9e8b-30c372b89d09", + "name": "Allowed Client Scopes", + "providerId": "allowed-client-templates", + "subType": "anonymous", + "subComponents": {}, + "config": { + "allow-default-scopes": ["true"] + } + }, + { + "id": "a717f6d2-58c6-4cc7-8868-18da27d609b9", + "name": "Trusted Hosts", + "providerId": "trusted-hosts", + "subType": "anonymous", + "subComponents": {}, + "config": { + "host-sending-registration-request-must-match": ["true"], + "client-uris-must-match": ["true"] + } + }, + { + "id": "d20549b0-60cf-48a1-b1b2-d45cab6e90bb", + "name": "Consent Required", + "providerId": "consent-required", + "subType": "anonymous", + "subComponents": {}, + "config": {} + } + ], + "org.keycloak.userprofile.UserProfileProvider": [ + { + "id": "3d2627e3-2255-4bb8-a6b9-53bbf5a59a81", + "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": "11702cc0-460b-4ea1-86e1-1eb0beb5a7b0", + "name": "rsa-enc-generated", + "providerId": "rsa-enc-generated", + "subComponents": {}, + "config": { + "privateKey": [ + "MIIEowIBAAKCAQEAuX9v1GCMqzHw/PVLCr4G49R0FCgc1CkJvDi3xlzOtZbFR+JCAIlzvBVxut4HiprKKaYSXGiqGuqOXDrPVQF8Dr7gACklh310i9B6ex1ASMgHf8H0JB6TzD701kuLZ8H5J6doPvYWu1D32K688Mv4SXrhMeembtGaECz1FfGETF1rE5wDfF7/2KbN9mFK809Zk/Kk8QVTBdX5osFz20QLsV+RAFNagTvaI+Bn6pSQboQAJN7RuvGSQnxBzw7x5hWWdDLlsHXXheOb8NlWTwbpNXws9SfB0Q3cqI7zk/tnX9L7Lmf8VyOpT+mBEf5ATQDx0/DsiUYJ9aZ/pXr1zyOemQIDAQABAoIBABBMjMh19VZDjJ/Fc+MNQHC7ZbmxrprLwlG6EBfLZtRY25vN2yvN6A/yOGyJftMkd7gCIiHhhnTYAEtFVZtsBnkLN4Z8FxKZKOjyGBkCQHhErzgAFFIqJ6VuMLg1qhmjVx+vW38Qw32RBz4QWIS1/2qBdBEdAChDnYxnTt+vOYc2FbAT2FbP4QdXIA+kit7eu3Zn6pf2Lwp1bHREk45JnEb+0Pk817nyXM7NoA01/nlorwK2cOTJcXj469r/Dt7Rq4z5Mclzwc3sk84msATDVEiWXFq9uM3LriwX5F86cMpEJZFgs9Kxec6C45Q9cWPVNN489Mmo3qe6CPg4yj6EM0sCgYEA719Z3aHfKr08fGIvMqoKrmEkbtPmFPOngs0OOZCf4r2iBf6Rz1LQxc02rdt8MewvWVY1/c6s41EeqOkqooX2r4hpDdPmSKMql6bfLTEfRhwQXTE8tjOF0u2jQ/E6HHph5dW2BwtK3Fy1ydxOm5hLi04k/335BDRkAXCHWJUjeRsCgYEAxmIOyFsDEt51kgc4lbkGrqjuOEDJIYvQk7NP4FdCZfaaiQay5aLu/cq9mucPffGeioP/bGWeRd/xjfcqtkvvlZrHV5PDF+98oqGT/j29+tCS0wc+TztwnHHxd4bjs2GFc51HXa8D1YIkQ1+yMZ6FT/azUYJ1TtBpKTe9pWSR1lsCgYEAme4XPA78E9/dJZ99+naep8SQSTS6oH6PGe4DV8FJD+Yiavhpi4kV+B0fLG4YT4IycKCf17cwNn3T2YsXf6vmFrsB04KQc+V5XkxQ+B6+nbcuTr966y/2vs1SUD6vv+BzU/k6NQ1t9ocn38dsRWKKMerun93CZJHMPaC/aJd/WEECgYA/tcgXkhr3mVfasNT8SHKb7waqLCwryNIQTRrO6lcZlcvlS7ByTRRBjzW7JI92G/2VcHS8JBpjSFs0A3fFGbf0rMNuHbce3buCIy/7C2sSvJ8ahI3/NhChPXqVr007E4ufKJh9vrIVhHkO5hG9G7KmjoziFWqFCCttoEgYcKbhVwKBgEdq1CPEAIBUFcl6uagDRq8ka2IqOq/+xqtMIT28tnpNoZYnY26lAmybWpgmAn459SuPl+6g9B/xNPsUU3HHg1wxSReefzsJRtRmmdZvI/mkaXl/9FNNvFP8n0dufnxne7831jhgNC/zsIJX41GAlfhQBlVtJQFeanJO+52XdZui" + ], + "keyUse": ["ENC"], + "certificate": [ + "MIICmzCCAYMCBgGPJGQ62TANBgkqhkiG9w0BAQsFADARMQ8wDQYDVQQDDAZtYXN0ZXIwHhcNMjQwNDI4MTEwNjM5WhcNMzQwNDI4MTEwODE5WjARMQ8wDQYDVQQDDAZtYXN0ZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC5f2/UYIyrMfD89UsKvgbj1HQUKBzUKQm8OLfGXM61lsVH4kIAiXO8FXG63geKmsopphJcaKoa6o5cOs9VAXwOvuAAKSWHfXSL0Hp7HUBIyAd/wfQkHpPMPvTWS4tnwfknp2g+9ha7UPfYrrzwy/hJeuEx56Zu0ZoQLPUV8YRMXWsTnAN8Xv/Yps32YUrzT1mT8qTxBVMF1fmiwXPbRAuxX5EAU1qBO9oj4GfqlJBuhAAk3tG68ZJCfEHPDvHmFZZ0MuWwddeF45vw2VZPBuk1fCz1J8HRDdyojvOT+2df0vsuZ/xXI6lP6YER/kBNAPHT8OyJRgn1pn+levXPI56ZAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAEmZQNZzEYJ1a9Sptd0EIXv94O/GI/S0bMTkL3BcFV6IaUb0Ng9YkHM+1gflxtw4EJTWSw3OKWnkZeW77FL8ChTIYLZMJkt+S6nzOBUm0ll9CXrfGMypPi4TZTyimSxj4opfRmXzWkTiq/5TipG1YMAmxAGk5/YF7+pqaqQqAN+p6owovOPkVYDAt2rMltE90fl4Ib28NPpCaNcN4C68SlSCNSxEzDUZCmCNTDc6DQIL8b1RxRgDmJLb3dVMHndBZtAVRnDOYittS+Ii9ctIkIc1teRvtMU+XYgfsMR/SR7qPcUYcL8nE/oqvaDlBRfPAtGbBHj/8/xDO69LdbO+28g=" + ], + "priority": ["100"], + "algorithm": ["RSA-OAEP"] + } + }, + { + "id": "2284aa90-0cec-498c-93cd-5130f2c27913", + "name": "rsa-generated", + "providerId": "rsa-generated", + "subComponents": {}, + "config": { + "privateKey": [ + "MIIEpAIBAAKCAQEAxAqWmKSn9YgFLU8xpvCKQ/HnboGdARvb9VOhOYTpGXoerKOqs8FyAqnZBo6t0i6hzW5zptDSZN9bH+t5Crx0dYU+cwYlnY4qx+tcyKVeU3qS5Bo1g01LDFiOk9UsB/VxarNuq4MJGU6sG1PNUwzE/mrutehq47IjxdaUbNQ3fSBU/8sIF/KaemWNqWfFAGQyr668YmipEVqkm4OxLDmddStvQ5E+KNDqiPttpi6AMToiY/Yzw2IGb9xHMQYMh/UZzBk892ZX5rq99NJ8I7TYUb/9w6PhxkTtvyHL3OdpogMAuh7Ak6wtCqDy1IN5WDH3kFZAqEQ4/QJtWIJmdlGHYwIDAQABAoIBAA+QtadV/333uE2CKbOTCq9dYB4+jUw+vYarhrQN8QIUV6YmcpHGLLq4aKJkJrn2+OLaP7WBhAr9TvtoU1p+XxLLqwsv9EGfvZbVAa9ureAb7djNme0ccHaA+4USWmYhX0l1CLb2dvz66aBb1YQgEe4PaHeqBf6hMMTvBibj7KnzCRKpcsXCuKR2/g3yKbUxE3UjDyrl7Wvoz8lmF+/lG4iKCV/0EZb1+yni0amBPQexZ6VHEDaAhGEpHAQH7nL2uclIJrfmBdechBIbdswZIftvPBwbeJ3bQhyorYkZiFfpQ1b4iBoYrxGFfXaSchRDxokZEweecrhYaYuglQ0quE0CgYEA8H46Yck5CNmrjVIIeLLFT6mT5AUzCTPiEJx3ZsTGhekOnRo+h+lcDziEXfV8l/TSPt/gRdzg8y2NlKdA0XsOJcZp+u+Ni2RAUg0ce6/q66piBfajg7IwdCFCrOIbpQllKNyWLjP4QnZeQ77d9TrzRaxYE2F2ftMDXPxQSKbApM0CgYEA0K6avQbMV7A95jhqjofIbUiLo/IzLGgACMGuCTfAELOdZzsWEtxrCR+2CCvwoelKIdDZK7B/mumtqjE3nb79M+35cq9He1Oyvm2ZxFqzj2V0xNb8DTsGrTqmddlc4RWZFVOKVtzr3two9E13PP0Z9D1nemizr1nJDN17HfI2XO8CgYBv91TXEggrxqvIL9kh2JlkbV8dWg5Yyn8FnNM6VYLX9ZmIKx/RxyPFMlruI8zOMn1wKGsSG7Pfg+XWv8e9v7zmeWn+Gmmb7CDGErSgIVcOQVVB0YJvXhaQ+qtAMkUMoUMnswt4l1mOF+3rPIG6GqgIWCTpYQb6JOP79ryqFni6QQKBgQChbpERrZKiOxqHYBk+TVgFAlvT5eckcQelvn5tbw1LXkdjtlerG4xJsJhW1fb+qcPJSRDXNWBhbGgGArDtfPPPGkcgKuv3QZZCrfKH7Up+oZOlOlIdwg22MGrZO98X2GdmEgwwihKFgnbEFrEpIvrS8DV+gkSOX7yiESvOzLK1TQKBgQC5D9ibFZL0NVojcYdzJgemtCX0pKAgyQHsXRj91sA3dNe4JA9CPWHQO/OmAU/hMb0JcHVrQ2fJIZgKw+08eklrS1wFITT1LR1vCJChixVvJmBxfTrD2i9Q5bxE1QQqOTlUH29n4CGsD+X2l/vUyS7Yu6U0tDfYIZy9OdS4hCaKiw==" + ], + "keyUse": ["SIG"], + "certificate": [ + "MIICmzCCAYMCBgGPJGQ6ETANBgkqhkiG9w0BAQsFADARMQ8wDQYDVQQDDAZtYXN0ZXIwHhcNMjQwNDI4MTEwNjM5WhcNMzQwNDI4MTEwODE5WjARMQ8wDQYDVQQDDAZtYXN0ZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDECpaYpKf1iAUtTzGm8IpD8edugZ0BG9v1U6E5hOkZeh6so6qzwXICqdkGjq3SLqHNbnOm0NJk31sf63kKvHR1hT5zBiWdjirH61zIpV5TepLkGjWDTUsMWI6T1SwH9XFqs26rgwkZTqwbU81TDMT+au616GrjsiPF1pRs1Dd9IFT/ywgX8pp6ZY2pZ8UAZDKvrrxiaKkRWqSbg7EsOZ11K29DkT4o0OqI+22mLoAxOiJj9jPDYgZv3EcxBgyH9RnMGTz3Zlfmur300nwjtNhRv/3Do+HGRO2/Icvc52miAwC6HsCTrC0KoPLUg3lYMfeQVkCoRDj9Am1YgmZ2UYdjAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAHP+2Vmm7ZsnYswkElFryNUafHQLqxDHeJVTSzl3o1pHymBsOOn8mIUT+7M8yuJGzRmqjBJ1+QszwrtCQWpSWa48Jk53kzKyOMJg7dQclhMI12LMLR0fNKEIEtaA52brRmxoq5/F8SB20gP4ugdquMudwOFmxFRGgVQgq9MkkjXk0LvwVDMEoOj9fWb1G0uY7+ktngv5FviFgdZCqNL2A6Y47B2t43id+878vY+f4nMVd06+0I9Yuwi7y9YNiHTIZvXkmHVnAPh4Tob9Ljlby8WGDHPZ3A1oeCh90W2trDlgiuq3faVfNMeinRBYHTc2R77DwCPRLS/QfOyvQ5KjtdY=" + ], + "priority": ["100"] + } + }, + { + "id": "ed04572c-c252-4e71-b681-f3955717dfef", + "name": "hmac-generated-hs512", + "providerId": "hmac-generated", + "subComponents": {}, + "config": { + "kid": ["e78efb62-2382-4c6f-8479-fae84fe8538c"], + "secret": [ + "-p6jGVJYWlZGctRS0OifZczwGLYc6P-I-Lg8FDWXp4Y5uPJh5WV9elt7pkfNkYvvxLLsg1aQzY6XA6pwFUlx7GKDfWd-1ZTnKWKSTiXuXyD6Zoorp_Pnj3m-v9HzbIKFeU0bXu7zUcF7mTJT1_Xy8Fn_YQQGbU83G_UF1OtJPIA" + ], + "priority": ["100"], + "algorithm": ["HS512"] + } + }, + { + "id": "b03b058f-f513-4d14-81d8-e5bd005df5eb", + "name": "aes-generated", + "providerId": "aes-generated", + "subComponents": {}, + "config": { + "kid": ["2f199889-4c18-45d6-bcd9-4f580cfb20df"], + "secret": ["Pn6-Uh8H7PtYBRBZVmG1sw"], + "priority": ["100"] + } + } + ] + }, + "internationalizationEnabled": false, + "supportedLocales": [], + "authenticationFlows": [ + { + "id": "153b5523-48ac-4764-ada1-48946acea8e6", + "alias": "Account verification options", + "description": "Method with which to verity the existing account", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "idp-email-verification", + "authenticatorFlow": false, + "requirement": "ALTERNATIVE", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticatorFlow": true, + "requirement": "ALTERNATIVE", + "priority": 20, + "autheticatorFlow": true, + "flowAlias": "Verify Existing Account by Re-authentication", + "userSetupAllowed": false + } + ] + }, + { + "id": "f07f8268-e9fa-4d6f-bf3a-31d902979c2d", + "alias": "Browser - Conditional OTP", + "description": "Flow to determine if the OTP is required for the authentication", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "conditional-user-configured", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "auth-otp-form", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 20, + "autheticatorFlow": false, + "userSetupAllowed": false + } + ] + }, + { + "id": "fa86288d-47dd-4bf2-abe0-8254a9e46459", + "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": "e8cf1884-9090-4936-a5d5-1a2fedcbce0f", + "alias": "First broker login - Conditional OTP", + "description": "Flow to determine if the OTP is required for the authentication", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "conditional-user-configured", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "auth-otp-form", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 20, + "autheticatorFlow": false, + "userSetupAllowed": false + } + ] + }, + { + "id": "1c36144c-9533-43d9-8296-43c8ce2234b8", + "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": "e417c76b-0538-4313-9681-7225ced3083f", + "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": "103797b4-b973-47f4-8160-d6a5fa8467c1", + "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": "43e83b31-5728-4e63-9bef-aaa7bd2535ac", + "alias": "Verify Existing Account by Re-authentication", + "description": "Reauthentication of existing account", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "idp-username-password-form", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticatorFlow": true, + "requirement": "CONDITIONAL", + "priority": 20, + "autheticatorFlow": true, + "flowAlias": "First broker login - Conditional OTP", + "userSetupAllowed": false + } + ] + }, + { + "id": "69a28597-4dd6-4845-b681-4292fe62cd7a", + "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": "ffcbcf48-fdaa-403f-bd47-2aa255c135bb", + "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": "1809b97f-d71c-4e41-bd03-aa25f2b28597", + "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": "3e749926-e184-4e9e-92b9-05a71b3cd447", + "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": "dd10f935-b2c7-4053-b05c-fbb6e04ce873", + "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": "5a3127d1-3932-4e39-9dac-a8a72ffb0913", + "alias": "forms", + "description": "Username, password, otp and other auth forms.", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "auth-username-password-form", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticatorFlow": true, + "requirement": "CONDITIONAL", + "priority": 20, + "autheticatorFlow": true, + "flowAlias": "Browser - Conditional OTP", + "userSetupAllowed": false + } + ] + }, + { + "id": "8bda7b68-79b4-40b9-97de-e506dac9cb5a", + "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": "463cdfc2-8c48-45fe-8137-e2dc855befb0", + "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": "eced263d-5cf5-4d2a-8c30-a4edd76c0ff3", + "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": "399c42fc-6065-41b1-9798-3a55e1d6945e", + "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": "a8ba6485-8230-4ffa-b90a-82bcfd8d22e4", + "alias": "create unique user config", + "config": { + "require.password.update.after.registration": "false" } }, - "clientRole" : false, - "containerId" : "5f73cb7b-599f-4f68-83c3-b17124e40d58", - "attributes" : { } - } ], - "client" : { - "sqlpage_demo-realm" : [ { - "id" : "40ced5cd-0c95-4744-a94a-c3a5dd0fb663", - "name" : "manage-users", - "description" : "${role_manage-users}", - "composite" : false, - "clientRole" : true, - "containerId" : "bf7f06c1-44b0-49a8-9b2f-ec7404cc5f68", - "attributes" : { } - }, { - "id" : "60403499-b079-4fdb-b15f-6a945ff0bf0a", - "name" : "view-clients", - "description" : "${role_view-clients}", - "composite" : true, - "composites" : { - "client" : { - "sqlpage_demo-realm" : [ "query-clients" ] - } - }, - "clientRole" : true, - "containerId" : "bf7f06c1-44b0-49a8-9b2f-ec7404cc5f68", - "attributes" : { } - }, { - "id" : "4bda1119-5e5f-47ba-9d43-682db8329ccd", - "name" : "query-groups", - "description" : "${role_query-groups}", - "composite" : false, - "clientRole" : true, - "containerId" : "bf7f06c1-44b0-49a8-9b2f-ec7404cc5f68", - "attributes" : { } - }, { - "id" : "8b31c85c-a443-4560-b95e-8b7a83642075", - "name" : "manage-realm", - "description" : "${role_manage-realm}", - "composite" : false, - "clientRole" : true, - "containerId" : "bf7f06c1-44b0-49a8-9b2f-ec7404cc5f68", - "attributes" : { } - }, { - "id" : "37febc4a-1285-43b0-925f-e38faab5e2d2", - "name" : "view-events", - "description" : "${role_view-events}", - "composite" : false, - "clientRole" : true, - "containerId" : "bf7f06c1-44b0-49a8-9b2f-ec7404cc5f68", - "attributes" : { } - }, { - "id" : "7e898f5d-d3b0-4403-905f-fb1d90642b74", - "name" : "query-realms", - "description" : "${role_query-realms}", - "composite" : false, - "clientRole" : true, - "containerId" : "bf7f06c1-44b0-49a8-9b2f-ec7404cc5f68", - "attributes" : { } - }, { - "id" : "dc84895d-4926-47a3-a848-5c82362d23d7", - "name" : "manage-clients", - "description" : "${role_manage-clients}", - "composite" : false, - "clientRole" : true, - "containerId" : "bf7f06c1-44b0-49a8-9b2f-ec7404cc5f68", - "attributes" : { } - }, { - "id" : "d638dabd-fd0b-4a62-84ea-c1555fc3e7df", - "name" : "manage-identity-providers", - "description" : "${role_manage-identity-providers}", - "composite" : false, - "clientRole" : true, - "containerId" : "bf7f06c1-44b0-49a8-9b2f-ec7404cc5f68", - "attributes" : { } - }, { - "id" : "1d39315b-0b1e-4088-a2ca-c47c2a4d90e7", - "name" : "manage-authorization", - "description" : "${role_manage-authorization}", - "composite" : false, - "clientRole" : true, - "containerId" : "bf7f06c1-44b0-49a8-9b2f-ec7404cc5f68", - "attributes" : { } - }, { - "id" : "fe8dc00f-e512-4d90-a5d0-7f811173f904", - "name" : "view-users", - "description" : "${role_view-users}", - "composite" : true, - "composites" : { - "client" : { - "sqlpage_demo-realm" : [ "query-groups", "query-users" ] - } - }, - "clientRole" : true, - "containerId" : "bf7f06c1-44b0-49a8-9b2f-ec7404cc5f68", - "attributes" : { } - }, { - "id" : "52f054ce-8ff5-4889-b72a-75a9a4177096", - "name" : "view-authorization", - "description" : "${role_view-authorization}", - "composite" : false, - "clientRole" : true, - "containerId" : "bf7f06c1-44b0-49a8-9b2f-ec7404cc5f68", - "attributes" : { } - }, { - "id" : "19a225db-b6e6-4a4a-a94d-8f48d2b800a5", - "name" : "view-identity-providers", - "description" : "${role_view-identity-providers}", - "composite" : false, - "clientRole" : true, - "containerId" : "bf7f06c1-44b0-49a8-9b2f-ec7404cc5f68", - "attributes" : { } - }, { - "id" : "ee30de19-c3a3-4d91-92c9-665efd0b81e9", - "name" : "view-realm", - "description" : "${role_view-realm}", - "composite" : false, - "clientRole" : true, - "containerId" : "bf7f06c1-44b0-49a8-9b2f-ec7404cc5f68", - "attributes" : { } - }, { - "id" : "c52f6f99-480c-4fc8-b3fb-809ac4de2310", - "name" : "create-client", - "description" : "${role_create-client}", - "composite" : false, - "clientRole" : true, - "containerId" : "bf7f06c1-44b0-49a8-9b2f-ec7404cc5f68", - "attributes" : { } - }, { - "id" : "2a0f02c1-da44-4d20-af96-e572a2565be8", - "name" : "impersonation", - "description" : "${role_impersonation}", - "composite" : false, - "clientRole" : true, - "containerId" : "bf7f06c1-44b0-49a8-9b2f-ec7404cc5f68", - "attributes" : { } - }, { - "id" : "130d9aa5-ac88-4328-94d4-3a3ef9816186", - "name" : "query-users", - "description" : "${role_query-users}", - "composite" : false, - "clientRole" : true, - "containerId" : "bf7f06c1-44b0-49a8-9b2f-ec7404cc5f68", - "attributes" : { } - }, { - "id" : "5fd36a14-c6e5-40d6-a672-4d77f7ce1254", - "name" : "manage-events", - "description" : "${role_manage-events}", - "composite" : false, - "clientRole" : true, - "containerId" : "bf7f06c1-44b0-49a8-9b2f-ec7404cc5f68", - "attributes" : { } - }, { - "id" : "72306ee2-fd75-486d-8b97-a841263a076e", - "name" : "query-clients", - "description" : "${role_query-clients}", - "composite" : false, - "clientRole" : true, - "containerId" : "bf7f06c1-44b0-49a8-9b2f-ec7404cc5f68", - "attributes" : { } - } ], - "security-admin-console" : [ ], - "admin-cli" : [ ], - "account-console" : [ ], - "broker" : [ { - "id" : "8d3a5474-6dfe-4469-b8bc-41ae80a0f233", - "name" : "read-token", - "description" : "${role_read-token}", - "composite" : false, - "clientRole" : true, - "containerId" : "df3db4cd-a33d-4ee2-b01b-18045049b41a", - "attributes" : { } - } ], - "master-realm" : [ { - "id" : "bc5b59c5-ddd5-491c-87c7-032490debf43", - "name" : "view-clients", - "description" : "${role_view-clients}", - "composite" : true, - "composites" : { - "client" : { - "master-realm" : [ "query-clients" ] - } - }, - "clientRole" : true, - "containerId" : "b2f502a5-827b-4bf7-b091-a8fddd00a387", - "attributes" : { } - }, { - "id" : "519edb16-8a73-42c2-8338-ea0615fa15fd", - "name" : "create-client", - "description" : "${role_create-client}", - "composite" : false, - "clientRole" : true, - "containerId" : "b2f502a5-827b-4bf7-b091-a8fddd00a387", - "attributes" : { } - }, { - "id" : "a68d4b01-74d5-4c5b-9be7-33f61d3624dd", - "name" : "view-events", - "description" : "${role_view-events}", - "composite" : false, - "clientRole" : true, - "containerId" : "b2f502a5-827b-4bf7-b091-a8fddd00a387", - "attributes" : { } - }, { - "id" : "a1809708-2e5f-49e6-aede-26e2554ff476", - "name" : "query-groups", - "description" : "${role_query-groups}", - "composite" : false, - "clientRole" : true, - "containerId" : "b2f502a5-827b-4bf7-b091-a8fddd00a387", - "attributes" : { } - }, { - "id" : "84f1ac8d-79d0-4ad9-a8e1-7230da1a9992", - "name" : "impersonation", - "description" : "${role_impersonation}", - "composite" : false, - "clientRole" : true, - "containerId" : "b2f502a5-827b-4bf7-b091-a8fddd00a387", - "attributes" : { } - }, { - "id" : "a1e8ce6e-6a7e-4d73-876d-1e7f42bc4080", - "name" : "manage-identity-providers", - "description" : "${role_manage-identity-providers}", - "composite" : false, - "clientRole" : true, - "containerId" : "b2f502a5-827b-4bf7-b091-a8fddd00a387", - "attributes" : { } - }, { - "id" : "2596e057-92ae-476c-9e64-48ea027b905d", - "name" : "query-realms", - "description" : "${role_query-realms}", - "composite" : false, - "clientRole" : true, - "containerId" : "b2f502a5-827b-4bf7-b091-a8fddd00a387", - "attributes" : { } - }, { - "id" : "bf8a6c05-3614-4fef-8554-b303110843c3", - "name" : "query-users", - "description" : "${role_query-users}", - "composite" : false, - "clientRole" : true, - "containerId" : "b2f502a5-827b-4bf7-b091-a8fddd00a387", - "attributes" : { } - }, { - "id" : "f8e778fe-eb68-435c-a6ba-20a606b3c76d", - "name" : "manage-clients", - "description" : "${role_manage-clients}", - "composite" : false, - "clientRole" : true, - "containerId" : "b2f502a5-827b-4bf7-b091-a8fddd00a387", - "attributes" : { } - }, { - "id" : "585afece-a5b2-43db-9000-9c2d8b8efa46", - "name" : "manage-authorization", - "description" : "${role_manage-authorization}", - "composite" : false, - "clientRole" : true, - "containerId" : "b2f502a5-827b-4bf7-b091-a8fddd00a387", - "attributes" : { } - }, { - "id" : "34bc0dc8-898d-4860-906e-1ce9da5c0523", - "name" : "view-users", - "description" : "${role_view-users}", - "composite" : true, - "composites" : { - "client" : { - "master-realm" : [ "query-groups", "query-users" ] - } - }, - "clientRole" : true, - "containerId" : "b2f502a5-827b-4bf7-b091-a8fddd00a387", - "attributes" : { } - }, { - "id" : "41695096-c0a7-40fb-963b-a0b2a48f7b4e", - "name" : "manage-realm", - "description" : "${role_manage-realm}", - "composite" : false, - "clientRole" : true, - "containerId" : "b2f502a5-827b-4bf7-b091-a8fddd00a387", - "attributes" : { } - }, { - "id" : "80b05b2d-92e9-469f-9081-d1afc6ddf965", - "name" : "manage-events", - "description" : "${role_manage-events}", - "composite" : false, - "clientRole" : true, - "containerId" : "b2f502a5-827b-4bf7-b091-a8fddd00a387", - "attributes" : { } - }, { - "id" : "daf30043-9627-4686-9b76-9559c8ef4b4d", - "name" : "view-realm", - "description" : "${role_view-realm}", - "composite" : false, - "clientRole" : true, - "containerId" : "b2f502a5-827b-4bf7-b091-a8fddd00a387", - "attributes" : { } - }, { - "id" : "2e9bc83b-807a-4c0b-89b0-b840143e6f40", - "name" : "view-authorization", - "description" : "${role_view-authorization}", - "composite" : false, - "clientRole" : true, - "containerId" : "b2f502a5-827b-4bf7-b091-a8fddd00a387", - "attributes" : { } - }, { - "id" : "f60c6aa3-ce53-41a2-a5b8-68c0a648d5b7", - "name" : "query-clients", - "description" : "${role_query-clients}", - "composite" : false, - "clientRole" : true, - "containerId" : "b2f502a5-827b-4bf7-b091-a8fddd00a387", - "attributes" : { } - }, { - "id" : "c27d3690-ba51-472a-baac-47d12711a9fd", - "name" : "view-identity-providers", - "description" : "${role_view-identity-providers}", - "composite" : false, - "clientRole" : true, - "containerId" : "b2f502a5-827b-4bf7-b091-a8fddd00a387", - "attributes" : { } - }, { - "id" : "02d6931e-f3be-4e98-a65e-8d591d8ad119", - "name" : "manage-users", - "description" : "${role_manage-users}", - "composite" : false, - "clientRole" : true, - "containerId" : "b2f502a5-827b-4bf7-b091-a8fddd00a387", - "attributes" : { } - } ], - "account" : [ { - "id" : "a5beee68-7d37-410e-b91c-1bbfe311c561", - "name" : "manage-account-links", - "description" : "${role_manage-account-links}", - "composite" : false, - "clientRole" : true, - "containerId" : "548df36a-4803-4f86-add2-8a11665adac8", - "attributes" : { } - }, { - "id" : "447234fa-61f0-4721-8102-3f98ce445879", - "name" : "manage-account", - "description" : "${role_manage-account}", - "composite" : true, - "composites" : { - "client" : { - "account" : [ "manage-account-links" ] - } - }, - "clientRole" : true, - "containerId" : "548df36a-4803-4f86-add2-8a11665adac8", - "attributes" : { } - }, { - "id" : "c4a7b25b-e306-4a90-baca-fcdb5b8a9a03", - "name" : "view-applications", - "description" : "${role_view-applications}", - "composite" : false, - "clientRole" : true, - "containerId" : "548df36a-4803-4f86-add2-8a11665adac8", - "attributes" : { } - }, { - "id" : "d53be66b-ed3d-4bab-bcc2-047118d5eae8", - "name" : "view-profile", - "description" : "${role_view-profile}", - "composite" : false, - "clientRole" : true, - "containerId" : "548df36a-4803-4f86-add2-8a11665adac8", - "attributes" : { } - }, { - "id" : "1951173a-4eb1-4453-841f-0fb155cf5927", - "name" : "view-groups", - "description" : "${role_view-groups}", - "composite" : false, - "clientRole" : true, - "containerId" : "548df36a-4803-4f86-add2-8a11665adac8", - "attributes" : { } - }, { - "id" : "8ee81e62-4e2b-4b7f-a754-3876355dad7a", - "name" : "manage-consent", - "description" : "${role_manage-consent}", - "composite" : true, - "composites" : { - "client" : { - "account" : [ "view-consent" ] - } - }, - "clientRole" : true, - "containerId" : "548df36a-4803-4f86-add2-8a11665adac8", - "attributes" : { } - }, { - "id" : "b1bf48f8-8ee8-4783-8f4b-4befa3478f9c", - "name" : "delete-account", - "description" : "${role_delete-account}", - "composite" : false, - "clientRole" : true, - "containerId" : "548df36a-4803-4f86-add2-8a11665adac8", - "attributes" : { } - }, { - "id" : "2a77c895-227c-44a0-b046-a36eea529966", - "name" : "view-consent", - "description" : "${role_view-consent}", - "composite" : false, - "clientRole" : true, - "containerId" : "548df36a-4803-4f86-add2-8a11665adac8", - "attributes" : { } - } ] - } - }, - "groups" : [ ], - "defaultRole" : { - "id" : "61cb3fed-151e-451f-b011-56d1151776ac", - "name" : "default-roles-master", - "description" : "${role_default-roles}", - "composite" : true, - "clientRole" : false, - "containerId" : "5f73cb7b-599f-4f68-83c3-b17124e40d58" - }, - "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" ], - "webAuthnPolicyRpId" : "", - "webAuthnPolicyAttestationConveyancePreference" : "not specified", - "webAuthnPolicyAuthenticatorAttachment" : "not specified", - "webAuthnPolicyRequireResidentKey" : "not specified", - "webAuthnPolicyUserVerificationRequirement" : "not specified", - "webAuthnPolicyCreateTimeout" : 0, - "webAuthnPolicyAvoidSameAuthenticatorRegister" : false, - "webAuthnPolicyAcceptableAaguids" : [ ], - "webAuthnPolicyExtraOrigins" : [ ], - "webAuthnPolicyPasswordlessRpEntityName" : "keycloak", - "webAuthnPolicyPasswordlessSignatureAlgorithms" : [ "ES256" ], - "webAuthnPolicyPasswordlessRpId" : "", - "webAuthnPolicyPasswordlessAttestationConveyancePreference" : "not specified", - "webAuthnPolicyPasswordlessAuthenticatorAttachment" : "not specified", - "webAuthnPolicyPasswordlessRequireResidentKey" : "not specified", - "webAuthnPolicyPasswordlessUserVerificationRequirement" : "not specified", - "webAuthnPolicyPasswordlessCreateTimeout" : 0, - "webAuthnPolicyPasswordlessAvoidSameAuthenticatorRegister" : false, - "webAuthnPolicyPasswordlessAcceptableAaguids" : [ ], - "webAuthnPolicyPasswordlessExtraOrigins" : [ ], - "users" : [ { - "id" : "58e5d97b-9831-490f-bbc0-68f460f16d81", - "username" : "admin", - "emailVerified" : false, - "createdTimestamp" : 1714302502071, - "enabled" : true, - "totp" : false, - "credentials" : [ { - "id" : "27bded41-d568-47f5-a269-f27ab4771e2a", - "type" : "password", - "createdDate" : 1714302502562, - "secretData" : "{\"value\":\"zxGd9GuNE1SzUjftYGfX5ezyW2wGI6NxHgzrIvbnA7oFFlGbScyvw/JGQM7P1WNXvVduMoxoLF89Z6ouj04NAw==\",\"salt\":\"vjBzOJpRplLE5ttVq2jf7A==\",\"additionalParameters\":{}}", - "credentialData" : "{\"hashIterations\":210000,\"algorithm\":\"pbkdf2-sha512\",\"additionalParameters\":{}}" - } ], - "disableableCredentialTypes" : [ ], - "requiredActions" : [ ], - "realmRoles" : [ "admin", "default-roles-master" ], - "notBefore" : 0, - "groups" : [ ] - } ], - "scopeMappings" : [ { - "clientScope" : "offline_access", - "roles" : [ "offline_access" ] - } ], - "clientScopeMappings" : { - "account" : [ { - "client" : "account-console", - "roles" : [ "manage-account", "view-groups" ] - } ] - }, - "clients" : [ { - "id" : "548df36a-4803-4f86-add2-8a11665adac8", - "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" : { - "post.logout.redirect.uris" : "+" - }, - "authenticationFlowBindingOverrides" : { }, - "fullScopeAllowed" : false, - "nodeReRegistrationTimeout" : 0, - "protocolMappers" : [ { - "id" : "d9279cc6-cb5b-41c1-8fd7-36e7f60a23b7", - "name" : "given name", - "protocol" : "cas", - "protocolMapper" : "cas-usermodel-property-mapper", - "consentRequired" : false, - "config" : { - "user.attribute" : "firstName", - "claim.name" : "givenName", - "jsonType.label" : "String" + { + "id": "f613bf6b-c671-4e78-b97f-5920abecb690", + "alias": "review profile config", + "config": { + "update.profile.on.first.login": "missing" + } } - }, { - "id" : "100d64da-deea-405d-b5a5-56cc99608fa0", - "name" : "email", - "protocol" : "cas", - "protocolMapper" : "cas-usermodel-property-mapper", - "consentRequired" : false, - "config" : { - "user.attribute" : "email", - "claim.name" : "mail", - "jsonType.label" : "String" - } - }, { - "id" : "cad8d965-0689-471c-a8f5-4f7c3b00d9b1", - "name" : "full name", - "protocol" : "cas", - "protocolMapper" : "cas-full-name-mapper", - "consentRequired" : false, - "config" : { - "claim.name" : "cn", - "jsonType.label" : "String" - } - }, { - "id" : "b41078e0-72dc-4144-81e8-af081a05edbd", - "name" : "family name", - "protocol" : "cas", - "protocolMapper" : "cas-usermodel-property-mapper", - "consentRequired" : false, - "config" : { - "user.attribute" : "lastName", - "claim.name" : "sn", - "jsonType.label" : "String" - } - } ], - "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "email" ], - "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] - }, { - "id" : "4fa7d798-9835-48f4-a0fe-3c3492332330", - "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" : { - "post.logout.redirect.uris" : "+", - "pkce.code.challenge.method" : "S256" - }, - "authenticationFlowBindingOverrides" : { }, - "fullScopeAllowed" : false, - "nodeReRegistrationTimeout" : 0, - "protocolMappers" : [ { - "id" : "0b95958b-e395-438d-8497-039d7218d177", - "name" : "family name", - "protocol" : "cas", - "protocolMapper" : "cas-usermodel-property-mapper", - "consentRequired" : false, - "config" : { - "user.attribute" : "lastName", - "claim.name" : "sn", - "jsonType.label" : "String" - } - }, { - "id" : "b7e6d29a-cb8f-4b44-890a-9eb657afe855", - "name" : "email", - "protocol" : "cas", - "protocolMapper" : "cas-usermodel-property-mapper", - "consentRequired" : false, - "config" : { - "user.attribute" : "email", - "claim.name" : "mail", - "jsonType.label" : "String" - } - }, { - "id" : "1eac3cae-7b57-44e9-964e-08465d791657", - "name" : "given name", - "protocol" : "cas", - "protocolMapper" : "cas-usermodel-property-mapper", - "consentRequired" : false, - "config" : { - "user.attribute" : "firstName", - "claim.name" : "givenName", - "jsonType.label" : "String" - } - }, { - "id" : "7ecbae12-e10d-441d-8d3e-58bfeee4fd24", - "name" : "full name", - "protocol" : "cas", - "protocolMapper" : "cas-full-name-mapper", - "consentRequired" : false, - "config" : { - "claim.name" : "cn", - "jsonType.label" : "String" - } - }, { - "id" : "c868d4b5-ae14-45ac-b067-b14169485108", - "name" : "audience resolve", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-audience-resolve-mapper", - "consentRequired" : false, - "config" : { } - } ], - "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "email" ], - "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] - }, { - "id" : "28900f98-4064-47bc-a5c7-cea8a942b271", - "clientId" : "admin-cli", - "name" : "${client_admin-cli}", - "surrogateAuthRequired" : false, - "enabled" : true, - "alwaysDisplayInConsole" : false, - "clientAuthenticatorType" : "client-secret", - "redirectUris" : [ ], - "webOrigins" : [ ], - "notBefore" : 0, - "bearerOnly" : false, - "consentRequired" : false, - "standardFlowEnabled" : false, - "implicitFlowEnabled" : false, - "directAccessGrantsEnabled" : true, - "serviceAccountsEnabled" : false, - "publicClient" : true, - "frontchannelLogout" : false, - "protocol" : "openid-connect", - "attributes" : { }, - "authenticationFlowBindingOverrides" : { }, - "fullScopeAllowed" : false, - "nodeReRegistrationTimeout" : 0, - "protocolMappers" : [ { - "id" : "2161312a-e188-4b1f-a667-4e2de4509a58", - "name" : "email", - "protocol" : "cas", - "protocolMapper" : "cas-usermodel-property-mapper", - "consentRequired" : false, - "config" : { - "user.attribute" : "email", - "claim.name" : "mail", - "jsonType.label" : "String" - } - }, { - "id" : "9a9c2187-e74a-4abf-bf40-a809af28b9c6", - "name" : "family name", - "protocol" : "cas", - "protocolMapper" : "cas-usermodel-property-mapper", - "consentRequired" : false, - "config" : { - "user.attribute" : "lastName", - "claim.name" : "sn", - "jsonType.label" : "String" - } - }, { - "id" : "b58ac8bc-2c8e-45b0-94d7-5d12c6d75d59", - "name" : "full name", - "protocol" : "cas", - "protocolMapper" : "cas-full-name-mapper", - "consentRequired" : false, - "config" : { - "claim.name" : "cn", - "jsonType.label" : "String" - } - }, { - "id" : "857c8afc-fa5b-4d99-879c-c57cef6aba04", - "name" : "given name", - "protocol" : "cas", - "protocolMapper" : "cas-usermodel-property-mapper", - "consentRequired" : false, - "config" : { - "user.attribute" : "firstName", - "claim.name" : "givenName", - "jsonType.label" : "String" - } - } ], - "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "email" ], - "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] - }, { - "id" : "df3db4cd-a33d-4ee2-b01b-18045049b41a", - "clientId" : "broker", - "name" : "${client_broker}", - "surrogateAuthRequired" : false, - "enabled" : true, - "alwaysDisplayInConsole" : false, - "clientAuthenticatorType" : "client-secret", - "redirectUris" : [ ], - "webOrigins" : [ ], - "notBefore" : 0, - "bearerOnly" : true, - "consentRequired" : false, - "standardFlowEnabled" : true, - "implicitFlowEnabled" : false, - "directAccessGrantsEnabled" : false, - "serviceAccountsEnabled" : false, - "publicClient" : false, - "frontchannelLogout" : false, - "protocol" : "openid-connect", - "attributes" : { }, - "authenticationFlowBindingOverrides" : { }, - "fullScopeAllowed" : false, - "nodeReRegistrationTimeout" : 0, - "protocolMappers" : [ { - "id" : "74b9c284-7c0e-49df-b2cd-b66d795cf3c4", - "name" : "full name", - "protocol" : "cas", - "protocolMapper" : "cas-full-name-mapper", - "consentRequired" : false, - "config" : { - "claim.name" : "cn", - "jsonType.label" : "String" - } - }, { - "id" : "3b7f9e64-5284-4dfa-90ac-a1c3330696b3", - "name" : "email", - "protocol" : "cas", - "protocolMapper" : "cas-usermodel-property-mapper", - "consentRequired" : false, - "config" : { - "user.attribute" : "email", - "claim.name" : "mail", - "jsonType.label" : "String" - } - }, { - "id" : "24ebaebc-0557-40fe-a009-f808ce945683", - "name" : "family name", - "protocol" : "cas", - "protocolMapper" : "cas-usermodel-property-mapper", - "consentRequired" : false, - "config" : { - "user.attribute" : "lastName", - "claim.name" : "sn", - "jsonType.label" : "String" - } - }, { - "id" : "8b808633-3d15-40ae-bead-ca78fe818123", - "name" : "given name", - "protocol" : "cas", - "protocolMapper" : "cas-usermodel-property-mapper", - "consentRequired" : false, - "config" : { - "user.attribute" : "firstName", - "claim.name" : "givenName", - "jsonType.label" : "String" - } - } ], - "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "email" ], - "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] - }, { - "id" : "b2f502a5-827b-4bf7-b091-a8fddd00a387", - "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, - "attributes" : { }, - "authenticationFlowBindingOverrides" : { }, - "fullScopeAllowed" : false, - "nodeReRegistrationTimeout" : 0, - "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "email" ], - "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] - }, { - "id" : "071f72e9-d5bb-455a-9be1-4fcb1331e457", - "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" : { - "post.logout.redirect.uris" : "+", - "pkce.code.challenge.method" : "S256" - }, - "authenticationFlowBindingOverrides" : { }, - "fullScopeAllowed" : false, - "nodeReRegistrationTimeout" : 0, - "protocolMappers" : [ { - "id" : "889813d1-5d6e-4231-bd20-a4a6f97473cc", - "name" : "email", - "protocol" : "cas", - "protocolMapper" : "cas-usermodel-property-mapper", - "consentRequired" : false, - "config" : { - "user.attribute" : "email", - "claim.name" : "mail", - "jsonType.label" : "String" - } - }, { - "id" : "b1fddb28-d474-48e7-84e2-0162ef1025c6", - "name" : "given name", - "protocol" : "cas", - "protocolMapper" : "cas-usermodel-property-mapper", - "consentRequired" : false, - "config" : { - "user.attribute" : "firstName", - "claim.name" : "givenName", - "jsonType.label" : "String" - } - }, { - "id" : "5315dcae-6e46-48aa-a9f9-7e185c3ca07c", - "name" : "family name", - "protocol" : "cas", - "protocolMapper" : "cas-usermodel-property-mapper", - "consentRequired" : false, - "config" : { - "user.attribute" : "lastName", - "claim.name" : "sn", - "jsonType.label" : "String" - } - }, { - "id" : "ce16e2de-8217-45f6-8771-b07df4a1ad61", - "name" : "full name", - "protocol" : "cas", - "protocolMapper" : "cas-full-name-mapper", - "consentRequired" : false, - "config" : { - "claim.name" : "cn", - "jsonType.label" : "String" - } - }, { - "id" : "2b89a9f1-a008-4585-ba1b-2f572ff9ab79", - "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", "email" ], - "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] - }, { - "id" : "bf7f06c1-44b0-49a8-9b2f-ec7404cc5f68", - "clientId" : "sqlpage_demo-realm", - "name" : "sqlpage_demo 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, - "attributes" : { }, - "authenticationFlowBindingOverrides" : { }, - "fullScopeAllowed" : false, - "nodeReRegistrationTimeout" : 0, - "defaultClientScopes" : [ ], - "optionalClientScopes" : [ ] - } ], - "clientScopes" : [ { - "id" : "1e989c16-9d9d-4f3c-94a3-716818c8dc9d", - "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" : "4d80d5a5-95b0-47f4-bf08-71ff6b937aed", - "name" : "profile", - "description" : "OpenID Connect built-in scope: profile", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "true", - "display.on.consent.screen" : "true", - "consent.screen.text" : "${profileScopeConsentText}" - }, - "protocolMappers" : [ { - "id" : "d9f8bbb5-888b-421f-8f10-827d71fc7358", - "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" : "7345ab35-e87d-4528-aed7-6a6706de8b0e", - "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" : "6601aaa8-200b-436d-ab91-28ba73293929", - "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" : "7078b501-9680-43b2-8453-8c41d8fc978c", - "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" : "ee508732-54be-4521-a6bf-5e96a8f00fbe", - "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" : "894275e2-3795-43dc-8d0a-91f4c1643003", - "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" : "688312eb-1d1e-4970-b687-c2c695019444", - "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" : "0dfa839a-c270-475b-830e-d467e62fe902", - "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" : "0b4b524c-8a60-400a-84a3-fc9f7cbe50c0", - "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" : "b1132b2d-e1a3-4aab-bf17-24adfbf8a83d", - "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" : "9beed4ad-1273-4691-8fdb-bd061cc26d0b", - "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" : "0964864c-7715-4d62-b2b5-e975fa008220", - "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" : "271101af-00a4-4795-b196-a8bd55608722", - "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" : "a0eb9ae7-dfc4-4da4-a127-3a8b93b25cb4", - "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" : "dc6647f4-0dce-47f9-afb9-0a31bd0d6ebc", - "name" : "roles", - "description" : "OpenID Connect scope for add user roles to the access token", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "false", - "display.on.consent.screen" : "true", - "consent.screen.text" : "${rolesScopeConsentText}" - }, - "protocolMappers" : [ { - "id" : "d9494cdb-c2f3-456b-a537-87206389168d", - "name" : "audience resolve", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-audience-resolve-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "access.token.claim" : "true" - } - }, { - "id" : "bfcdf78c-4736-46da-9380-630c90b536f7", - "name" : "realm roles", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-realm-role-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "multivalued" : "true", - "user.attribute" : "foo", - "access.token.claim" : "true", - "claim.name" : "realm_access.roles", - "jsonType.label" : "String" - } - }, { - "id" : "8126f072-2927-44f0-a9b2-acd1dc6380b2", - "name" : "client roles", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-client-role-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "multivalued" : "true", - "user.attribute" : "foo", - "access.token.claim" : "true", - "claim.name" : "resource_access.${client_id}.roles", - "jsonType.label" : "String" - } - } ] - }, { - "id" : "795915bd-d6f5-467f-a2fd-f828090e778f", - "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" : "c213dbf9-fdd7-4a8a-9a9e-9440c06ef513", - "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" - } - } ] - }, { - "id" : "2cea4163-775c-4943-800c-fb65df65e2bb", - "name" : "phone", - "description" : "OpenID Connect built-in scope: phone", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "true", - "display.on.consent.screen" : "true", - "consent.screen.text" : "${phoneScopeConsentText}" - }, - "protocolMappers" : [ { - "id" : "7a93c95d-1d84-4277-b44e-ed57761b8bf4", - "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" : "3cc9adcb-1a09-424d-a7c9-b8c4ed6f98d7", - "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" : "ec0a170e-3020-4c72-bc82-035757e5f9fa", - "name" : "web-origins", - "description" : "OpenID Connect scope for add allowed web origins to the access token", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "false", - "display.on.consent.screen" : "false", - "consent.screen.text" : "" - }, - "protocolMappers" : [ { - "id" : "64ae245b-f699-4762-83d0-9d85d8205065", - "name" : "allowed web origins", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-allowed-origins-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "access.token.claim" : "true" - } - } ] - }, { - "id" : "ca1a8718-ad1d-4970-8b2b-074326cdffac", - "name" : "email", - "description" : "OpenID Connect built-in scope: email", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "true", - "display.on.consent.screen" : "true", - "consent.screen.text" : "${emailScopeConsentText}" - }, - "protocolMappers" : [ { - "id" : "212c3ce9-b512-466e-86b1-c58b5440aa90", - "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" : "6ba8694a-ec0f-4684-b82e-d36c4ee04139", - "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" : "2a9f50b0-fcd6-4f96-98d5-d311693a379f", - "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" : "c1f53b10-2a8d-4191-b4ae-24cc07a2f78f", - "name" : "groups", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-realm-role-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "multivalued" : "true", - "user.attribute" : "foo", - "id.token.claim" : "true", - "access.token.claim" : "true", - "claim.name" : "groups", - "jsonType.label" : "String" - } - }, { - "id" : "90c9e9a5-cdb2-40b2-bd2a-bce5c0924721", - "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" : "4f873674-3e7f-4dff-bb20-83060bca777b", - "name" : "role_list", - "description" : "SAML role list", - "protocol" : "saml", - "attributes" : { - "consent.screen.text" : "${samlRoleListScopeConsentText}", - "display.on.consent.screen" : "true" - }, - "protocolMappers" : [ { - "id" : "839733ca-3361-46c9-9782-2204afb5a876", - "name" : "role list", - "protocol" : "saml", - "protocolMapper" : "saml-role-list-mapper", - "consentRequired" : false, - "config" : { - "single" : "false", - "attribute.nameformat" : "Basic", - "attribute.name" : "Role" - } - } ] - }, { - "id" : "be0ed55a-e21d-4362-914f-b32a5c6b4dc1", - "name" : "address", - "description" : "OpenID Connect built-in scope: address", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "true", - "display.on.consent.screen" : "true", - "consent.screen.text" : "${addressScopeConsentText}" - }, - "protocolMappers" : [ { - "id" : "921bba46-dbaf-4d54-8b23-a8a40d55ab1c", - "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" - } - } ] - } ], - "defaultDefaultClientScopes" : [ "role_list", "profile", "email", "roles", "web-origins", "acr" ], - "defaultOptionalClientScopes" : [ "offline_access", "address", "phone", "microprofile-jwt" ], - "browserSecurityHeaders" : { - "contentSecurityPolicyReportOnly" : "", - "xContentTypeOptions" : "nosniff", - "referrerPolicy" : "no-referrer", - "xRobotsTag" : "none", - "xFrameOptions" : "SAMEORIGIN", - "xXSSProtection" : "1; mode=block", - "contentSecurityPolicy" : "frame-src 'self'; frame-ancestors 'self'; object-src 'none';", - "strictTransportSecurity" : "max-age=31536000; includeSubDomains" - }, - "smtpServer" : { }, - "eventsEnabled" : false, - "eventsListeners" : [ "jboss-logging" ], - "enabledEventTypes" : [ ], - "adminEventsEnabled" : false, - "adminEventsDetailsEnabled" : false, - "identityProviders" : [ ], - "identityProviderMappers" : [ ], - "components" : { - "org.keycloak.services.clientregistration.policy.ClientRegistrationPolicy" : [ { - "id" : "ca563eb4-e8c7-4364-8211-9df69030c180", - "name" : "Allowed Protocol Mapper Types", - "providerId" : "allowed-protocol-mappers", - "subType" : "authenticated", - "subComponents" : { }, - "config" : { - "allowed-protocol-mapper-types" : [ "oidc-sha256-pairwise-sub-mapper", "saml-user-property-mapper", "oidc-usermodel-attribute-mapper", "oidc-full-name-mapper", "saml-role-list-mapper", "oidc-usermodel-property-mapper", "saml-user-attribute-mapper", "oidc-address-mapper" ] - } - }, { - "id" : "82df5247-f222-4828-a045-b6b0a130f3a9", - "name" : "Allowed Protocol Mapper Types", - "providerId" : "allowed-protocol-mappers", - "subType" : "anonymous", - "subComponents" : { }, - "config" : { - "allowed-protocol-mapper-types" : [ "oidc-full-name-mapper", "saml-user-attribute-mapper", "saml-user-property-mapper", "oidc-address-mapper", "oidc-usermodel-attribute-mapper", "saml-role-list-mapper", "oidc-usermodel-property-mapper", "oidc-sha256-pairwise-sub-mapper" ] - } - }, { - "id" : "6c34bd81-cb51-45df-86a2-a36d0cd74ab5", - "name" : "Allowed Client Scopes", - "providerId" : "allowed-client-templates", - "subType" : "authenticated", - "subComponents" : { }, - "config" : { - "allow-default-scopes" : [ "true" ] - } - }, { - "id" : "84cba6d0-c941-4ab9-977a-7831b89b4d20", - "name" : "Max Clients Limit", - "providerId" : "max-clients", - "subType" : "anonymous", - "subComponents" : { }, - "config" : { - "max-clients" : [ "200" ] - } - }, { - "id" : "5cacf453-2d45-4d67-ba19-92d3f130625c", - "name" : "Full Scope Disabled", - "providerId" : "scope", - "subType" : "anonymous", - "subComponents" : { }, - "config" : { } - }, { - "id" : "b1192031-af2f-4e6b-9e8b-30c372b89d09", - "name" : "Allowed Client Scopes", - "providerId" : "allowed-client-templates", - "subType" : "anonymous", - "subComponents" : { }, - "config" : { - "allow-default-scopes" : [ "true" ] - } - }, { - "id" : "a717f6d2-58c6-4cc7-8868-18da27d609b9", - "name" : "Trusted Hosts", - "providerId" : "trusted-hosts", - "subType" : "anonymous", - "subComponents" : { }, - "config" : { - "host-sending-registration-request-must-match" : [ "true" ], - "client-uris-must-match" : [ "true" ] - } - }, { - "id" : "d20549b0-60cf-48a1-b1b2-d45cab6e90bb", - "name" : "Consent Required", - "providerId" : "consent-required", - "subType" : "anonymous", - "subComponents" : { }, - "config" : { } - } ], - "org.keycloak.userprofile.UserProfileProvider" : [ { - "id" : "3d2627e3-2255-4bb8-a6b9-53bbf5a59a81", - "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" : "11702cc0-460b-4ea1-86e1-1eb0beb5a7b0", - "name" : "rsa-enc-generated", - "providerId" : "rsa-enc-generated", - "subComponents" : { }, - "config" : { - "privateKey" : [ "MIIEowIBAAKCAQEAuX9v1GCMqzHw/PVLCr4G49R0FCgc1CkJvDi3xlzOtZbFR+JCAIlzvBVxut4HiprKKaYSXGiqGuqOXDrPVQF8Dr7gACklh310i9B6ex1ASMgHf8H0JB6TzD701kuLZ8H5J6doPvYWu1D32K688Mv4SXrhMeembtGaECz1FfGETF1rE5wDfF7/2KbN9mFK809Zk/Kk8QVTBdX5osFz20QLsV+RAFNagTvaI+Bn6pSQboQAJN7RuvGSQnxBzw7x5hWWdDLlsHXXheOb8NlWTwbpNXws9SfB0Q3cqI7zk/tnX9L7Lmf8VyOpT+mBEf5ATQDx0/DsiUYJ9aZ/pXr1zyOemQIDAQABAoIBABBMjMh19VZDjJ/Fc+MNQHC7ZbmxrprLwlG6EBfLZtRY25vN2yvN6A/yOGyJftMkd7gCIiHhhnTYAEtFVZtsBnkLN4Z8FxKZKOjyGBkCQHhErzgAFFIqJ6VuMLg1qhmjVx+vW38Qw32RBz4QWIS1/2qBdBEdAChDnYxnTt+vOYc2FbAT2FbP4QdXIA+kit7eu3Zn6pf2Lwp1bHREk45JnEb+0Pk817nyXM7NoA01/nlorwK2cOTJcXj469r/Dt7Rq4z5Mclzwc3sk84msATDVEiWXFq9uM3LriwX5F86cMpEJZFgs9Kxec6C45Q9cWPVNN489Mmo3qe6CPg4yj6EM0sCgYEA719Z3aHfKr08fGIvMqoKrmEkbtPmFPOngs0OOZCf4r2iBf6Rz1LQxc02rdt8MewvWVY1/c6s41EeqOkqooX2r4hpDdPmSKMql6bfLTEfRhwQXTE8tjOF0u2jQ/E6HHph5dW2BwtK3Fy1ydxOm5hLi04k/335BDRkAXCHWJUjeRsCgYEAxmIOyFsDEt51kgc4lbkGrqjuOEDJIYvQk7NP4FdCZfaaiQay5aLu/cq9mucPffGeioP/bGWeRd/xjfcqtkvvlZrHV5PDF+98oqGT/j29+tCS0wc+TztwnHHxd4bjs2GFc51HXa8D1YIkQ1+yMZ6FT/azUYJ1TtBpKTe9pWSR1lsCgYEAme4XPA78E9/dJZ99+naep8SQSTS6oH6PGe4DV8FJD+Yiavhpi4kV+B0fLG4YT4IycKCf17cwNn3T2YsXf6vmFrsB04KQc+V5XkxQ+B6+nbcuTr966y/2vs1SUD6vv+BzU/k6NQ1t9ocn38dsRWKKMerun93CZJHMPaC/aJd/WEECgYA/tcgXkhr3mVfasNT8SHKb7waqLCwryNIQTRrO6lcZlcvlS7ByTRRBjzW7JI92G/2VcHS8JBpjSFs0A3fFGbf0rMNuHbce3buCIy/7C2sSvJ8ahI3/NhChPXqVr007E4ufKJh9vrIVhHkO5hG9G7KmjoziFWqFCCttoEgYcKbhVwKBgEdq1CPEAIBUFcl6uagDRq8ka2IqOq/+xqtMIT28tnpNoZYnY26lAmybWpgmAn459SuPl+6g9B/xNPsUU3HHg1wxSReefzsJRtRmmdZvI/mkaXl/9FNNvFP8n0dufnxne7831jhgNC/zsIJX41GAlfhQBlVtJQFeanJO+52XdZui" ], - "keyUse" : [ "ENC" ], - "certificate" : [ "MIICmzCCAYMCBgGPJGQ62TANBgkqhkiG9w0BAQsFADARMQ8wDQYDVQQDDAZtYXN0ZXIwHhcNMjQwNDI4MTEwNjM5WhcNMzQwNDI4MTEwODE5WjARMQ8wDQYDVQQDDAZtYXN0ZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC5f2/UYIyrMfD89UsKvgbj1HQUKBzUKQm8OLfGXM61lsVH4kIAiXO8FXG63geKmsopphJcaKoa6o5cOs9VAXwOvuAAKSWHfXSL0Hp7HUBIyAd/wfQkHpPMPvTWS4tnwfknp2g+9ha7UPfYrrzwy/hJeuEx56Zu0ZoQLPUV8YRMXWsTnAN8Xv/Yps32YUrzT1mT8qTxBVMF1fmiwXPbRAuxX5EAU1qBO9oj4GfqlJBuhAAk3tG68ZJCfEHPDvHmFZZ0MuWwddeF45vw2VZPBuk1fCz1J8HRDdyojvOT+2df0vsuZ/xXI6lP6YER/kBNAPHT8OyJRgn1pn+levXPI56ZAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAEmZQNZzEYJ1a9Sptd0EIXv94O/GI/S0bMTkL3BcFV6IaUb0Ng9YkHM+1gflxtw4EJTWSw3OKWnkZeW77FL8ChTIYLZMJkt+S6nzOBUm0ll9CXrfGMypPi4TZTyimSxj4opfRmXzWkTiq/5TipG1YMAmxAGk5/YF7+pqaqQqAN+p6owovOPkVYDAt2rMltE90fl4Ib28NPpCaNcN4C68SlSCNSxEzDUZCmCNTDc6DQIL8b1RxRgDmJLb3dVMHndBZtAVRnDOYittS+Ii9ctIkIc1teRvtMU+XYgfsMR/SR7qPcUYcL8nE/oqvaDlBRfPAtGbBHj/8/xDO69LdbO+28g=" ], - "priority" : [ "100" ], - "algorithm" : [ "RSA-OAEP" ] - } - }, { - "id" : "2284aa90-0cec-498c-93cd-5130f2c27913", - "name" : "rsa-generated", - "providerId" : "rsa-generated", - "subComponents" : { }, - "config" : { - "privateKey" : [ "MIIEpAIBAAKCAQEAxAqWmKSn9YgFLU8xpvCKQ/HnboGdARvb9VOhOYTpGXoerKOqs8FyAqnZBo6t0i6hzW5zptDSZN9bH+t5Crx0dYU+cwYlnY4qx+tcyKVeU3qS5Bo1g01LDFiOk9UsB/VxarNuq4MJGU6sG1PNUwzE/mrutehq47IjxdaUbNQ3fSBU/8sIF/KaemWNqWfFAGQyr668YmipEVqkm4OxLDmddStvQ5E+KNDqiPttpi6AMToiY/Yzw2IGb9xHMQYMh/UZzBk892ZX5rq99NJ8I7TYUb/9w6PhxkTtvyHL3OdpogMAuh7Ak6wtCqDy1IN5WDH3kFZAqEQ4/QJtWIJmdlGHYwIDAQABAoIBAA+QtadV/333uE2CKbOTCq9dYB4+jUw+vYarhrQN8QIUV6YmcpHGLLq4aKJkJrn2+OLaP7WBhAr9TvtoU1p+XxLLqwsv9EGfvZbVAa9ureAb7djNme0ccHaA+4USWmYhX0l1CLb2dvz66aBb1YQgEe4PaHeqBf6hMMTvBibj7KnzCRKpcsXCuKR2/g3yKbUxE3UjDyrl7Wvoz8lmF+/lG4iKCV/0EZb1+yni0amBPQexZ6VHEDaAhGEpHAQH7nL2uclIJrfmBdechBIbdswZIftvPBwbeJ3bQhyorYkZiFfpQ1b4iBoYrxGFfXaSchRDxokZEweecrhYaYuglQ0quE0CgYEA8H46Yck5CNmrjVIIeLLFT6mT5AUzCTPiEJx3ZsTGhekOnRo+h+lcDziEXfV8l/TSPt/gRdzg8y2NlKdA0XsOJcZp+u+Ni2RAUg0ce6/q66piBfajg7IwdCFCrOIbpQllKNyWLjP4QnZeQ77d9TrzRaxYE2F2ftMDXPxQSKbApM0CgYEA0K6avQbMV7A95jhqjofIbUiLo/IzLGgACMGuCTfAELOdZzsWEtxrCR+2CCvwoelKIdDZK7B/mumtqjE3nb79M+35cq9He1Oyvm2ZxFqzj2V0xNb8DTsGrTqmddlc4RWZFVOKVtzr3two9E13PP0Z9D1nemizr1nJDN17HfI2XO8CgYBv91TXEggrxqvIL9kh2JlkbV8dWg5Yyn8FnNM6VYLX9ZmIKx/RxyPFMlruI8zOMn1wKGsSG7Pfg+XWv8e9v7zmeWn+Gmmb7CDGErSgIVcOQVVB0YJvXhaQ+qtAMkUMoUMnswt4l1mOF+3rPIG6GqgIWCTpYQb6JOP79ryqFni6QQKBgQChbpERrZKiOxqHYBk+TVgFAlvT5eckcQelvn5tbw1LXkdjtlerG4xJsJhW1fb+qcPJSRDXNWBhbGgGArDtfPPPGkcgKuv3QZZCrfKH7Up+oZOlOlIdwg22MGrZO98X2GdmEgwwihKFgnbEFrEpIvrS8DV+gkSOX7yiESvOzLK1TQKBgQC5D9ibFZL0NVojcYdzJgemtCX0pKAgyQHsXRj91sA3dNe4JA9CPWHQO/OmAU/hMb0JcHVrQ2fJIZgKw+08eklrS1wFITT1LR1vCJChixVvJmBxfTrD2i9Q5bxE1QQqOTlUH29n4CGsD+X2l/vUyS7Yu6U0tDfYIZy9OdS4hCaKiw==" ], - "keyUse" : [ "SIG" ], - "certificate" : [ "MIICmzCCAYMCBgGPJGQ6ETANBgkqhkiG9w0BAQsFADARMQ8wDQYDVQQDDAZtYXN0ZXIwHhcNMjQwNDI4MTEwNjM5WhcNMzQwNDI4MTEwODE5WjARMQ8wDQYDVQQDDAZtYXN0ZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDECpaYpKf1iAUtTzGm8IpD8edugZ0BG9v1U6E5hOkZeh6so6qzwXICqdkGjq3SLqHNbnOm0NJk31sf63kKvHR1hT5zBiWdjirH61zIpV5TepLkGjWDTUsMWI6T1SwH9XFqs26rgwkZTqwbU81TDMT+au616GrjsiPF1pRs1Dd9IFT/ywgX8pp6ZY2pZ8UAZDKvrrxiaKkRWqSbg7EsOZ11K29DkT4o0OqI+22mLoAxOiJj9jPDYgZv3EcxBgyH9RnMGTz3Zlfmur300nwjtNhRv/3Do+HGRO2/Icvc52miAwC6HsCTrC0KoPLUg3lYMfeQVkCoRDj9Am1YgmZ2UYdjAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAHP+2Vmm7ZsnYswkElFryNUafHQLqxDHeJVTSzl3o1pHymBsOOn8mIUT+7M8yuJGzRmqjBJ1+QszwrtCQWpSWa48Jk53kzKyOMJg7dQclhMI12LMLR0fNKEIEtaA52brRmxoq5/F8SB20gP4ugdquMudwOFmxFRGgVQgq9MkkjXk0LvwVDMEoOj9fWb1G0uY7+ktngv5FviFgdZCqNL2A6Y47B2t43id+878vY+f4nMVd06+0I9Yuwi7y9YNiHTIZvXkmHVnAPh4Tob9Ljlby8WGDHPZ3A1oeCh90W2trDlgiuq3faVfNMeinRBYHTc2R77DwCPRLS/QfOyvQ5KjtdY=" ], - "priority" : [ "100" ] - } - }, { - "id" : "ed04572c-c252-4e71-b681-f3955717dfef", - "name" : "hmac-generated-hs512", - "providerId" : "hmac-generated", - "subComponents" : { }, - "config" : { - "kid" : [ "e78efb62-2382-4c6f-8479-fae84fe8538c" ], - "secret" : [ "-p6jGVJYWlZGctRS0OifZczwGLYc6P-I-Lg8FDWXp4Y5uPJh5WV9elt7pkfNkYvvxLLsg1aQzY6XA6pwFUlx7GKDfWd-1ZTnKWKSTiXuXyD6Zoorp_Pnj3m-v9HzbIKFeU0bXu7zUcF7mTJT1_Xy8Fn_YQQGbU83G_UF1OtJPIA" ], - "priority" : [ "100" ], - "algorithm" : [ "HS512" ] - } - }, { - "id" : "b03b058f-f513-4d14-81d8-e5bd005df5eb", - "name" : "aes-generated", - "providerId" : "aes-generated", - "subComponents" : { }, - "config" : { - "kid" : [ "2f199889-4c18-45d6-bcd9-4f580cfb20df" ], - "secret" : [ "Pn6-Uh8H7PtYBRBZVmG1sw" ], - "priority" : [ "100" ] - } - } ] - }, - "internationalizationEnabled" : false, - "supportedLocales" : [ ], - "authenticationFlows" : [ { - "id" : "153b5523-48ac-4764-ada1-48946acea8e6", - "alias" : "Account verification options", - "description" : "Method with which to verity the existing account", - "providerId" : "basic-flow", - "topLevel" : false, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "idp-email-verification", - "authenticatorFlow" : false, - "requirement" : "ALTERNATIVE", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticatorFlow" : true, - "requirement" : "ALTERNATIVE", - "priority" : 20, - "autheticatorFlow" : true, - "flowAlias" : "Verify Existing Account by Re-authentication", - "userSetupAllowed" : false - } ] - }, { - "id" : "f07f8268-e9fa-4d6f-bf3a-31d902979c2d", - "alias" : "Browser - Conditional OTP", - "description" : "Flow to determine if the OTP is required for the authentication", - "providerId" : "basic-flow", - "topLevel" : false, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "conditional-user-configured", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "auth-otp-form", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 20, - "autheticatorFlow" : false, - "userSetupAllowed" : false - } ] - }, { - "id" : "fa86288d-47dd-4bf2-abe0-8254a9e46459", - "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" : "e8cf1884-9090-4936-a5d5-1a2fedcbce0f", - "alias" : "First broker login - Conditional OTP", - "description" : "Flow to determine if the OTP is required for the authentication", - "providerId" : "basic-flow", - "topLevel" : false, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "conditional-user-configured", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "auth-otp-form", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 20, - "autheticatorFlow" : false, - "userSetupAllowed" : false - } ] - }, { - "id" : "1c36144c-9533-43d9-8296-43c8ce2234b8", - "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" : "e417c76b-0538-4313-9681-7225ced3083f", - "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" : "103797b4-b973-47f4-8160-d6a5fa8467c1", - "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" : "43e83b31-5728-4e63-9bef-aaa7bd2535ac", - "alias" : "Verify Existing Account by Re-authentication", - "description" : "Reauthentication of existing account", - "providerId" : "basic-flow", - "topLevel" : false, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "idp-username-password-form", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticatorFlow" : true, - "requirement" : "CONDITIONAL", - "priority" : 20, - "autheticatorFlow" : true, - "flowAlias" : "First broker login - Conditional OTP", - "userSetupAllowed" : false - } ] - }, { - "id" : "69a28597-4dd6-4845-b681-4292fe62cd7a", - "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" : "ffcbcf48-fdaa-403f-bd47-2aa255c135bb", - "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" : "1809b97f-d71c-4e41-bd03-aa25f2b28597", - "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" : "3e749926-e184-4e9e-92b9-05a71b3cd447", - "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" : "dd10f935-b2c7-4053-b05c-fbb6e04ce873", - "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" : "5a3127d1-3932-4e39-9dac-a8a72ffb0913", - "alias" : "forms", - "description" : "Username, password, otp and other auth forms.", - "providerId" : "basic-flow", - "topLevel" : false, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "auth-username-password-form", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticatorFlow" : true, - "requirement" : "CONDITIONAL", - "priority" : 20, - "autheticatorFlow" : true, - "flowAlias" : "Browser - Conditional OTP", - "userSetupAllowed" : false - } ] - }, { - "id" : "8bda7b68-79b4-40b9-97de-e506dac9cb5a", - "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" : "463cdfc2-8c48-45fe-8137-e2dc855befb0", - "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" : "eced263d-5cf5-4d2a-8c30-a4edd76c0ff3", - "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" : "399c42fc-6065-41b1-9798-3a55e1d6945e", - "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" : "a8ba6485-8230-4ffa-b90a-82bcfd8d22e4", - "alias" : "create unique user config", - "config" : { - "require.password.update.after.registration" : "false" - } - }, { - "id" : "f613bf6b-c671-4e78-b97f-5920abecb690", - "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" : "webauthn-register", - "name" : "Webauthn Register", - "providerId" : "webauthn-register", - "enabled" : true, - "defaultAction" : false, - "priority" : 70, - "config" : { } - }, { - "alias" : "webauthn-register-passwordless", - "name" : "Webauthn Register Passwordless", - "providerId" : "webauthn-register-passwordless", - "enabled" : true, - "defaultAction" : false, - "priority" : 80, - "config" : { } - }, { - "alias" : "VERIFY_PROFILE", - "name" : "Verify Profile", - "providerId" : "VERIFY_PROFILE", - "enabled" : true, - "defaultAction" : false, - "priority" : 90, - "config" : { } - }, { - "alias" : "delete_credential", - "name" : "Delete Credential", - "providerId" : "delete_credential", - "enabled" : true, - "defaultAction" : false, - "priority" : 100, - "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", - "cibaExpiresIn" : "120", - "cibaAuthRequestedUserHint" : "login_hint", - "parRequestUriLifespan" : "60", - "cibaInterval" : "5", - "realmReusableOtpCode" : "false" - }, - "keycloakVersion" : "24.0.3", - "userManagedAccessAllowed" : false, - "clientProfiles" : { - "profiles" : [ ] - }, - "clientPolicies" : { - "policies" : [ ] - } -}, { - "id" : "d7757cae-367b-4dfa-87f7-a19a789af2b9", - "realm" : "sqlpage_demo", - "displayName" : "SQLPage Demo", - "displayNameHtml" : "
Keycloak
", - "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, - "maxFailureWaitSeconds" : 900, - "minimumQuickLoginWaitSeconds" : 60, - "waitIncrementSeconds" : 60, - "quickLoginCheckMilliSeconds" : 1000, - "maxDeltaTimeSeconds" : 43200, - "failureFactor" : 30, - "roles" : { - "realm" : [ { - "id" : "50468abf-dd38-4957-8e16-d7b1b8345a19", - "name" : "offline_access", - "description" : "${role_offline-access}", - "composite" : false, - "clientRole" : false, - "containerId" : "d7757cae-367b-4dfa-87f7-a19a789af2b9", - "attributes" : { } - }, { - "id" : "5c8a5401-1d48-467d-bb5a-f9b8b07ea281", - "name" : "uma_authorization", - "description" : "${role_uma_authorization}", - "composite" : false, - "clientRole" : false, - "containerId" : "d7757cae-367b-4dfa-87f7-a19a789af2b9", - "attributes" : { } - }, { - "id" : "3473c742-cfa1-4d81-975e-0d74bdf56795", - "name" : "default-roles-master", - "description" : "${role_default-roles}", - "composite" : true, - "composites" : { - "realm" : [ "offline_access", "uma_authorization" ] + ], + "requiredActions": [ + { + "alias": "CONFIGURE_TOTP", + "name": "Configure OTP", + "providerId": "CONFIGURE_TOTP", + "enabled": true, + "defaultAction": false, + "priority": 10, + "config": {} }, - "clientRole" : false, - "containerId" : "d7757cae-367b-4dfa-87f7-a19a789af2b9", - "attributes" : { } - } ], - "client" : { - "sqlpage_cas_demo" : [ ], - "realm-management" : [ { - "id" : "16d9a55f-c85f-4e81-88b1-fae50781e9cd", - "name" : "query-groups", - "description" : "${role_query-groups}", - "composite" : false, - "clientRole" : true, - "containerId" : "5cfd9edd-a0a5-4ead-ac29-0a4b1ffa17db", - "attributes" : { } - }, { - "id" : "356acf1d-dcae-448a-ad91-1eb7e87d5a66", - "name" : "view-identity-providers", - "description" : "${role_view-identity-providers}", - "composite" : false, - "clientRole" : true, - "containerId" : "5cfd9edd-a0a5-4ead-ac29-0a4b1ffa17db", - "attributes" : { } - }, { - "id" : "52d49f80-5549-471f-ac67-5eb50b047405", - "name" : "manage-realm", - "description" : "${role_manage-realm}", - "composite" : false, - "clientRole" : true, - "containerId" : "5cfd9edd-a0a5-4ead-ac29-0a4b1ffa17db", - "attributes" : { } - }, { - "id" : "5142283f-9900-4ab8-9759-19ec861f0b4e", - "name" : "realm-admin", - "description" : "${role_realm-admin}", - "composite" : true, - "composites" : { - "client" : { - "realm-management" : [ "query-groups", "view-identity-providers", "manage-realm", "create-client", "view-events", "view-authorization", "view-realm", "query-users", "manage-authorization", "manage-users", "query-clients", "manage-identity-providers", "manage-clients", "view-users", "impersonation", "manage-events", "view-clients", "query-realms" ] + { + "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": "webauthn-register", + "name": "Webauthn Register", + "providerId": "webauthn-register", + "enabled": true, + "defaultAction": false, + "priority": 70, + "config": {} + }, + { + "alias": "webauthn-register-passwordless", + "name": "Webauthn Register Passwordless", + "providerId": "webauthn-register-passwordless", + "enabled": true, + "defaultAction": false, + "priority": 80, + "config": {} + }, + { + "alias": "VERIFY_PROFILE", + "name": "Verify Profile", + "providerId": "VERIFY_PROFILE", + "enabled": true, + "defaultAction": false, + "priority": 90, + "config": {} + }, + { + "alias": "delete_credential", + "name": "Delete Credential", + "providerId": "delete_credential", + "enabled": true, + "defaultAction": false, + "priority": 100, + "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", + "cibaExpiresIn": "120", + "cibaAuthRequestedUserHint": "login_hint", + "parRequestUriLifespan": "60", + "cibaInterval": "5", + "realmReusableOtpCode": "false" + }, + "keycloakVersion": "24.0.3", + "userManagedAccessAllowed": false, + "clientProfiles": { + "profiles": [] + }, + "clientPolicies": { + "policies": [] + } + }, + { + "id": "d7757cae-367b-4dfa-87f7-a19a789af2b9", + "realm": "sqlpage_demo", + "displayName": "SQLPage Demo", + "displayNameHtml": "
Keycloak
", + "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, + "maxFailureWaitSeconds": 900, + "minimumQuickLoginWaitSeconds": 60, + "waitIncrementSeconds": 60, + "quickLoginCheckMilliSeconds": 1000, + "maxDeltaTimeSeconds": 43200, + "failureFactor": 30, + "roles": { + "realm": [ + { + "id": "50468abf-dd38-4957-8e16-d7b1b8345a19", + "name": "offline_access", + "description": "${role_offline-access}", + "composite": false, + "clientRole": false, + "containerId": "d7757cae-367b-4dfa-87f7-a19a789af2b9", + "attributes": {} + }, + { + "id": "5c8a5401-1d48-467d-bb5a-f9b8b07ea281", + "name": "uma_authorization", + "description": "${role_uma_authorization}", + "composite": false, + "clientRole": false, + "containerId": "d7757cae-367b-4dfa-87f7-a19a789af2b9", + "attributes": {} + }, + { + "id": "3473c742-cfa1-4d81-975e-0d74bdf56795", + "name": "default-roles-master", + "description": "${role_default-roles}", + "composite": true, + "composites": { + "realm": ["offline_access", "uma_authorization"] + }, + "clientRole": false, + "containerId": "d7757cae-367b-4dfa-87f7-a19a789af2b9", + "attributes": {} + } + ], + "client": { + "sqlpage_cas_demo": [], + "realm-management": [ + { + "id": "16d9a55f-c85f-4e81-88b1-fae50781e9cd", + "name": "query-groups", + "description": "${role_query-groups}", + "composite": false, + "clientRole": true, + "containerId": "5cfd9edd-a0a5-4ead-ac29-0a4b1ffa17db", + "attributes": {} + }, + { + "id": "356acf1d-dcae-448a-ad91-1eb7e87d5a66", + "name": "view-identity-providers", + "description": "${role_view-identity-providers}", + "composite": false, + "clientRole": true, + "containerId": "5cfd9edd-a0a5-4ead-ac29-0a4b1ffa17db", + "attributes": {} + }, + { + "id": "52d49f80-5549-471f-ac67-5eb50b047405", + "name": "manage-realm", + "description": "${role_manage-realm}", + "composite": false, + "clientRole": true, + "containerId": "5cfd9edd-a0a5-4ead-ac29-0a4b1ffa17db", + "attributes": {} + }, + { + "id": "5142283f-9900-4ab8-9759-19ec861f0b4e", + "name": "realm-admin", + "description": "${role_realm-admin}", + "composite": true, + "composites": { + "client": { + "realm-management": [ + "query-groups", + "view-identity-providers", + "manage-realm", + "create-client", + "view-events", + "view-authorization", + "view-realm", + "query-users", + "manage-authorization", + "manage-users", + "query-clients", + "manage-identity-providers", + "manage-clients", + "view-users", + "impersonation", + "manage-events", + "view-clients", + "query-realms" + ] + } + }, + "clientRole": true, + "containerId": "5cfd9edd-a0a5-4ead-ac29-0a4b1ffa17db", + "attributes": {} + }, + { + "id": "31ded332-e8e0-4bd0-928a-aec9c2917edc", + "name": "create-client", + "description": "${role_create-client}", + "composite": false, + "clientRole": true, + "containerId": "5cfd9edd-a0a5-4ead-ac29-0a4b1ffa17db", + "attributes": {} + }, + { + "id": "bf4d4971-836b-49bb-bf66-5d07992bda20", + "name": "view-events", + "description": "${role_view-events}", + "composite": false, + "clientRole": true, + "containerId": "5cfd9edd-a0a5-4ead-ac29-0a4b1ffa17db", + "attributes": {} + }, + { + "id": "9d665e00-274f-4389-ba0e-a8a8f7eae5fe", + "name": "view-authorization", + "description": "${role_view-authorization}", + "composite": false, + "clientRole": true, + "containerId": "5cfd9edd-a0a5-4ead-ac29-0a4b1ffa17db", + "attributes": {} + }, + { + "id": "d4d35d92-798c-4740-bf10-6ef454cb954d", + "name": "view-realm", + "description": "${role_view-realm}", + "composite": false, + "clientRole": true, + "containerId": "5cfd9edd-a0a5-4ead-ac29-0a4b1ffa17db", + "attributes": {} + }, + { + "id": "053ad20f-3570-4e1c-af3a-6d275236cdc2", + "name": "query-users", + "description": "${role_query-users}", + "composite": false, + "clientRole": true, + "containerId": "5cfd9edd-a0a5-4ead-ac29-0a4b1ffa17db", + "attributes": {} + }, + { + "id": "65bdc99b-ab0d-4693-b089-648d75650da2", + "name": "manage-authorization", + "description": "${role_manage-authorization}", + "composite": false, + "clientRole": true, + "containerId": "5cfd9edd-a0a5-4ead-ac29-0a4b1ffa17db", + "attributes": {} + }, + { + "id": "3c21aad6-86eb-48cd-a700-81e3195bfb58", + "name": "manage-users", + "description": "${role_manage-users}", + "composite": false, + "clientRole": true, + "containerId": "5cfd9edd-a0a5-4ead-ac29-0a4b1ffa17db", + "attributes": {} + }, + { + "id": "6b1169bb-7bd1-4154-9ef8-d104c94dff04", + "name": "query-clients", + "description": "${role_query-clients}", + "composite": false, + "clientRole": true, + "containerId": "5cfd9edd-a0a5-4ead-ac29-0a4b1ffa17db", + "attributes": {} + }, + { + "id": "752ec963-dcd1-4558-85c0-9c606f5d1181", + "name": "manage-clients", + "description": "${role_manage-clients}", + "composite": false, + "clientRole": true, + "containerId": "5cfd9edd-a0a5-4ead-ac29-0a4b1ffa17db", + "attributes": {} + }, + { + "id": "10befa18-80c8-461e-bcea-5dba1d864cb0", + "name": "manage-identity-providers", + "description": "${role_manage-identity-providers}", + "composite": false, + "clientRole": true, + "containerId": "5cfd9edd-a0a5-4ead-ac29-0a4b1ffa17db", + "attributes": {} + }, + { + "id": "c9991186-694b-4758-8e1b-ec6aa334ef4b", + "name": "impersonation", + "description": "${role_impersonation}", + "composite": false, + "clientRole": true, + "containerId": "5cfd9edd-a0a5-4ead-ac29-0a4b1ffa17db", + "attributes": {} + }, + { + "id": "b65a8c12-f5f8-427a-9d90-eccf22d847a2", + "name": "view-users", + "description": "${role_view-users}", + "composite": true, + "composites": { + "client": { + "realm-management": ["query-users", "query-groups"] + } + }, + "clientRole": true, + "containerId": "5cfd9edd-a0a5-4ead-ac29-0a4b1ffa17db", + "attributes": {} + }, + { + "id": "57dbd22f-cb06-47fb-a0d3-d7bd7f715595", + "name": "manage-events", + "description": "${role_manage-events}", + "composite": false, + "clientRole": true, + "containerId": "5cfd9edd-a0a5-4ead-ac29-0a4b1ffa17db", + "attributes": {} + }, + { + "id": "d533dda6-e2f7-4163-a0b6-4752cf74bcde", + "name": "view-clients", + "description": "${role_view-clients}", + "composite": true, + "composites": { + "client": { + "realm-management": ["query-clients"] + } + }, + "clientRole": true, + "containerId": "5cfd9edd-a0a5-4ead-ac29-0a4b1ffa17db", + "attributes": {} + }, + { + "id": "439fe1a2-c13b-4043-832d-00558a53ec6e", + "name": "query-realms", + "description": "${role_query-realms}", + "composite": false, + "clientRole": true, + "containerId": "5cfd9edd-a0a5-4ead-ac29-0a4b1ffa17db", + "attributes": {} + } + ], + "security-admin-console": [], + "admin-cli": [], + "account-console": [], + "sqlpage": [], + "broker": [], + "master-realm": [], + "account": [ + { + "id": "f97398fd-8608-46eb-ad58-39b92dee69a7", + "name": "view-groups", + "composite": false, + "clientRole": true, + "containerId": "d50163a2-d59f-4c1d-a1e5-087b5fa3920d", + "attributes": {} + }, + { + "id": "722736c4-47ce-4a8f-a74a-38b37f172bc3", + "name": "delete-account", + "description": "${role_delete-account}", + "composite": false, + "clientRole": true, + "containerId": "d50163a2-d59f-4c1d-a1e5-087b5fa3920d", + "attributes": {} + }, + { + "id": "9cd94925-88bd-4cd2-af60-797da71aa1e5", + "name": "manage-account", + "composite": false, + "clientRole": true, + "containerId": "d50163a2-d59f-4c1d-a1e5-087b5fa3920d", + "attributes": {} + } + ] + } + }, + "groups": [], + "defaultRole": { + "id": "3473c742-cfa1-4d81-975e-0d74bdf56795", + "name": "default-roles-master", + "description": "${role_default-roles}", + "composite": true, + "clientRole": false, + "containerId": "d7757cae-367b-4dfa-87f7-a19a789af2b9" + }, + "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"], + "webAuthnPolicyRpId": "", + "webAuthnPolicyAttestationConveyancePreference": "not specified", + "webAuthnPolicyAuthenticatorAttachment": "not specified", + "webAuthnPolicyRequireResidentKey": "not specified", + "webAuthnPolicyUserVerificationRequirement": "not specified", + "webAuthnPolicyCreateTimeout": 0, + "webAuthnPolicyAvoidSameAuthenticatorRegister": false, + "webAuthnPolicyAcceptableAaguids": [], + "webAuthnPolicyExtraOrigins": [], + "webAuthnPolicyPasswordlessRpEntityName": "keycloak", + "webAuthnPolicyPasswordlessSignatureAlgorithms": ["ES256"], + "webAuthnPolicyPasswordlessRpId": "", + "webAuthnPolicyPasswordlessAttestationConveyancePreference": "not specified", + "webAuthnPolicyPasswordlessAuthenticatorAttachment": "not specified", + "webAuthnPolicyPasswordlessRequireResidentKey": "not specified", + "webAuthnPolicyPasswordlessUserVerificationRequirement": "not specified", + "webAuthnPolicyPasswordlessCreateTimeout": 0, + "webAuthnPolicyPasswordlessAvoidSameAuthenticatorRegister": false, + "webAuthnPolicyPasswordlessAcceptableAaguids": [], + "webAuthnPolicyPasswordlessExtraOrigins": [], + "users": [ + { + "id": "0cc0472e-a38b-4f45-8d91-77ecfe5c8b7d", + "username": "demo", + "firstName": "John", + "lastName": "Smith", + "email": "demo@example.com", + "emailVerified": false, + "createdTimestamp": 1714079479552, + "enabled": true, + "totp": false, + "credentials": [ + { + "id": "d453f7cb-5ba5-45ab-a694-38ddffb93503", + "type": "password", + "userLabel": "My password", + "createdDate": 1714079498525, + "secretData": "{\"value\":\"gxi8oR/w6GPvZjUXJAsxSuxWZCDsxL3hwzjlfymoeYsRLXxJIvJdy5SeRch4BOYwNdfRwrbOenBGScCleyQkfA==\",\"salt\":\"HTsvAP/Cig6pIOVo3SPFnw==\",\"additionalParameters\":{}}", + "credentialData": "{\"hashIterations\":210000,\"algorithm\":\"pbkdf2-sha512\",\"additionalParameters\":{}}" + } + ], + "disableableCredentialTypes": [], + "requiredActions": [], + "realmRoles": ["default-roles-master"], + "notBefore": 0, + "groups": [] + } + ], + "scopeMappings": [ + { + "clientScope": "offline_access", + "roles": ["offline_access"] + } + ], + "clientScopeMappings": { + "account": [ + { + "client": "account-console", + "roles": ["manage-account", "view-groups"] + } + ] + }, + "clients": [ + { + "id": "d50163a2-d59f-4c1d-a1e5-087b5fa3920d", + "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": { + "post.logout.redirect.uris": "+" + }, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "protocolMappers": [ + { + "id": "89f96859-de46-4778-bd0b-e44256ff8ea2", + "name": "family name", + "protocol": "cas", + "protocolMapper": "cas-usermodel-property-mapper", + "consentRequired": false, + "config": { + "user.attribute": "lastName", + "claim.name": "sn", + "jsonType.label": "String" + } + }, + { + "id": "7a8f7d8b-93dc-4f5c-a8cf-2caa9802ae35", + "name": "email", + "protocol": "cas", + "protocolMapper": "cas-usermodel-property-mapper", + "consentRequired": false, + "config": { + "user.attribute": "email", + "claim.name": "mail", + "jsonType.label": "String" + } + }, + { + "id": "853110df-77fe-49b2-b8be-000ae4922b88", + "name": "full name", + "protocol": "cas", + "protocolMapper": "cas-full-name-mapper", + "consentRequired": false, + "config": { + "claim.name": "cn", + "jsonType.label": "String" + } + }, + { + "id": "12e0887d-af61-4066-9d29-a54f2523606d", + "name": "given name", + "protocol": "cas", + "protocolMapper": "cas-usermodel-property-mapper", + "consentRequired": false, + "config": { + "user.attribute": "firstName", + "claim.name": "givenName", + "jsonType.label": "String" + } + } + ], + "defaultClientScopes": [ + "web-origins", + "acr", + "profile", + "roles", + "email" + ], + "optionalClientScopes": [ + "address", + "phone", + "offline_access", + "microprofile-jwt" + ] + }, + { + "id": "ff46bc2b-4c0b-49b3-9bca-0938b05a9581", + "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": { + "post.logout.redirect.uris": "+", + "pkce.code.challenge.method": "S256" + }, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "protocolMappers": [ + { + "id": "46a75d57-9af5-4466-8e0c-deb66d6d58e8", + "name": "audience resolve", + "protocol": "openid-connect", + "protocolMapper": "oidc-audience-resolve-mapper", + "consentRequired": false, + "config": {} + } + ], + "defaultClientScopes": [ + "web-origins", + "acr", + "profile", + "roles", + "email" + ], + "optionalClientScopes": [ + "address", + "phone", + "offline_access", + "microprofile-jwt" + ] + }, + { + "id": "12f13df0-1a10-4792-b62a-c67b3d0f9bb0", + "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": { + "post.logout.redirect.uris": "+" + }, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "protocolMappers": [ + { + "id": "0c800a73-f8f1-40ea-b91e-a6bc6e9c6b37", + "name": "email", + "protocol": "cas", + "protocolMapper": "cas-usermodel-property-mapper", + "consentRequired": false, + "config": { + "user.attribute": "email", + "claim.name": "mail", + "jsonType.label": "String" + } + }, + { + "id": "8e502dad-3945-4e58-bb7f-bdd4d2d0416d", + "name": "family name", + "protocol": "cas", + "protocolMapper": "cas-usermodel-property-mapper", + "consentRequired": false, + "config": { + "user.attribute": "lastName", + "claim.name": "sn", + "jsonType.label": "String" + } + }, + { + "id": "18c6e46a-c5cc-45ba-9ac6-cddc2c59fd1a", + "name": "full name", + "protocol": "cas", + "protocolMapper": "cas-full-name-mapper", + "consentRequired": false, + "config": { + "claim.name": "cn", + "jsonType.label": "String" + } + }, + { + "id": "b9171c27-55f9-4f99-9086-c1828ae0f884", + "name": "given name", + "protocol": "cas", + "protocolMapper": "cas-usermodel-property-mapper", + "consentRequired": false, + "config": { + "user.attribute": "firstName", + "claim.name": "givenName", + "jsonType.label": "String" + } + } + ], + "defaultClientScopes": [ + "web-origins", + "acr", + "profile", + "roles", + "email" + ], + "optionalClientScopes": [ + "address", + "phone", + "offline_access", + "microprofile-jwt" + ] + }, + { + "id": "1b5f331e-aaa5-4225-888d-b212d60211fb", + "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": { + "post.logout.redirect.uris": "+" + }, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "protocolMappers": [ + { + "id": "5342db5b-d1ba-4218-8900-3d5e2e0a8ccb", + "name": "given name", + "protocol": "cas", + "protocolMapper": "cas-usermodel-property-mapper", + "consentRequired": false, + "config": { + "user.attribute": "firstName", + "claim.name": "givenName", + "jsonType.label": "String" + } + }, + { + "id": "4bc5fc15-8488-4ef0-a0c0-4a28e0803fb4", + "name": "family name", + "protocol": "cas", + "protocolMapper": "cas-usermodel-property-mapper", + "consentRequired": false, + "config": { + "user.attribute": "lastName", + "claim.name": "sn", + "jsonType.label": "String" + } + }, + { + "id": "bae6a63f-981f-429a-b4d4-1687a9dc5386", + "name": "full name", + "protocol": "cas", + "protocolMapper": "cas-full-name-mapper", + "consentRequired": false, + "config": { + "claim.name": "cn", + "jsonType.label": "String" + } + }, + { + "id": "31c1c637-07a5-4884-892d-bd904f7ff1fb", + "name": "email", + "protocol": "cas", + "protocolMapper": "cas-usermodel-property-mapper", + "consentRequired": false, + "config": { + "user.attribute": "email", + "claim.name": "mail", + "jsonType.label": "String" + } + } + ], + "defaultClientScopes": [ + "web-origins", + "acr", + "profile", + "roles", + "email" + ], + "optionalClientScopes": [ + "address", + "phone", + "offline_access", + "microprofile-jwt" + ] + }, + { + "id": "a3bb7f5a-8746-4d66-a6d3-60c355489276", + "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": { + "post.logout.redirect.uris": "+" + }, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "protocolMappers": [ + { + "id": "6e805d7f-9d7f-4f26-91e7-c58ea91df054", + "name": "full name", + "protocol": "cas", + "protocolMapper": "cas-full-name-mapper", + "consentRequired": false, + "config": { + "claim.name": "cn", + "jsonType.label": "String" + } + }, + { + "id": "ccd6d83f-2da8-40dd-b94d-77ded30dc831", + "name": "email", + "protocol": "cas", + "protocolMapper": "cas-usermodel-property-mapper", + "consentRequired": false, + "config": { + "user.attribute": "email", + "claim.name": "mail", + "jsonType.label": "String" + } + }, + { + "id": "119d7e06-8651-42b6-af42-4ea02bfb49e0", + "name": "given name", + "protocol": "cas", + "protocolMapper": "cas-usermodel-property-mapper", + "consentRequired": false, + "config": { + "user.attribute": "firstName", + "claim.name": "givenName", + "jsonType.label": "String" + } + }, + { + "id": "7dd81fc3-b99a-4f3a-8a5a-ab072e8bf935", + "name": "family name", + "protocol": "cas", + "protocolMapper": "cas-usermodel-property-mapper", + "consentRequired": false, + "config": { + "user.attribute": "lastName", + "claim.name": "sn", + "jsonType.label": "String" + } + } + ], + "defaultClientScopes": [ + "web-origins", + "acr", + "profile", + "roles", + "email" + ], + "optionalClientScopes": [ + "address", + "phone", + "offline_access", + "microprofile-jwt" + ] + }, + { + "id": "5cfd9edd-a0a5-4ead-ac29-0a4b1ffa17db", + "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": { + "post.logout.redirect.uris": "+" + }, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "protocolMappers": [ + { + "id": "d97602ca-263b-4115-88d8-fa1470e231db", + "name": "family name", + "protocol": "cas", + "protocolMapper": "cas-usermodel-property-mapper", + "consentRequired": false, + "config": { + "user.attribute": "lastName", + "claim.name": "sn", + "jsonType.label": "String" + } + }, + { + "id": "1d5c2948-1c22-4444-9de2-ec9d5fab24a2", + "name": "given name", + "protocol": "cas", + "protocolMapper": "cas-usermodel-property-mapper", + "consentRequired": false, + "config": { + "user.attribute": "firstName", + "claim.name": "givenName", + "jsonType.label": "String" + } + }, + { + "id": "64760efc-d03f-4f2f-8cae-63684200eace", + "name": "full name", + "protocol": "cas", + "protocolMapper": "cas-full-name-mapper", + "consentRequired": false, + "config": { + "claim.name": "cn", + "jsonType.label": "String" + } + }, + { + "id": "52dd9974-2d5c-47ef-8229-d1c97e59d4f0", + "name": "email", + "protocol": "cas", + "protocolMapper": "cas-usermodel-property-mapper", + "consentRequired": false, + "config": { + "user.attribute": "email", + "claim.name": "mail", + "jsonType.label": "String" + } + } + ], + "defaultClientScopes": [], + "optionalClientScopes": [] + }, + { + "id": "12a6effc-cf82-4dff-9bdc-d7610b86d89c", + "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": { + "post.logout.redirect.uris": "+", + "pkce.code.challenge.method": "S256" + }, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": false, + "nodeReRegistrationTimeout": 0, + "protocolMappers": [ + { + "id": "baecafba-25d9-473e-a7af-72d18a84fd83", + "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", + "email" + ], + "optionalClientScopes": [ + "address", + "phone", + "offline_access", + "microprofile-jwt" + ] + }, + { + "id": "a2bec2b8-f850-405e-9f26-59063ffa6f08", + "clientId": "sqlpage", + "name": "SQLPage Example App", + "description": "", + "rootUrl": "http://localhost:8080/", + "adminUrl": "http://localhost:8080/", + "baseUrl": "", + "surrogateAuthRequired": false, + "enabled": true, + "alwaysDisplayInConsole": true, + "clientAuthenticatorType": "client-secret", + "secret": "qiawfnYrYzsmoaOZT28rRjPPRamfvrYr", + "redirectUris": ["http://localhost:8080/oidc_redirect_handler.sql"], + "webOrigins": ["http://localhost:8080"], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": true, + "serviceAccountsEnabled": false, + "publicClient": false, + "frontchannelLogout": true, + "protocol": "openid-connect", + "attributes": { + "client.secret.creation.time": "1714080951", + "post.logout.redirect.uris": "+##http://localhost:8080/", + "oauth2.device.authorization.grant.enabled": "false", + "backchannel.logout.revoke.offline.tokens": "false", + "use.refresh.tokens": "true", + "oidc.ciba.grant.enabled": "false", + "client.use.lightweight.access.token.enabled": "false", + "backchannel.logout.session.required": "true", + "client_credentials.use_refresh_token": "false", + "tls.client.certificate.bound.access.tokens": "false", + "require.pushed.authorization.requests": "false", + "acr.loa.map": "{}", + "display.on.consent.screen": "false", + "token.response.type.bearer.lower-case": "false" + }, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": true, + "nodeReRegistrationTimeout": -1, + "protocolMappers": [ + { + "id": "62a6fb7a-c7e5-44c3-b878-5bbfa932dc3c", + "name": "email", + "protocol": "cas", + "protocolMapper": "cas-usermodel-property-mapper", + "consentRequired": false, + "config": { + "user.attribute": "email", + "claim.name": "mail", + "jsonType.label": "String" + } + }, + { + "id": "9b15bf7e-28c9-46dd-8e38-0d69f8cab137", + "name": "given name", + "protocol": "cas", + "protocolMapper": "cas-usermodel-property-mapper", + "consentRequired": false, + "config": { + "user.attribute": "firstName", + "claim.name": "givenName", + "jsonType.label": "String" + } + }, + { + "id": "15150602-9a7d-4850-8f69-17b3553174c4", + "name": "family name", + "protocol": "cas", + "protocolMapper": "cas-usermodel-property-mapper", + "consentRequired": false, + "config": { + "user.attribute": "lastName", + "claim.name": "sn", + "jsonType.label": "String" + } + }, + { + "id": "05e051d1-3954-43c4-a4ea-73b5879dac17", + "name": "full name", + "protocol": "cas", + "protocolMapper": "cas-full-name-mapper", + "consentRequired": false, + "config": { + "claim.name": "cn", + "jsonType.label": "String" + } + } + ], + "defaultClientScopes": [ + "web-origins", + "acr", + "profile", + "roles", + "email" + ], + "optionalClientScopes": [ + "address", + "phone", + "offline_access", + "microprofile-jwt" + ] + }, + { + "id": "4b0aaf08-2b73-4d18-8030-83a20b560e62", + "clientId": "sqlpage_cas_demo", + "name": "SQLPage CAS demo", + "description": "This is using keycloak, but hopefully this is compatible with Apero CAS.", + "rootUrl": "http://localhost:8080/", + "adminUrl": "http://localhost:8080/", + "baseUrl": "http://localhost:8080/", + "surrogateAuthRequired": false, + "enabled": true, + "alwaysDisplayInConsole": false, + "clientAuthenticatorType": "client-secret", + "redirectUris": ["http://localhost:8080/cas/redirect_handler.sql"], + "webOrigins": ["+"], + "notBefore": 0, + "bearerOnly": false, + "consentRequired": false, + "standardFlowEnabled": true, + "implicitFlowEnabled": false, + "directAccessGrantsEnabled": true, + "serviceAccountsEnabled": false, + "publicClient": true, + "frontchannelLogout": true, + "protocol": "cas", + "attributes": { + "post.logout.redirect.uris": "http://localhost:8080/cas/redirect_handler.sql" + }, + "authenticationFlowBindingOverrides": {}, + "fullScopeAllowed": true, + "nodeReRegistrationTimeout": -1, + "protocolMappers": [ + { + "id": "afe008e7-a775-45ca-9b88-7d921a816aad", + "name": "family name", + "protocol": "cas", + "protocolMapper": "cas-usermodel-property-mapper", + "consentRequired": false, + "config": { + "user.attribute": "lastName", + "claim.name": "sn", + "jsonType.label": "String" + } + }, + { + "id": "e54f5acb-5ed1-4640-99ed-03fc3f92c520", + "name": "given name", + "protocol": "cas", + "protocolMapper": "cas-usermodel-property-mapper", + "consentRequired": false, + "config": { + "user.attribute": "firstName", + "claim.name": "givenName", + "jsonType.label": "String" + } + }, + { + "id": "af22294a-2ba1-4085-aee7-ccebab888ec4", + "name": "full name", + "protocol": "cas", + "protocolMapper": "cas-full-name-mapper", + "consentRequired": false, + "config": { + "claim.name": "cn", + "jsonType.label": "String" + } + }, + { + "id": "569ec0d9-c656-4492-b3a2-0a8d1a4df029", + "name": "email", + "protocol": "cas", + "protocolMapper": "cas-usermodel-property-mapper", + "consentRequired": false, + "config": { + "user.attribute": "email", + "claim.name": "mail", + "jsonType.label": "String" + } + } + ], + "defaultClientScopes": [], + "optionalClientScopes": [] + } + ], + "clientScopes": [ + { + "id": "c14c09ff-087e-4272-9cc4-b2a997f64a55", + "name": "address", + "description": "OpenID Connect built-in scope: address", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "true", + "display.on.consent.screen": "true", + "consent.screen.text": "${addressScopeConsentText}" + }, + "protocolMappers": [ + { + "id": "60c43d69-2518-4424-a5b8-5cdc33e2ac17", + "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": "03ea4147-a506-45a9-84ae-e1efe2708eea", + "name": "email", + "description": "OpenID Connect built-in scope: email", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "true", + "display.on.consent.screen": "true", + "consent.screen.text": "${emailScopeConsentText}" + }, + "protocolMappers": [ + { + "id": "04d4097a-16b3-4155-9ff3-672d04079e16", + "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": "f3bdae59-35e2-46b8-9625-a53a066993b2", + "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": "7bbedae3-a3b5-4d76-b457-b00010254408", + "name": "profile", + "description": "OpenID Connect built-in scope: profile", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "true", + "display.on.consent.screen": "true", + "consent.screen.text": "${profileScopeConsentText}" + }, + "protocolMappers": [ + { + "id": "7c97d390-3a24-4013-85a7-674427d49ab8", + "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": "b740d3b8-38c7-460e-94aa-6525aec2e00b", + "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": "df3c39d5-cd3f-4d38-899c-d0899d82dcbb", + "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": "9dbeb8fe-333d-4311-a389-42075ff057b4", + "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": "19e29316-24dd-4e4a-aa85-e767cd867a79", + "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": "2bfa792d-ea47-4d43-b456-11cde3c937f2", + "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": "c4aa41a4-bef1-401b-abe8-3d48f101020d", + "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": "c9617211-8247-4b5e-9b71-58e61bdaab21", + "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": "b7ae04f4-415e-4e0e-b7b6-1af6841d22bb", + "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": "51a166d3-ba9a-4ba6-b1a1-d259563aa49a", + "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": "e3c90b13-0db0-40f7-b640-487f18b01214", + "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": "cd5cfea9-9151-486c-9ec1-e9d503543201", + "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": "bfc74493-3b09-4dac-b7be-41cc6d2e209e", + "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": "8dfd3646-a624-43ee-85de-82aa171f3ad7", + "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": "990085f5-6624-43e0-bd8e-ee19427c9900", + "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": "824634cf-dfc0-4fc9-b47b-3803a5868e6f", + "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": "5b5a7a38-9746-4593-b94d-4dbcb79a57d8", + "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": "34321bc7-3fee-4999-b718-19d907b221a4", + "name": "role_list", + "description": "SAML role list", + "protocol": "saml", + "attributes": { + "consent.screen.text": "${samlRoleListScopeConsentText}", + "display.on.consent.screen": "true" + }, + "protocolMappers": [ + { + "id": "2a7bc0fb-adce-4b3d-b423-7035f31fb5a9", + "name": "role list", + "protocol": "saml", + "protocolMapper": "saml-role-list-mapper", + "consentRequired": false, + "config": { + "single": "false", + "attribute.nameformat": "Basic", + "attribute.name": "Role" + } + } + ] + }, + { + "id": "bd166300-5b05-4726-b0eb-68c29e35f1af", + "name": "phone", + "description": "OpenID Connect built-in scope: phone", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "true", + "display.on.consent.screen": "true", + "consent.screen.text": "${phoneScopeConsentText}" + }, + "protocolMappers": [ + { + "id": "ef839796-9f9a-47c0-9685-c9edcf6754a5", + "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": "f74a2e81-da33-4e8d-943a-d5e665adf499", + "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": "d5196e6b-5bb9-4eb0-92b3-2f8d129d5802", + "name": "web-origins", + "description": "OpenID Connect scope for add allowed web origins to the access token", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "false", + "display.on.consent.screen": "false", + "consent.screen.text": "" + }, + "protocolMappers": [ + { + "id": "cdf64576-9f80-482a-bcff-6c547309d9bd", + "name": "allowed web origins", + "protocol": "openid-connect", + "protocolMapper": "oidc-allowed-origins-mapper", + "consentRequired": false, + "config": { + "introspection.token.claim": "true", + "access.token.claim": "true" + } + } + ] + }, + { + "id": "6c3ffd12-fa43-4cb8-a118-c4643b98df70", + "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": "c2045a80-7b4d-4e06-acb9-7299ba16134c", + "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": "ad467869-6344-40b2-af7a-70687d76e6fd", + "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": "7c7710a3-e3a7-4c70-a246-04a14c9733bb", + "name": "roles", + "description": "OpenID Connect scope for add user roles to the access token", + "protocol": "openid-connect", + "attributes": { + "include.in.token.scope": "false", + "display.on.consent.screen": "true", + "consent.screen.text": "${rolesScopeConsentText}" + }, + "protocolMappers": [ + { + "id": "780cb5bb-a37d-4f87-a7d5-a0942a2c1589", + "name": "realm roles", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-realm-role-mapper", + "consentRequired": false, + "config": { + "introspection.token.claim": "true", + "multivalued": "true", + "user.attribute": "foo", + "access.token.claim": "true", + "claim.name": "realm_access.roles", + "jsonType.label": "String" + } + }, + { + "id": "3f65310d-21f0-4973-8c67-457a0d851ba3", + "name": "client roles", + "protocol": "openid-connect", + "protocolMapper": "oidc-usermodel-client-role-mapper", + "consentRequired": false, + "config": { + "introspection.token.claim": "true", + "multivalued": "true", + "user.attribute": "foo", + "access.token.claim": "true", + "claim.name": "resource_access.${client_id}.roles", + "jsonType.label": "String" + } + }, + { + "id": "1a6720eb-c33d-4c39-9d42-051aa1cf7d85", + "name": "audience resolve", + "protocol": "openid-connect", + "protocolMapper": "oidc-audience-resolve-mapper", + "consentRequired": false, + "config": { + "introspection.token.claim": "true", + "access.token.claim": "true" + } + } + ] + } + ], + "defaultDefaultClientScopes": [ + "role_list", + "profile", + "email", + "roles", + "web-origins", + "acr" + ], + "defaultOptionalClientScopes": [ + "offline_access", + "address", + "phone", + "microprofile-jwt" + ], + "browserSecurityHeaders": { + "contentSecurityPolicyReportOnly": "", + "xContentTypeOptions": "nosniff", + "referrerPolicy": "no-referrer", + "xRobotsTag": "none", + "xFrameOptions": "SAMEORIGIN", + "contentSecurityPolicy": "frame-src 'self'; frame-ancestors 'self'; object-src 'none';", + "xXSSProtection": "1; mode=block", + "strictTransportSecurity": "max-age=31536000; includeSubDomains" + }, + "smtpServer": {}, + "loginTheme": "keycloak", + "accountTheme": "", + "adminTheme": "", + "emailTheme": "", + "eventsEnabled": false, + "eventsListeners": ["jboss-logging"], + "enabledEventTypes": [], + "adminEventsEnabled": false, + "adminEventsDetailsEnabled": false, + "identityProviders": [], + "identityProviderMappers": [], + "components": { + "org.keycloak.services.clientregistration.policy.ClientRegistrationPolicy": [ + { + "id": "e89fe502-91fd-4f04-bdcc-4b14e817e4dc", + "name": "Full Scope Disabled", + "providerId": "scope", + "subType": "anonymous", + "subComponents": {}, + "config": {} + }, + { + "id": "1414070f-5cd6-4446-b53a-dcd9c28c26a5", + "name": "Allowed Client Scopes", + "providerId": "allowed-client-templates", + "subType": "authenticated", + "subComponents": {}, + "config": { + "allow-default-scopes": ["true"] } }, - "clientRole" : true, - "containerId" : "5cfd9edd-a0a5-4ead-ac29-0a4b1ffa17db", - "attributes" : { } - }, { - "id" : "31ded332-e8e0-4bd0-928a-aec9c2917edc", - "name" : "create-client", - "description" : "${role_create-client}", - "composite" : false, - "clientRole" : true, - "containerId" : "5cfd9edd-a0a5-4ead-ac29-0a4b1ffa17db", - "attributes" : { } - }, { - "id" : "bf4d4971-836b-49bb-bf66-5d07992bda20", - "name" : "view-events", - "description" : "${role_view-events}", - "composite" : false, - "clientRole" : true, - "containerId" : "5cfd9edd-a0a5-4ead-ac29-0a4b1ffa17db", - "attributes" : { } - }, { - "id" : "9d665e00-274f-4389-ba0e-a8a8f7eae5fe", - "name" : "view-authorization", - "description" : "${role_view-authorization}", - "composite" : false, - "clientRole" : true, - "containerId" : "5cfd9edd-a0a5-4ead-ac29-0a4b1ffa17db", - "attributes" : { } - }, { - "id" : "d4d35d92-798c-4740-bf10-6ef454cb954d", - "name" : "view-realm", - "description" : "${role_view-realm}", - "composite" : false, - "clientRole" : true, - "containerId" : "5cfd9edd-a0a5-4ead-ac29-0a4b1ffa17db", - "attributes" : { } - }, { - "id" : "053ad20f-3570-4e1c-af3a-6d275236cdc2", - "name" : "query-users", - "description" : "${role_query-users}", - "composite" : false, - "clientRole" : true, - "containerId" : "5cfd9edd-a0a5-4ead-ac29-0a4b1ffa17db", - "attributes" : { } - }, { - "id" : "65bdc99b-ab0d-4693-b089-648d75650da2", - "name" : "manage-authorization", - "description" : "${role_manage-authorization}", - "composite" : false, - "clientRole" : true, - "containerId" : "5cfd9edd-a0a5-4ead-ac29-0a4b1ffa17db", - "attributes" : { } - }, { - "id" : "3c21aad6-86eb-48cd-a700-81e3195bfb58", - "name" : "manage-users", - "description" : "${role_manage-users}", - "composite" : false, - "clientRole" : true, - "containerId" : "5cfd9edd-a0a5-4ead-ac29-0a4b1ffa17db", - "attributes" : { } - }, { - "id" : "6b1169bb-7bd1-4154-9ef8-d104c94dff04", - "name" : "query-clients", - "description" : "${role_query-clients}", - "composite" : false, - "clientRole" : true, - "containerId" : "5cfd9edd-a0a5-4ead-ac29-0a4b1ffa17db", - "attributes" : { } - }, { - "id" : "752ec963-dcd1-4558-85c0-9c606f5d1181", - "name" : "manage-clients", - "description" : "${role_manage-clients}", - "composite" : false, - "clientRole" : true, - "containerId" : "5cfd9edd-a0a5-4ead-ac29-0a4b1ffa17db", - "attributes" : { } - }, { - "id" : "10befa18-80c8-461e-bcea-5dba1d864cb0", - "name" : "manage-identity-providers", - "description" : "${role_manage-identity-providers}", - "composite" : false, - "clientRole" : true, - "containerId" : "5cfd9edd-a0a5-4ead-ac29-0a4b1ffa17db", - "attributes" : { } - }, { - "id" : "c9991186-694b-4758-8e1b-ec6aa334ef4b", - "name" : "impersonation", - "description" : "${role_impersonation}", - "composite" : false, - "clientRole" : true, - "containerId" : "5cfd9edd-a0a5-4ead-ac29-0a4b1ffa17db", - "attributes" : { } - }, { - "id" : "b65a8c12-f5f8-427a-9d90-eccf22d847a2", - "name" : "view-users", - "description" : "${role_view-users}", - "composite" : true, - "composites" : { - "client" : { - "realm-management" : [ "query-users", "query-groups" ] + { + "id": "1e6d1ac0-d10b-4eaf-8b87-39ccf6a755d2", + "name": "Allowed Protocol Mapper Types", + "providerId": "allowed-protocol-mappers", + "subType": "authenticated", + "subComponents": {}, + "config": { + "allowed-protocol-mapper-types": [ + "oidc-sha256-pairwise-sub-mapper", + "saml-user-property-mapper", + "saml-user-attribute-mapper", + "oidc-usermodel-property-mapper", + "oidc-usermodel-attribute-mapper", + "saml-role-list-mapper", + "oidc-address-mapper", + "oidc-full-name-mapper" + ] } }, - "clientRole" : true, - "containerId" : "5cfd9edd-a0a5-4ead-ac29-0a4b1ffa17db", - "attributes" : { } - }, { - "id" : "57dbd22f-cb06-47fb-a0d3-d7bd7f715595", - "name" : "manage-events", - "description" : "${role_manage-events}", - "composite" : false, - "clientRole" : true, - "containerId" : "5cfd9edd-a0a5-4ead-ac29-0a4b1ffa17db", - "attributes" : { } - }, { - "id" : "d533dda6-e2f7-4163-a0b6-4752cf74bcde", - "name" : "view-clients", - "description" : "${role_view-clients}", - "composite" : true, - "composites" : { - "client" : { - "realm-management" : [ "query-clients" ] + { + "id": "b34cb2f6-806e-49c3-822a-614b4465faf7", + "name": "Consent Required", + "providerId": "consent-required", + "subType": "anonymous", + "subComponents": {}, + "config": {} + }, + { + "id": "81af21c3-da8a-4f70-9b33-43d0150f0bbb", + "name": "Max Clients Limit", + "providerId": "max-clients", + "subType": "anonymous", + "subComponents": {}, + "config": { + "max-clients": ["200"] } }, - "clientRole" : true, - "containerId" : "5cfd9edd-a0a5-4ead-ac29-0a4b1ffa17db", - "attributes" : { } - }, { - "id" : "439fe1a2-c13b-4043-832d-00558a53ec6e", - "name" : "query-realms", - "description" : "${role_query-realms}", - "composite" : false, - "clientRole" : true, - "containerId" : "5cfd9edd-a0a5-4ead-ac29-0a4b1ffa17db", - "attributes" : { } - } ], - "security-admin-console" : [ ], - "admin-cli" : [ ], - "account-console" : [ ], - "sqlpage" : [ ], - "broker" : [ ], - "master-realm" : [ ], - "account" : [ { - "id" : "f97398fd-8608-46eb-ad58-39b92dee69a7", - "name" : "view-groups", - "composite" : false, - "clientRole" : true, - "containerId" : "d50163a2-d59f-4c1d-a1e5-087b5fa3920d", - "attributes" : { } - }, { - "id" : "722736c4-47ce-4a8f-a74a-38b37f172bc3", - "name" : "delete-account", - "description" : "${role_delete-account}", - "composite" : false, - "clientRole" : true, - "containerId" : "d50163a2-d59f-4c1d-a1e5-087b5fa3920d", - "attributes" : { } - }, { - "id" : "9cd94925-88bd-4cd2-af60-797da71aa1e5", - "name" : "manage-account", - "composite" : false, - "clientRole" : true, - "containerId" : "d50163a2-d59f-4c1d-a1e5-087b5fa3920d", - "attributes" : { } - } ] + { + "id": "58f683ad-378d-4f9f-93db-630007bef02a", + "name": "Trusted Hosts", + "providerId": "trusted-hosts", + "subType": "anonymous", + "subComponents": {}, + "config": { + "host-sending-registration-request-must-match": ["true"], + "client-uris-must-match": ["true"] + } + }, + { + "id": "26a3c97d-052b-40b6-8d8f-8950befb1837", + "name": "Allowed Protocol Mapper Types", + "providerId": "allowed-protocol-mappers", + "subType": "anonymous", + "subComponents": {}, + "config": { + "allowed-protocol-mapper-types": [ + "oidc-address-mapper", + "saml-user-property-mapper", + "oidc-sha256-pairwise-sub-mapper", + "oidc-usermodel-property-mapper", + "oidc-full-name-mapper", + "saml-user-attribute-mapper", + "saml-role-list-mapper", + "oidc-usermodel-attribute-mapper" + ] + } + }, + { + "id": "1a2b238f-2b2c-488f-977e-955c62134b1a", + "name": "Allowed Client Scopes", + "providerId": "allowed-client-templates", + "subType": "anonymous", + "subComponents": {}, + "config": { + "allow-default-scopes": ["true"] + } + } + ], + "org.keycloak.userprofile.UserProfileProvider": [ + { + "id": "a49f2d51-c152-468d-a070-28a931fab95c", + "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": "74f24861-5376-4224-bdc0-1d511b60e8df", + "name": "rsa-enc-generated", + "providerId": "rsa-enc-generated", + "subComponents": {}, + "config": { + "privateKey": [ + "MIIEpAIBAAKCAQEAvYkJyhtq3Pi3GjppeBXN8QLvNd6LNM/78d/3XJCZPNizPfCEQk5IDJlxJaqEIsoYZaB0f2Hr3/SBTVvYnSPQhr2hY/FKnk4ptkgieJf6Sc6rUO/2w/zITePexTjIdmbOD9ftS3FxLoiNq/kJ8ZeBpx/Jdpusu20CyrCIVmDS57O0lumXMrwenyu8bF2rx9MNwDlUzFcKENaQDcWnxmD9xPOue+MvtaAqG/BRf1/QRiu5CT1IPh1FjevCmiUOlpe4CUuZ2vRhb6SXKdE+Ha/HvbvjSuloZ9bFOL1LcOPRDY6wlHFiWNJ3Zs+Es0jMJ3dT7+/rAh4Z0pPQLBAhzryFqwIDAQABAoIBAAOzyRQAbBp2kJu7t11dTlaztXjVE4gLu1f9WtIdOvkOzJWG/LZk3BBu8OBeT9LJetIwC7EvTacOxMso4kwo1m/DWtiJGT7gDP2JXtmsh6WTGr1BKrinrUFO6bDq4TOQN4c6CGHDDLBu12xGuD8sCUrP7/oCpCGhyVOslhqF1/4m97IlYjNPLQ5PPTIg9Am1zDOl/psXxgu+zWzUlI89ARGDNsrwCbcd3qFrxKCidoNkXjbaNa/YsMSbOdSNLbthjvpR78qAoGBC0vYwaR/4c+jaAc2E29gahEn0DOKGEKKFqnprj7BRIiiXasEQX+A6Wfs6v/pPdcQlklLFFncZKF0CgYEA7UMx+/CaGZMSc/AVPnbRO6FQ1d/jjZEXI3tflz9cELM2gyqMMEIe9/uxRCu/RKH73t+V07z65iGRVdDWNMZ1iIQpt50hblicJvF83YT2tjxQExnQo7sle9Jm9wApTfIOb4bolrdtSc7hEYYYiTUIgPBA2tuj9dOQt91kLnN1r+cCgYEAzIDtw3Kmurn72kJ168z1CkHuWBx4DtfEQY0IGUu/X68x/jF6VE8ouXvJuWx49FLJtf1xFnBT4HJ0Il+4UFGomKn6Xd7z7635KZfgQ1L7rwYv7GqOlI4XS4FmMYezyAOtYaosOBLzB/yabNCCGKHMRSrulHzYUCK9aPY7/B5Ck50CgYEAlqeKP53BW+flWbTi6Gzt4t1FxOiLR0MP3DnkstdKkFgbjyIfLi1uGKy7HLxikSQCGL0EGBTxg9tgu4sF2TEDRJIXIz4lEjo1vQyt6sMZHRIjDl3f+3dED+HD+6cgkxvWSr7xRXJndOxmQYhSYB1KrwTfSZkZ/Wg/hmCP0mcCHZUCgYEAhuvQ8g/kXHFz7g3HCulQCZJyE4PE2dYUz0Kiwz2sZw6JJzGxiYooTieTcVhVfKxaFE2/nJRDYmNgp4ULb0JQv1f1rJT5z3myV3SyKvjGwDSOzaWHqA8O42vd5nOncyCp9TN2tRAbc3t+zqfKDUJCKKgoe6LafBRPbr512OKF/ikCgYAZrlAVoN3jzwZxdszFzyz5czDtv2MMepNoYvNsSBNo0tfo8qThByTcN6S5u3q5yMuAMPyhajJ/UYtPxKK75bLkjobkxeX9MjSzwCK6s8DNCwqJJlXFjOsNOigTuB9ku0xq9P5D7AGD1rOgaUE72NjBZLS/c2jwX3Xv2mE2qWpViQ==" + ], + "certificate": [ + "MIICpzCCAY8CBgGPFxVXxDANBgkqhkiG9w0BAQsFADAXMRUwEwYDVQQDDAxzcWxwYWdlX2RlbW8wHhcNMjQwNDI1MjEwNTI1WhcNMzQwNDI1MjEwNzA1WjAXMRUwEwYDVQQDDAxzcWxwYWdlX2RlbW8wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9iQnKG2rc+LcaOml4Fc3xAu813os0z/vx3/dckJk82LM98IRCTkgMmXElqoQiyhhloHR/Yevf9IFNW9idI9CGvaFj8UqeTim2SCJ4l/pJzqtQ7/bD/MhN497FOMh2Zs4P1+1LcXEuiI2r+Qnxl4GnH8l2m6y7bQLKsIhWYNLns7SW6ZcyvB6fK7xsXavH0w3AOVTMVwoQ1pANxafGYP3E86574y+1oCob8FF/X9BGK7kJPUg+HUWN68KaJQ6Wl7gJS5na9GFvpJcp0T4dr8e9u+NK6Whn1sU4vUtw49ENjrCUcWJY0ndmz4SzSMwnd1Pv7+sCHhnSk9AsECHOvIWrAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAHVqRlWO/uDsyIztqQjJyYbk3TtA1JaCeCOUhHN+7MD78/KGHQwAMU8dTuU/3YajVwm+0uMbnZ4gpV/mUkZqt9aVsiDk2GJ6P4z4H5Tg8BGSLYCVYEuKU7lSXNePxfrHsYf0jC209KJmGPynPwVYmpqZ92ucC0GGQyFRARyjhpx0pg7yxy3ARbzhYT2uggtzdv9DdkZ6vnm6siPlQb4VjDZB76XueT6b8/qNeDVzjfh1igBTyavY3UES9l2bdpQAjUHc6JZVP2xQEAEioHpYv3opAOo6Egu90ON7DeQupukSQEqizvhS9LbVsGKg0iKiVFFazdNtYvamOG1+d4slhoU=" + ], + "priority": ["100"], + "algorithm": ["RSA-OAEP"] + } + }, + { + "id": "814f5c3e-a455-4b04-a90f-4752382b106e", + "name": "aes-generated", + "providerId": "aes-generated", + "subComponents": {}, + "config": { + "kid": ["17498c29-d8ba-4851-bd66-3b56739fbe42"], + "secret": ["Qo8khARW9YKp0Zdh7rLE1g"], + "priority": ["100"] + } + }, + { + "id": "6685a900-2ea7-49ec-b5b9-bd8717784f0d", + "name": "rsa-generated", + "providerId": "rsa-generated", + "subComponents": {}, + "config": { + "privateKey": [ + "MIIEogIBAAKCAQEAuP4foFrftmCEJmZ740D+Top9ezC7gnFVGmXxMbPFmGb8HAqRab2pTKy5CRv6e9DIGyrkEKfbkLM8Vj1XgWg/+7YEovDc08v7biHyHX1LlorVTcZQ6w7fXYdq63iIACV2B1HqhOgd9kGpkwplJRYSGG1+dg1+YySxghiziS3MIfGuwL7sTTAsOePrLj2Y6/MIUDqlu2bXcGXj8CB7ScWy/gdhOu8fAPLKniGIOhQno7me5tbj4s34VoqBy1t9CuWexEi+NIrPJdeum5EDPJ0x/BCGzlHBoA1Iq7MhmhKeFFARmQ+ubPfHdUfvuyswj4fKD2w37cZT8PtUgd3eMssQXQIDAQABAoIBACfA+IPps2SKViu4X0wlReET8sY74Te1ah/ro0rWgpJvIyNVhA0wpEalYXgbKpdb9PydmXgY0l7EnaU8tmbJQ+KwKUvordPX5Ha01cZPjCRUPmVhxjbVMdv0A16JvtQlOLl2+YpJJVMrpijClZzEIuxb706oNK5SjtDRxRcoH9N1MW+d4KNdJzuyHAfFBhFtydx02Uxjg5ptkwCCNwZGqdMtlp4/VGQGGRQEiZCnuOr9JX0U2o0slcCdc4OnJSs1Sf8QVHuefqM3Kf34WEDJ0jScDKV0EMKjGNBdMLLEXBpI9V9sKKvR72Bx5nP/j8/pFN7WOmSwYhwHiDkLS3Gk8hMCgYEA+mzM8W1MZBwToaHAOwMHvc/8lMDBztbfN6/mJrxlDal8v+f932C4ifvKZNmSCBtwFMJxIAcbcxBcJuX4Dj397Ch6ocXvs7kTOxdzppyWc4oI7uaEhGGcLHVQY27qkx4RLCS0ptipWdHTz/51Uj1dVgRtg3KEmIHInqe/4UZKCb8CgYEAvRxqvs2kwAoVxBM4CFBVFjNNnxgPFtVmHAfbKZTPAej87sfLzQCj4QBS8mK603A4J0fh6eJ08kL4FZovnyVGV9oevFIMvOPXZbU953qktGwCIrK9AxmiqZP4sgI8/plEh0VgMwhUg5uh4Mp/ZP9Ag/MXCkxKal19ppmRuRr+lOMCgYBtRsjvmRg6nx3Z7DFsDthz9axsZOitj4n8TN+Li641Ff5/54Ya0aP1YlBhTaexrfdst6SRq0hJH5x2xOdHn7mMMeXBbhQ5Qsunf4ZR8AafCF75kNHGyqlRpSedHCt0YyxvLN0/6U+NCEj7fDhJ2Mk/3dLEB1bhDdEzmlPaw8dPFQKBgEBgeh42F02goUQ8XqjF4BFMqbHtGMXnI3mLWxpOpCG8VM5ciY5iF2ezGomU/pCX9SW6HLfn9XO7RITmFiwRHl8ty6TEMb3juiHPjyFL6OHamueA/UMe6Pbdfp3qkSUCvAdooJT+0vZydqr1hGS3WBkTGdbRncuTxACA6tCe1eeNAoGABeQZWBOW/EvUx7k3lEYr51xWK+R8Lk3xibvg1oiNKtmj+9A+p9Adt5l8z6Q1vwnV10qPbDIy0ja8wkcX7mqCMDZf7A5yEQtvQFNbbk64iwLSPx2H207vn6lVimiSskAUZ1eVFMTxzIddaqmOxzEng6y6gfBOVK0xksgLNnV+NKw=" + ], + "certificate": [ + "MIICpzCCAY8CBgGPFxVYJTANBgkqhkiG9w0BAQsFADAXMRUwEwYDVQQDDAxzcWxwYWdlX2RlbW8wHhcNMjQwNDI1MjEwNTI1WhcNMzQwNDI1MjEwNzA1WjAXMRUwEwYDVQQDDAxzcWxwYWdlX2RlbW8wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC4/h+gWt+2YIQmZnvjQP5Oin17MLuCcVUaZfExs8WYZvwcCpFpvalMrLkJG/p70MgbKuQQp9uQszxWPVeBaD/7tgSi8NzTy/tuIfIdfUuWitVNxlDrDt9dh2rreIgAJXYHUeqE6B32QamTCmUlFhIYbX52DX5jJLGCGLOJLcwh8a7AvuxNMCw54+suPZjr8whQOqW7ZtdwZePwIHtJxbL+B2E67x8A8sqeIYg6FCejuZ7m1uPizfhWioHLW30K5Z7ESL40is8l166bkQM8nTH8EIbOUcGgDUirsyGaEp4UUBGZD65s98d1R++7KzCPh8oPbDftxlPw+1SB3d4yyxBdAgMBAAEwDQYJKoZIhvcNAQELBQADggEBALKVXfayldWsdDjwtUZOtzu9fTU3YbUekvkuYr0Fvs9348ZiWoPvt6JQ9i7ytqDxok9CvgVL347ZS+lDkMKhBpw7ryVS0bG/Vg7DeNmjmutGuGdiJR2nUF8z6SgDVWXqr4XrcDy6xwfVtAazc8MXau+eQozlZBiLV4bKDD793m9zqPeSIIipDozMrfKm4jYnam33d9pRQFGDgEGHqXiwR96x8tC5zlFjngKlX1IgigYqARSsOMaV4vU2aIhIq3bLpvSIGGSDo9iw6iYhBYn9tpmtsHCU/RFqsWPhglU168+0VQesCQphKCXoOZp3qIGnRUVySNZSZrHynQ/wLzI1Dos=" + ], + "priority": ["100"] + } + }, + { + "id": "2b7d2bdf-aee4-4f31-8bec-97bd01182220", + "name": "hmac-generated-hs512", + "providerId": "hmac-generated", + "subComponents": {}, + "config": { + "kid": ["f908ef09-5b02-4d60-8aa9-906f5be4b4b3"], + "secret": [ + "_PZq7evS8vCHPBBLIRlgHrcXtE46TgjSaao5Yh1LlyjHUyHhxarMYYbenDFELpc7nw3WDWr2U0lS-y0QY7EHySYvf6zx5er1hNwPV78g4kvJUYRKKf9U8OmWlsr2E8bDGKBr547El5HyU11_KWykzvi_dBkqX6LsceQB8guy8t4" + ], + "priority": ["100"], + "algorithm": ["HS512"] + } + } + ] + }, + "internationalizationEnabled": false, + "supportedLocales": [], + "authenticationFlows": [ + { + "id": "68f8d935-47fb-42dc-8e23-94cca509c6b1", + "alias": "Account verification options", + "description": "Method with which to verity the existing account", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "idp-email-verification", + "authenticatorFlow": false, + "requirement": "ALTERNATIVE", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticatorFlow": true, + "requirement": "ALTERNATIVE", + "priority": 20, + "autheticatorFlow": true, + "flowAlias": "Verify Existing Account by Re-authentication", + "userSetupAllowed": false + } + ] + }, + { + "id": "c5c5650b-a462-4b37-9dd9-f1499e369219", + "alias": "Browser - Conditional OTP", + "description": "Flow to determine if the OTP is required for the authentication", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "conditional-user-configured", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "auth-otp-form", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 20, + "autheticatorFlow": false, + "userSetupAllowed": false + } + ] + }, + { + "id": "16124aaf-0384-4d6d-a108-338b5749aa5d", + "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": "3bbf73c5-00f6-4a2a-a2cb-d74f82653fa3", + "alias": "First broker login - Conditional OTP", + "description": "Flow to determine if the OTP is required for the authentication", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "conditional-user-configured", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticator": "auth-otp-form", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 20, + "autheticatorFlow": false, + "userSetupAllowed": false + } + ] + }, + { + "id": "b0e4e594-f55d-46be-86fd-676ec72d979e", + "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": "04618969-a055-4e6f-9e41-27c24b037d30", + "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": "079f9946-bc86-4b50-970f-0fde0eebafb0", + "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": "b4056290-6f49-4343-a803-8029b8cab587", + "alias": "Verify Existing Account by Re-authentication", + "description": "Reauthentication of existing account", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "idp-username-password-form", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticatorFlow": true, + "requirement": "CONDITIONAL", + "priority": 20, + "autheticatorFlow": true, + "flowAlias": "First broker login - Conditional OTP", + "userSetupAllowed": false + } + ] + }, + { + "id": "1b02c9b7-50d4-4001-8648-4674d2b5c83f", + "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": "2c52b4db-2764-4930-ba72-eed08a3568f9", + "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": "d4b0242b-f4a2-4e28-9dc5-5ee8bd64c4a7", + "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": "5c90d095-2a79-40c5-a452-98e0cd9402e6", + "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": "87054128-dec5-47c4-a461-0491ac601ee8", + "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": "197b6d93-54f1-46a1-8bc1-fee099e06978", + "alias": "forms", + "description": "Username, password, otp and other auth forms.", + "providerId": "basic-flow", + "topLevel": false, + "builtIn": true, + "authenticationExecutions": [ + { + "authenticator": "auth-username-password-form", + "authenticatorFlow": false, + "requirement": "REQUIRED", + "priority": 10, + "autheticatorFlow": false, + "userSetupAllowed": false + }, + { + "authenticatorFlow": true, + "requirement": "CONDITIONAL", + "priority": 20, + "autheticatorFlow": true, + "flowAlias": "Browser - Conditional OTP", + "userSetupAllowed": false + } + ] + }, + { + "id": "ca5c0b1a-51cf-4a79-bb61-5b923eed9bf7", + "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": "856a26b0-cf52-4173-94fb-8726c77de2ab", + "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": "ea7cafde-a77b-4fd6-9510-396748960980", + "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": "35a9e22a-3775-4cad-9a8b-d646cd74c8eb", + "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": "4a307cbf-79bc-4125-8eca-4ea98f7cb27b", + "alias": "create unique user config", + "config": { + "require.password.update.after.registration": "false" + } + }, + { + "id": "0a0aaedd-39f6-4dc0-9153-ac6dbd255d3a", + "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": "webauthn-register", + "name": "Webauthn Register", + "providerId": "webauthn-register", + "enabled": true, + "defaultAction": false, + "priority": 70, + "config": {} + }, + { + "alias": "webauthn-register-passwordless", + "name": "Webauthn Register Passwordless", + "providerId": "webauthn-register-passwordless", + "enabled": true, + "defaultAction": false, + "priority": 80, + "config": {} + }, + { + "alias": "VERIFY_PROFILE", + "name": "Verify Profile", + "providerId": "VERIFY_PROFILE", + "enabled": true, + "defaultAction": false, + "priority": 90, + "config": {} + }, + { + "alias": "delete_credential", + "name": "Delete Credential", + "providerId": "delete_credential", + "enabled": true, + "defaultAction": false, + "priority": 100, + "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", + "frontendUrl": "http://localhost:8181", + "acr.loa.map": "{}" + }, + "keycloakVersion": "24.0.3", + "userManagedAccessAllowed": false, + "clientProfiles": { + "profiles": [] + }, + "clientPolicies": { + "policies": [] } - }, - "groups" : [ ], - "defaultRole" : { - "id" : "3473c742-cfa1-4d81-975e-0d74bdf56795", - "name" : "default-roles-master", - "description" : "${role_default-roles}", - "composite" : true, - "clientRole" : false, - "containerId" : "d7757cae-367b-4dfa-87f7-a19a789af2b9" - }, - "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" ], - "webAuthnPolicyRpId" : "", - "webAuthnPolicyAttestationConveyancePreference" : "not specified", - "webAuthnPolicyAuthenticatorAttachment" : "not specified", - "webAuthnPolicyRequireResidentKey" : "not specified", - "webAuthnPolicyUserVerificationRequirement" : "not specified", - "webAuthnPolicyCreateTimeout" : 0, - "webAuthnPolicyAvoidSameAuthenticatorRegister" : false, - "webAuthnPolicyAcceptableAaguids" : [ ], - "webAuthnPolicyExtraOrigins" : [ ], - "webAuthnPolicyPasswordlessRpEntityName" : "keycloak", - "webAuthnPolicyPasswordlessSignatureAlgorithms" : [ "ES256" ], - "webAuthnPolicyPasswordlessRpId" : "", - "webAuthnPolicyPasswordlessAttestationConveyancePreference" : "not specified", - "webAuthnPolicyPasswordlessAuthenticatorAttachment" : "not specified", - "webAuthnPolicyPasswordlessRequireResidentKey" : "not specified", - "webAuthnPolicyPasswordlessUserVerificationRequirement" : "not specified", - "webAuthnPolicyPasswordlessCreateTimeout" : 0, - "webAuthnPolicyPasswordlessAvoidSameAuthenticatorRegister" : false, - "webAuthnPolicyPasswordlessAcceptableAaguids" : [ ], - "webAuthnPolicyPasswordlessExtraOrigins" : [ ], - "users" : [ { - "id" : "0cc0472e-a38b-4f45-8d91-77ecfe5c8b7d", - "username" : "demo", - "firstName" : "John", - "lastName" : "Smith", - "email" : "demo@example.com", - "emailVerified" : false, - "createdTimestamp" : 1714079479552, - "enabled" : true, - "totp" : false, - "credentials" : [ { - "id" : "d453f7cb-5ba5-45ab-a694-38ddffb93503", - "type" : "password", - "userLabel" : "My password", - "createdDate" : 1714079498525, - "secretData" : "{\"value\":\"gxi8oR/w6GPvZjUXJAsxSuxWZCDsxL3hwzjlfymoeYsRLXxJIvJdy5SeRch4BOYwNdfRwrbOenBGScCleyQkfA==\",\"salt\":\"HTsvAP/Cig6pIOVo3SPFnw==\",\"additionalParameters\":{}}", - "credentialData" : "{\"hashIterations\":210000,\"algorithm\":\"pbkdf2-sha512\",\"additionalParameters\":{}}" - } ], - "disableableCredentialTypes" : [ ], - "requiredActions" : [ ], - "realmRoles" : [ "default-roles-master" ], - "notBefore" : 0, - "groups" : [ ] - } ], - "scopeMappings" : [ { - "clientScope" : "offline_access", - "roles" : [ "offline_access" ] - } ], - "clientScopeMappings" : { - "account" : [ { - "client" : "account-console", - "roles" : [ "manage-account", "view-groups" ] - } ] - }, - "clients" : [ { - "id" : "d50163a2-d59f-4c1d-a1e5-087b5fa3920d", - "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" : { - "post.logout.redirect.uris" : "+" - }, - "authenticationFlowBindingOverrides" : { }, - "fullScopeAllowed" : false, - "nodeReRegistrationTimeout" : 0, - "protocolMappers" : [ { - "id" : "89f96859-de46-4778-bd0b-e44256ff8ea2", - "name" : "family name", - "protocol" : "cas", - "protocolMapper" : "cas-usermodel-property-mapper", - "consentRequired" : false, - "config" : { - "user.attribute" : "lastName", - "claim.name" : "sn", - "jsonType.label" : "String" - } - }, { - "id" : "7a8f7d8b-93dc-4f5c-a8cf-2caa9802ae35", - "name" : "email", - "protocol" : "cas", - "protocolMapper" : "cas-usermodel-property-mapper", - "consentRequired" : false, - "config" : { - "user.attribute" : "email", - "claim.name" : "mail", - "jsonType.label" : "String" - } - }, { - "id" : "853110df-77fe-49b2-b8be-000ae4922b88", - "name" : "full name", - "protocol" : "cas", - "protocolMapper" : "cas-full-name-mapper", - "consentRequired" : false, - "config" : { - "claim.name" : "cn", - "jsonType.label" : "String" - } - }, { - "id" : "12e0887d-af61-4066-9d29-a54f2523606d", - "name" : "given name", - "protocol" : "cas", - "protocolMapper" : "cas-usermodel-property-mapper", - "consentRequired" : false, - "config" : { - "user.attribute" : "firstName", - "claim.name" : "givenName", - "jsonType.label" : "String" - } - } ], - "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "email" ], - "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] - }, { - "id" : "ff46bc2b-4c0b-49b3-9bca-0938b05a9581", - "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" : { - "post.logout.redirect.uris" : "+", - "pkce.code.challenge.method" : "S256" - }, - "authenticationFlowBindingOverrides" : { }, - "fullScopeAllowed" : false, - "nodeReRegistrationTimeout" : 0, - "protocolMappers" : [ { - "id" : "46a75d57-9af5-4466-8e0c-deb66d6d58e8", - "name" : "audience resolve", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-audience-resolve-mapper", - "consentRequired" : false, - "config" : { } - } ], - "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "email" ], - "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] - }, { - "id" : "12f13df0-1a10-4792-b62a-c67b3d0f9bb0", - "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" : { - "post.logout.redirect.uris" : "+" - }, - "authenticationFlowBindingOverrides" : { }, - "fullScopeAllowed" : false, - "nodeReRegistrationTimeout" : 0, - "protocolMappers" : [ { - "id" : "0c800a73-f8f1-40ea-b91e-a6bc6e9c6b37", - "name" : "email", - "protocol" : "cas", - "protocolMapper" : "cas-usermodel-property-mapper", - "consentRequired" : false, - "config" : { - "user.attribute" : "email", - "claim.name" : "mail", - "jsonType.label" : "String" - } - }, { - "id" : "8e502dad-3945-4e58-bb7f-bdd4d2d0416d", - "name" : "family name", - "protocol" : "cas", - "protocolMapper" : "cas-usermodel-property-mapper", - "consentRequired" : false, - "config" : { - "user.attribute" : "lastName", - "claim.name" : "sn", - "jsonType.label" : "String" - } - }, { - "id" : "18c6e46a-c5cc-45ba-9ac6-cddc2c59fd1a", - "name" : "full name", - "protocol" : "cas", - "protocolMapper" : "cas-full-name-mapper", - "consentRequired" : false, - "config" : { - "claim.name" : "cn", - "jsonType.label" : "String" - } - }, { - "id" : "b9171c27-55f9-4f99-9086-c1828ae0f884", - "name" : "given name", - "protocol" : "cas", - "protocolMapper" : "cas-usermodel-property-mapper", - "consentRequired" : false, - "config" : { - "user.attribute" : "firstName", - "claim.name" : "givenName", - "jsonType.label" : "String" - } - } ], - "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "email" ], - "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] - }, { - "id" : "1b5f331e-aaa5-4225-888d-b212d60211fb", - "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" : { - "post.logout.redirect.uris" : "+" - }, - "authenticationFlowBindingOverrides" : { }, - "fullScopeAllowed" : false, - "nodeReRegistrationTimeout" : 0, - "protocolMappers" : [ { - "id" : "5342db5b-d1ba-4218-8900-3d5e2e0a8ccb", - "name" : "given name", - "protocol" : "cas", - "protocolMapper" : "cas-usermodel-property-mapper", - "consentRequired" : false, - "config" : { - "user.attribute" : "firstName", - "claim.name" : "givenName", - "jsonType.label" : "String" - } - }, { - "id" : "4bc5fc15-8488-4ef0-a0c0-4a28e0803fb4", - "name" : "family name", - "protocol" : "cas", - "protocolMapper" : "cas-usermodel-property-mapper", - "consentRequired" : false, - "config" : { - "user.attribute" : "lastName", - "claim.name" : "sn", - "jsonType.label" : "String" - } - }, { - "id" : "bae6a63f-981f-429a-b4d4-1687a9dc5386", - "name" : "full name", - "protocol" : "cas", - "protocolMapper" : "cas-full-name-mapper", - "consentRequired" : false, - "config" : { - "claim.name" : "cn", - "jsonType.label" : "String" - } - }, { - "id" : "31c1c637-07a5-4884-892d-bd904f7ff1fb", - "name" : "email", - "protocol" : "cas", - "protocolMapper" : "cas-usermodel-property-mapper", - "consentRequired" : false, - "config" : { - "user.attribute" : "email", - "claim.name" : "mail", - "jsonType.label" : "String" - } - } ], - "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "email" ], - "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] - }, { - "id" : "a3bb7f5a-8746-4d66-a6d3-60c355489276", - "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" : { - "post.logout.redirect.uris" : "+" - }, - "authenticationFlowBindingOverrides" : { }, - "fullScopeAllowed" : false, - "nodeReRegistrationTimeout" : 0, - "protocolMappers" : [ { - "id" : "6e805d7f-9d7f-4f26-91e7-c58ea91df054", - "name" : "full name", - "protocol" : "cas", - "protocolMapper" : "cas-full-name-mapper", - "consentRequired" : false, - "config" : { - "claim.name" : "cn", - "jsonType.label" : "String" - } - }, { - "id" : "ccd6d83f-2da8-40dd-b94d-77ded30dc831", - "name" : "email", - "protocol" : "cas", - "protocolMapper" : "cas-usermodel-property-mapper", - "consentRequired" : false, - "config" : { - "user.attribute" : "email", - "claim.name" : "mail", - "jsonType.label" : "String" - } - }, { - "id" : "119d7e06-8651-42b6-af42-4ea02bfb49e0", - "name" : "given name", - "protocol" : "cas", - "protocolMapper" : "cas-usermodel-property-mapper", - "consentRequired" : false, - "config" : { - "user.attribute" : "firstName", - "claim.name" : "givenName", - "jsonType.label" : "String" - } - }, { - "id" : "7dd81fc3-b99a-4f3a-8a5a-ab072e8bf935", - "name" : "family name", - "protocol" : "cas", - "protocolMapper" : "cas-usermodel-property-mapper", - "consentRequired" : false, - "config" : { - "user.attribute" : "lastName", - "claim.name" : "sn", - "jsonType.label" : "String" - } - } ], - "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "email" ], - "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] - }, { - "id" : "5cfd9edd-a0a5-4ead-ac29-0a4b1ffa17db", - "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" : { - "post.logout.redirect.uris" : "+" - }, - "authenticationFlowBindingOverrides" : { }, - "fullScopeAllowed" : false, - "nodeReRegistrationTimeout" : 0, - "protocolMappers" : [ { - "id" : "d97602ca-263b-4115-88d8-fa1470e231db", - "name" : "family name", - "protocol" : "cas", - "protocolMapper" : "cas-usermodel-property-mapper", - "consentRequired" : false, - "config" : { - "user.attribute" : "lastName", - "claim.name" : "sn", - "jsonType.label" : "String" - } - }, { - "id" : "1d5c2948-1c22-4444-9de2-ec9d5fab24a2", - "name" : "given name", - "protocol" : "cas", - "protocolMapper" : "cas-usermodel-property-mapper", - "consentRequired" : false, - "config" : { - "user.attribute" : "firstName", - "claim.name" : "givenName", - "jsonType.label" : "String" - } - }, { - "id" : "64760efc-d03f-4f2f-8cae-63684200eace", - "name" : "full name", - "protocol" : "cas", - "protocolMapper" : "cas-full-name-mapper", - "consentRequired" : false, - "config" : { - "claim.name" : "cn", - "jsonType.label" : "String" - } - }, { - "id" : "52dd9974-2d5c-47ef-8229-d1c97e59d4f0", - "name" : "email", - "protocol" : "cas", - "protocolMapper" : "cas-usermodel-property-mapper", - "consentRequired" : false, - "config" : { - "user.attribute" : "email", - "claim.name" : "mail", - "jsonType.label" : "String" - } - } ], - "defaultClientScopes" : [ ], - "optionalClientScopes" : [ ] - }, { - "id" : "12a6effc-cf82-4dff-9bdc-d7610b86d89c", - "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" : { - "post.logout.redirect.uris" : "+", - "pkce.code.challenge.method" : "S256" - }, - "authenticationFlowBindingOverrides" : { }, - "fullScopeAllowed" : false, - "nodeReRegistrationTimeout" : 0, - "protocolMappers" : [ { - "id" : "baecafba-25d9-473e-a7af-72d18a84fd83", - "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", "email" ], - "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] - }, { - "id" : "a2bec2b8-f850-405e-9f26-59063ffa6f08", - "clientId" : "sqlpage", - "name" : "SQLPage Example App", - "description" : "", - "rootUrl" : "http://localhost:8080/", - "adminUrl" : "http://localhost:8080/", - "baseUrl" : "", - "surrogateAuthRequired" : false, - "enabled" : true, - "alwaysDisplayInConsole" : true, - "clientAuthenticatorType" : "client-secret", - "secret" : "qiawfnYrYzsmoaOZT28rRjPPRamfvrYr", - "redirectUris" : [ "http://localhost:8080/oidc_redirect_handler.sql" ], - "webOrigins" : [ "http://localhost:8080" ], - "notBefore" : 0, - "bearerOnly" : false, - "consentRequired" : false, - "standardFlowEnabled" : true, - "implicitFlowEnabled" : false, - "directAccessGrantsEnabled" : true, - "serviceAccountsEnabled" : false, - "publicClient" : false, - "frontchannelLogout" : true, - "protocol" : "openid-connect", - "attributes" : { - "client.secret.creation.time" : "1714080951", - "post.logout.redirect.uris" : "+##http://localhost:8080/", - "oauth2.device.authorization.grant.enabled" : "false", - "backchannel.logout.revoke.offline.tokens" : "false", - "use.refresh.tokens" : "true", - "oidc.ciba.grant.enabled" : "false", - "client.use.lightweight.access.token.enabled" : "false", - "backchannel.logout.session.required" : "true", - "client_credentials.use_refresh_token" : "false", - "tls.client.certificate.bound.access.tokens" : "false", - "require.pushed.authorization.requests" : "false", - "acr.loa.map" : "{}", - "display.on.consent.screen" : "false", - "token.response.type.bearer.lower-case" : "false" - }, - "authenticationFlowBindingOverrides" : { }, - "fullScopeAllowed" : true, - "nodeReRegistrationTimeout" : -1, - "protocolMappers" : [ { - "id" : "62a6fb7a-c7e5-44c3-b878-5bbfa932dc3c", - "name" : "email", - "protocol" : "cas", - "protocolMapper" : "cas-usermodel-property-mapper", - "consentRequired" : false, - "config" : { - "user.attribute" : "email", - "claim.name" : "mail", - "jsonType.label" : "String" - } - }, { - "id" : "9b15bf7e-28c9-46dd-8e38-0d69f8cab137", - "name" : "given name", - "protocol" : "cas", - "protocolMapper" : "cas-usermodel-property-mapper", - "consentRequired" : false, - "config" : { - "user.attribute" : "firstName", - "claim.name" : "givenName", - "jsonType.label" : "String" - } - }, { - "id" : "15150602-9a7d-4850-8f69-17b3553174c4", - "name" : "family name", - "protocol" : "cas", - "protocolMapper" : "cas-usermodel-property-mapper", - "consentRequired" : false, - "config" : { - "user.attribute" : "lastName", - "claim.name" : "sn", - "jsonType.label" : "String" - } - }, { - "id" : "05e051d1-3954-43c4-a4ea-73b5879dac17", - "name" : "full name", - "protocol" : "cas", - "protocolMapper" : "cas-full-name-mapper", - "consentRequired" : false, - "config" : { - "claim.name" : "cn", - "jsonType.label" : "String" - } - } ], - "defaultClientScopes" : [ "web-origins", "acr", "profile", "roles", "email" ], - "optionalClientScopes" : [ "address", "phone", "offline_access", "microprofile-jwt" ] - }, { - "id" : "4b0aaf08-2b73-4d18-8030-83a20b560e62", - "clientId" : "sqlpage_cas_demo", - "name" : "SQLPage CAS demo", - "description" : "This is using keycloak, but hopefully this is compatible with Apero CAS.", - "rootUrl" : "http://localhost:8080/", - "adminUrl" : "http://localhost:8080/", - "baseUrl" : "http://localhost:8080/", - "surrogateAuthRequired" : false, - "enabled" : true, - "alwaysDisplayInConsole" : false, - "clientAuthenticatorType" : "client-secret", - "redirectUris" : [ "http://localhost:8080/cas/redirect_handler.sql" ], - "webOrigins" : [ "+" ], - "notBefore" : 0, - "bearerOnly" : false, - "consentRequired" : false, - "standardFlowEnabled" : true, - "implicitFlowEnabled" : false, - "directAccessGrantsEnabled" : true, - "serviceAccountsEnabled" : false, - "publicClient" : true, - "frontchannelLogout" : true, - "protocol" : "cas", - "attributes" : { - "post.logout.redirect.uris" : "http://localhost:8080/cas/redirect_handler.sql" - }, - "authenticationFlowBindingOverrides" : { }, - "fullScopeAllowed" : true, - "nodeReRegistrationTimeout" : -1, - "protocolMappers" : [ { - "id" : "afe008e7-a775-45ca-9b88-7d921a816aad", - "name" : "family name", - "protocol" : "cas", - "protocolMapper" : "cas-usermodel-property-mapper", - "consentRequired" : false, - "config" : { - "user.attribute" : "lastName", - "claim.name" : "sn", - "jsonType.label" : "String" - } - }, { - "id" : "e54f5acb-5ed1-4640-99ed-03fc3f92c520", - "name" : "given name", - "protocol" : "cas", - "protocolMapper" : "cas-usermodel-property-mapper", - "consentRequired" : false, - "config" : { - "user.attribute" : "firstName", - "claim.name" : "givenName", - "jsonType.label" : "String" - } - }, { - "id" : "af22294a-2ba1-4085-aee7-ccebab888ec4", - "name" : "full name", - "protocol" : "cas", - "protocolMapper" : "cas-full-name-mapper", - "consentRequired" : false, - "config" : { - "claim.name" : "cn", - "jsonType.label" : "String" - } - }, { - "id" : "569ec0d9-c656-4492-b3a2-0a8d1a4df029", - "name" : "email", - "protocol" : "cas", - "protocolMapper" : "cas-usermodel-property-mapper", - "consentRequired" : false, - "config" : { - "user.attribute" : "email", - "claim.name" : "mail", - "jsonType.label" : "String" - } - } ], - "defaultClientScopes" : [ ], - "optionalClientScopes" : [ ] - } ], - "clientScopes" : [ { - "id" : "c14c09ff-087e-4272-9cc4-b2a997f64a55", - "name" : "address", - "description" : "OpenID Connect built-in scope: address", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "true", - "display.on.consent.screen" : "true", - "consent.screen.text" : "${addressScopeConsentText}" - }, - "protocolMappers" : [ { - "id" : "60c43d69-2518-4424-a5b8-5cdc33e2ac17", - "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" : "03ea4147-a506-45a9-84ae-e1efe2708eea", - "name" : "email", - "description" : "OpenID Connect built-in scope: email", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "true", - "display.on.consent.screen" : "true", - "consent.screen.text" : "${emailScopeConsentText}" - }, - "protocolMappers" : [ { - "id" : "04d4097a-16b3-4155-9ff3-672d04079e16", - "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" : "f3bdae59-35e2-46b8-9625-a53a066993b2", - "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" : "7bbedae3-a3b5-4d76-b457-b00010254408", - "name" : "profile", - "description" : "OpenID Connect built-in scope: profile", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "true", - "display.on.consent.screen" : "true", - "consent.screen.text" : "${profileScopeConsentText}" - }, - "protocolMappers" : [ { - "id" : "7c97d390-3a24-4013-85a7-674427d49ab8", - "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" : "b740d3b8-38c7-460e-94aa-6525aec2e00b", - "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" : "df3c39d5-cd3f-4d38-899c-d0899d82dcbb", - "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" : "9dbeb8fe-333d-4311-a389-42075ff057b4", - "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" : "19e29316-24dd-4e4a-aa85-e767cd867a79", - "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" : "2bfa792d-ea47-4d43-b456-11cde3c937f2", - "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" : "c4aa41a4-bef1-401b-abe8-3d48f101020d", - "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" : "c9617211-8247-4b5e-9b71-58e61bdaab21", - "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" : "b7ae04f4-415e-4e0e-b7b6-1af6841d22bb", - "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" : "51a166d3-ba9a-4ba6-b1a1-d259563aa49a", - "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" : "e3c90b13-0db0-40f7-b640-487f18b01214", - "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" : "cd5cfea9-9151-486c-9ec1-e9d503543201", - "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" : "bfc74493-3b09-4dac-b7be-41cc6d2e209e", - "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" : "8dfd3646-a624-43ee-85de-82aa171f3ad7", - "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" : "990085f5-6624-43e0-bd8e-ee19427c9900", - "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" : "824634cf-dfc0-4fc9-b47b-3803a5868e6f", - "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" : "5b5a7a38-9746-4593-b94d-4dbcb79a57d8", - "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" : "34321bc7-3fee-4999-b718-19d907b221a4", - "name" : "role_list", - "description" : "SAML role list", - "protocol" : "saml", - "attributes" : { - "consent.screen.text" : "${samlRoleListScopeConsentText}", - "display.on.consent.screen" : "true" - }, - "protocolMappers" : [ { - "id" : "2a7bc0fb-adce-4b3d-b423-7035f31fb5a9", - "name" : "role list", - "protocol" : "saml", - "protocolMapper" : "saml-role-list-mapper", - "consentRequired" : false, - "config" : { - "single" : "false", - "attribute.nameformat" : "Basic", - "attribute.name" : "Role" - } - } ] - }, { - "id" : "bd166300-5b05-4726-b0eb-68c29e35f1af", - "name" : "phone", - "description" : "OpenID Connect built-in scope: phone", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "true", - "display.on.consent.screen" : "true", - "consent.screen.text" : "${phoneScopeConsentText}" - }, - "protocolMappers" : [ { - "id" : "ef839796-9f9a-47c0-9685-c9edcf6754a5", - "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" : "f74a2e81-da33-4e8d-943a-d5e665adf499", - "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" : "d5196e6b-5bb9-4eb0-92b3-2f8d129d5802", - "name" : "web-origins", - "description" : "OpenID Connect scope for add allowed web origins to the access token", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "false", - "display.on.consent.screen" : "false", - "consent.screen.text" : "" - }, - "protocolMappers" : [ { - "id" : "cdf64576-9f80-482a-bcff-6c547309d9bd", - "name" : "allowed web origins", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-allowed-origins-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "access.token.claim" : "true" - } - } ] - }, { - "id" : "6c3ffd12-fa43-4cb8-a118-c4643b98df70", - "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" : "c2045a80-7b4d-4e06-acb9-7299ba16134c", - "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" : "ad467869-6344-40b2-af7a-70687d76e6fd", - "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" : "7c7710a3-e3a7-4c70-a246-04a14c9733bb", - "name" : "roles", - "description" : "OpenID Connect scope for add user roles to the access token", - "protocol" : "openid-connect", - "attributes" : { - "include.in.token.scope" : "false", - "display.on.consent.screen" : "true", - "consent.screen.text" : "${rolesScopeConsentText}" - }, - "protocolMappers" : [ { - "id" : "780cb5bb-a37d-4f87-a7d5-a0942a2c1589", - "name" : "realm roles", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-realm-role-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "multivalued" : "true", - "user.attribute" : "foo", - "access.token.claim" : "true", - "claim.name" : "realm_access.roles", - "jsonType.label" : "String" - } - }, { - "id" : "3f65310d-21f0-4973-8c67-457a0d851ba3", - "name" : "client roles", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-usermodel-client-role-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "multivalued" : "true", - "user.attribute" : "foo", - "access.token.claim" : "true", - "claim.name" : "resource_access.${client_id}.roles", - "jsonType.label" : "String" - } - }, { - "id" : "1a6720eb-c33d-4c39-9d42-051aa1cf7d85", - "name" : "audience resolve", - "protocol" : "openid-connect", - "protocolMapper" : "oidc-audience-resolve-mapper", - "consentRequired" : false, - "config" : { - "introspection.token.claim" : "true", - "access.token.claim" : "true" - } - } ] - } ], - "defaultDefaultClientScopes" : [ "role_list", "profile", "email", "roles", "web-origins", "acr" ], - "defaultOptionalClientScopes" : [ "offline_access", "address", "phone", "microprofile-jwt" ], - "browserSecurityHeaders" : { - "contentSecurityPolicyReportOnly" : "", - "xContentTypeOptions" : "nosniff", - "referrerPolicy" : "no-referrer", - "xRobotsTag" : "none", - "xFrameOptions" : "SAMEORIGIN", - "contentSecurityPolicy" : "frame-src 'self'; frame-ancestors 'self'; object-src 'none';", - "xXSSProtection" : "1; mode=block", - "strictTransportSecurity" : "max-age=31536000; includeSubDomains" - }, - "smtpServer" : { }, - "loginTheme" : "keycloak", - "accountTheme" : "", - "adminTheme" : "", - "emailTheme" : "", - "eventsEnabled" : false, - "eventsListeners" : [ "jboss-logging" ], - "enabledEventTypes" : [ ], - "adminEventsEnabled" : false, - "adminEventsDetailsEnabled" : false, - "identityProviders" : [ ], - "identityProviderMappers" : [ ], - "components" : { - "org.keycloak.services.clientregistration.policy.ClientRegistrationPolicy" : [ { - "id" : "e89fe502-91fd-4f04-bdcc-4b14e817e4dc", - "name" : "Full Scope Disabled", - "providerId" : "scope", - "subType" : "anonymous", - "subComponents" : { }, - "config" : { } - }, { - "id" : "1414070f-5cd6-4446-b53a-dcd9c28c26a5", - "name" : "Allowed Client Scopes", - "providerId" : "allowed-client-templates", - "subType" : "authenticated", - "subComponents" : { }, - "config" : { - "allow-default-scopes" : [ "true" ] - } - }, { - "id" : "1e6d1ac0-d10b-4eaf-8b87-39ccf6a755d2", - "name" : "Allowed Protocol Mapper Types", - "providerId" : "allowed-protocol-mappers", - "subType" : "authenticated", - "subComponents" : { }, - "config" : { - "allowed-protocol-mapper-types" : [ "oidc-sha256-pairwise-sub-mapper", "saml-user-property-mapper", "saml-user-attribute-mapper", "oidc-usermodel-property-mapper", "oidc-usermodel-attribute-mapper", "saml-role-list-mapper", "oidc-address-mapper", "oidc-full-name-mapper" ] - } - }, { - "id" : "b34cb2f6-806e-49c3-822a-614b4465faf7", - "name" : "Consent Required", - "providerId" : "consent-required", - "subType" : "anonymous", - "subComponents" : { }, - "config" : { } - }, { - "id" : "81af21c3-da8a-4f70-9b33-43d0150f0bbb", - "name" : "Max Clients Limit", - "providerId" : "max-clients", - "subType" : "anonymous", - "subComponents" : { }, - "config" : { - "max-clients" : [ "200" ] - } - }, { - "id" : "58f683ad-378d-4f9f-93db-630007bef02a", - "name" : "Trusted Hosts", - "providerId" : "trusted-hosts", - "subType" : "anonymous", - "subComponents" : { }, - "config" : { - "host-sending-registration-request-must-match" : [ "true" ], - "client-uris-must-match" : [ "true" ] - } - }, { - "id" : "26a3c97d-052b-40b6-8d8f-8950befb1837", - "name" : "Allowed Protocol Mapper Types", - "providerId" : "allowed-protocol-mappers", - "subType" : "anonymous", - "subComponents" : { }, - "config" : { - "allowed-protocol-mapper-types" : [ "oidc-address-mapper", "saml-user-property-mapper", "oidc-sha256-pairwise-sub-mapper", "oidc-usermodel-property-mapper", "oidc-full-name-mapper", "saml-user-attribute-mapper", "saml-role-list-mapper", "oidc-usermodel-attribute-mapper" ] - } - }, { - "id" : "1a2b238f-2b2c-488f-977e-955c62134b1a", - "name" : "Allowed Client Scopes", - "providerId" : "allowed-client-templates", - "subType" : "anonymous", - "subComponents" : { }, - "config" : { - "allow-default-scopes" : [ "true" ] - } - } ], - "org.keycloak.userprofile.UserProfileProvider" : [ { - "id" : "a49f2d51-c152-468d-a070-28a931fab95c", - "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" : "74f24861-5376-4224-bdc0-1d511b60e8df", - "name" : "rsa-enc-generated", - "providerId" : "rsa-enc-generated", - "subComponents" : { }, - "config" : { - "privateKey" : [ "MIIEpAIBAAKCAQEAvYkJyhtq3Pi3GjppeBXN8QLvNd6LNM/78d/3XJCZPNizPfCEQk5IDJlxJaqEIsoYZaB0f2Hr3/SBTVvYnSPQhr2hY/FKnk4ptkgieJf6Sc6rUO/2w/zITePexTjIdmbOD9ftS3FxLoiNq/kJ8ZeBpx/Jdpusu20CyrCIVmDS57O0lumXMrwenyu8bF2rx9MNwDlUzFcKENaQDcWnxmD9xPOue+MvtaAqG/BRf1/QRiu5CT1IPh1FjevCmiUOlpe4CUuZ2vRhb6SXKdE+Ha/HvbvjSuloZ9bFOL1LcOPRDY6wlHFiWNJ3Zs+Es0jMJ3dT7+/rAh4Z0pPQLBAhzryFqwIDAQABAoIBAAOzyRQAbBp2kJu7t11dTlaztXjVE4gLu1f9WtIdOvkOzJWG/LZk3BBu8OBeT9LJetIwC7EvTacOxMso4kwo1m/DWtiJGT7gDP2JXtmsh6WTGr1BKrinrUFO6bDq4TOQN4c6CGHDDLBu12xGuD8sCUrP7/oCpCGhyVOslhqF1/4m97IlYjNPLQ5PPTIg9Am1zDOl/psXxgu+zWzUlI89ARGDNsrwCbcd3qFrxKCidoNkXjbaNa/YsMSbOdSNLbthjvpR78qAoGBC0vYwaR/4c+jaAc2E29gahEn0DOKGEKKFqnprj7BRIiiXasEQX+A6Wfs6v/pPdcQlklLFFncZKF0CgYEA7UMx+/CaGZMSc/AVPnbRO6FQ1d/jjZEXI3tflz9cELM2gyqMMEIe9/uxRCu/RKH73t+V07z65iGRVdDWNMZ1iIQpt50hblicJvF83YT2tjxQExnQo7sle9Jm9wApTfIOb4bolrdtSc7hEYYYiTUIgPBA2tuj9dOQt91kLnN1r+cCgYEAzIDtw3Kmurn72kJ168z1CkHuWBx4DtfEQY0IGUu/X68x/jF6VE8ouXvJuWx49FLJtf1xFnBT4HJ0Il+4UFGomKn6Xd7z7635KZfgQ1L7rwYv7GqOlI4XS4FmMYezyAOtYaosOBLzB/yabNCCGKHMRSrulHzYUCK9aPY7/B5Ck50CgYEAlqeKP53BW+flWbTi6Gzt4t1FxOiLR0MP3DnkstdKkFgbjyIfLi1uGKy7HLxikSQCGL0EGBTxg9tgu4sF2TEDRJIXIz4lEjo1vQyt6sMZHRIjDl3f+3dED+HD+6cgkxvWSr7xRXJndOxmQYhSYB1KrwTfSZkZ/Wg/hmCP0mcCHZUCgYEAhuvQ8g/kXHFz7g3HCulQCZJyE4PE2dYUz0Kiwz2sZw6JJzGxiYooTieTcVhVfKxaFE2/nJRDYmNgp4ULb0JQv1f1rJT5z3myV3SyKvjGwDSOzaWHqA8O42vd5nOncyCp9TN2tRAbc3t+zqfKDUJCKKgoe6LafBRPbr512OKF/ikCgYAZrlAVoN3jzwZxdszFzyz5czDtv2MMepNoYvNsSBNo0tfo8qThByTcN6S5u3q5yMuAMPyhajJ/UYtPxKK75bLkjobkxeX9MjSzwCK6s8DNCwqJJlXFjOsNOigTuB9ku0xq9P5D7AGD1rOgaUE72NjBZLS/c2jwX3Xv2mE2qWpViQ==" ], - "certificate" : [ "MIICpzCCAY8CBgGPFxVXxDANBgkqhkiG9w0BAQsFADAXMRUwEwYDVQQDDAxzcWxwYWdlX2RlbW8wHhcNMjQwNDI1MjEwNTI1WhcNMzQwNDI1MjEwNzA1WjAXMRUwEwYDVQQDDAxzcWxwYWdlX2RlbW8wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9iQnKG2rc+LcaOml4Fc3xAu813os0z/vx3/dckJk82LM98IRCTkgMmXElqoQiyhhloHR/Yevf9IFNW9idI9CGvaFj8UqeTim2SCJ4l/pJzqtQ7/bD/MhN497FOMh2Zs4P1+1LcXEuiI2r+Qnxl4GnH8l2m6y7bQLKsIhWYNLns7SW6ZcyvB6fK7xsXavH0w3AOVTMVwoQ1pANxafGYP3E86574y+1oCob8FF/X9BGK7kJPUg+HUWN68KaJQ6Wl7gJS5na9GFvpJcp0T4dr8e9u+NK6Whn1sU4vUtw49ENjrCUcWJY0ndmz4SzSMwnd1Pv7+sCHhnSk9AsECHOvIWrAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAHVqRlWO/uDsyIztqQjJyYbk3TtA1JaCeCOUhHN+7MD78/KGHQwAMU8dTuU/3YajVwm+0uMbnZ4gpV/mUkZqt9aVsiDk2GJ6P4z4H5Tg8BGSLYCVYEuKU7lSXNePxfrHsYf0jC209KJmGPynPwVYmpqZ92ucC0GGQyFRARyjhpx0pg7yxy3ARbzhYT2uggtzdv9DdkZ6vnm6siPlQb4VjDZB76XueT6b8/qNeDVzjfh1igBTyavY3UES9l2bdpQAjUHc6JZVP2xQEAEioHpYv3opAOo6Egu90ON7DeQupukSQEqizvhS9LbVsGKg0iKiVFFazdNtYvamOG1+d4slhoU=" ], - "priority" : [ "100" ], - "algorithm" : [ "RSA-OAEP" ] - } - }, { - "id" : "814f5c3e-a455-4b04-a90f-4752382b106e", - "name" : "aes-generated", - "providerId" : "aes-generated", - "subComponents" : { }, - "config" : { - "kid" : [ "17498c29-d8ba-4851-bd66-3b56739fbe42" ], - "secret" : [ "Qo8khARW9YKp0Zdh7rLE1g" ], - "priority" : [ "100" ] - } - }, { - "id" : "6685a900-2ea7-49ec-b5b9-bd8717784f0d", - "name" : "rsa-generated", - "providerId" : "rsa-generated", - "subComponents" : { }, - "config" : { - "privateKey" : [ "MIIEogIBAAKCAQEAuP4foFrftmCEJmZ740D+Top9ezC7gnFVGmXxMbPFmGb8HAqRab2pTKy5CRv6e9DIGyrkEKfbkLM8Vj1XgWg/+7YEovDc08v7biHyHX1LlorVTcZQ6w7fXYdq63iIACV2B1HqhOgd9kGpkwplJRYSGG1+dg1+YySxghiziS3MIfGuwL7sTTAsOePrLj2Y6/MIUDqlu2bXcGXj8CB7ScWy/gdhOu8fAPLKniGIOhQno7me5tbj4s34VoqBy1t9CuWexEi+NIrPJdeum5EDPJ0x/BCGzlHBoA1Iq7MhmhKeFFARmQ+ubPfHdUfvuyswj4fKD2w37cZT8PtUgd3eMssQXQIDAQABAoIBACfA+IPps2SKViu4X0wlReET8sY74Te1ah/ro0rWgpJvIyNVhA0wpEalYXgbKpdb9PydmXgY0l7EnaU8tmbJQ+KwKUvordPX5Ha01cZPjCRUPmVhxjbVMdv0A16JvtQlOLl2+YpJJVMrpijClZzEIuxb706oNK5SjtDRxRcoH9N1MW+d4KNdJzuyHAfFBhFtydx02Uxjg5ptkwCCNwZGqdMtlp4/VGQGGRQEiZCnuOr9JX0U2o0slcCdc4OnJSs1Sf8QVHuefqM3Kf34WEDJ0jScDKV0EMKjGNBdMLLEXBpI9V9sKKvR72Bx5nP/j8/pFN7WOmSwYhwHiDkLS3Gk8hMCgYEA+mzM8W1MZBwToaHAOwMHvc/8lMDBztbfN6/mJrxlDal8v+f932C4ifvKZNmSCBtwFMJxIAcbcxBcJuX4Dj397Ch6ocXvs7kTOxdzppyWc4oI7uaEhGGcLHVQY27qkx4RLCS0ptipWdHTz/51Uj1dVgRtg3KEmIHInqe/4UZKCb8CgYEAvRxqvs2kwAoVxBM4CFBVFjNNnxgPFtVmHAfbKZTPAej87sfLzQCj4QBS8mK603A4J0fh6eJ08kL4FZovnyVGV9oevFIMvOPXZbU953qktGwCIrK9AxmiqZP4sgI8/plEh0VgMwhUg5uh4Mp/ZP9Ag/MXCkxKal19ppmRuRr+lOMCgYBtRsjvmRg6nx3Z7DFsDthz9axsZOitj4n8TN+Li641Ff5/54Ya0aP1YlBhTaexrfdst6SRq0hJH5x2xOdHn7mMMeXBbhQ5Qsunf4ZR8AafCF75kNHGyqlRpSedHCt0YyxvLN0/6U+NCEj7fDhJ2Mk/3dLEB1bhDdEzmlPaw8dPFQKBgEBgeh42F02goUQ8XqjF4BFMqbHtGMXnI3mLWxpOpCG8VM5ciY5iF2ezGomU/pCX9SW6HLfn9XO7RITmFiwRHl8ty6TEMb3juiHPjyFL6OHamueA/UMe6Pbdfp3qkSUCvAdooJT+0vZydqr1hGS3WBkTGdbRncuTxACA6tCe1eeNAoGABeQZWBOW/EvUx7k3lEYr51xWK+R8Lk3xibvg1oiNKtmj+9A+p9Adt5l8z6Q1vwnV10qPbDIy0ja8wkcX7mqCMDZf7A5yEQtvQFNbbk64iwLSPx2H207vn6lVimiSskAUZ1eVFMTxzIddaqmOxzEng6y6gfBOVK0xksgLNnV+NKw=" ], - "certificate" : [ "MIICpzCCAY8CBgGPFxVYJTANBgkqhkiG9w0BAQsFADAXMRUwEwYDVQQDDAxzcWxwYWdlX2RlbW8wHhcNMjQwNDI1MjEwNTI1WhcNMzQwNDI1MjEwNzA1WjAXMRUwEwYDVQQDDAxzcWxwYWdlX2RlbW8wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC4/h+gWt+2YIQmZnvjQP5Oin17MLuCcVUaZfExs8WYZvwcCpFpvalMrLkJG/p70MgbKuQQp9uQszxWPVeBaD/7tgSi8NzTy/tuIfIdfUuWitVNxlDrDt9dh2rreIgAJXYHUeqE6B32QamTCmUlFhIYbX52DX5jJLGCGLOJLcwh8a7AvuxNMCw54+suPZjr8whQOqW7ZtdwZePwIHtJxbL+B2E67x8A8sqeIYg6FCejuZ7m1uPizfhWioHLW30K5Z7ESL40is8l166bkQM8nTH8EIbOUcGgDUirsyGaEp4UUBGZD65s98d1R++7KzCPh8oPbDftxlPw+1SB3d4yyxBdAgMBAAEwDQYJKoZIhvcNAQELBQADggEBALKVXfayldWsdDjwtUZOtzu9fTU3YbUekvkuYr0Fvs9348ZiWoPvt6JQ9i7ytqDxok9CvgVL347ZS+lDkMKhBpw7ryVS0bG/Vg7DeNmjmutGuGdiJR2nUF8z6SgDVWXqr4XrcDy6xwfVtAazc8MXau+eQozlZBiLV4bKDD793m9zqPeSIIipDozMrfKm4jYnam33d9pRQFGDgEGHqXiwR96x8tC5zlFjngKlX1IgigYqARSsOMaV4vU2aIhIq3bLpvSIGGSDo9iw6iYhBYn9tpmtsHCU/RFqsWPhglU168+0VQesCQphKCXoOZp3qIGnRUVySNZSZrHynQ/wLzI1Dos=" ], - "priority" : [ "100" ] - } - }, { - "id" : "2b7d2bdf-aee4-4f31-8bec-97bd01182220", - "name" : "hmac-generated-hs512", - "providerId" : "hmac-generated", - "subComponents" : { }, - "config" : { - "kid" : [ "f908ef09-5b02-4d60-8aa9-906f5be4b4b3" ], - "secret" : [ "_PZq7evS8vCHPBBLIRlgHrcXtE46TgjSaao5Yh1LlyjHUyHhxarMYYbenDFELpc7nw3WDWr2U0lS-y0QY7EHySYvf6zx5er1hNwPV78g4kvJUYRKKf9U8OmWlsr2E8bDGKBr547El5HyU11_KWykzvi_dBkqX6LsceQB8guy8t4" ], - "priority" : [ "100" ], - "algorithm" : [ "HS512" ] - } - } ] - }, - "internationalizationEnabled" : false, - "supportedLocales" : [ ], - "authenticationFlows" : [ { - "id" : "68f8d935-47fb-42dc-8e23-94cca509c6b1", - "alias" : "Account verification options", - "description" : "Method with which to verity the existing account", - "providerId" : "basic-flow", - "topLevel" : false, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "idp-email-verification", - "authenticatorFlow" : false, - "requirement" : "ALTERNATIVE", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticatorFlow" : true, - "requirement" : "ALTERNATIVE", - "priority" : 20, - "autheticatorFlow" : true, - "flowAlias" : "Verify Existing Account by Re-authentication", - "userSetupAllowed" : false - } ] - }, { - "id" : "c5c5650b-a462-4b37-9dd9-f1499e369219", - "alias" : "Browser - Conditional OTP", - "description" : "Flow to determine if the OTP is required for the authentication", - "providerId" : "basic-flow", - "topLevel" : false, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "conditional-user-configured", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "auth-otp-form", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 20, - "autheticatorFlow" : false, - "userSetupAllowed" : false - } ] - }, { - "id" : "16124aaf-0384-4d6d-a108-338b5749aa5d", - "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" : "3bbf73c5-00f6-4a2a-a2cb-d74f82653fa3", - "alias" : "First broker login - Conditional OTP", - "description" : "Flow to determine if the OTP is required for the authentication", - "providerId" : "basic-flow", - "topLevel" : false, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "conditional-user-configured", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticator" : "auth-otp-form", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 20, - "autheticatorFlow" : false, - "userSetupAllowed" : false - } ] - }, { - "id" : "b0e4e594-f55d-46be-86fd-676ec72d979e", - "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" : "04618969-a055-4e6f-9e41-27c24b037d30", - "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" : "079f9946-bc86-4b50-970f-0fde0eebafb0", - "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" : "b4056290-6f49-4343-a803-8029b8cab587", - "alias" : "Verify Existing Account by Re-authentication", - "description" : "Reauthentication of existing account", - "providerId" : "basic-flow", - "topLevel" : false, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "idp-username-password-form", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticatorFlow" : true, - "requirement" : "CONDITIONAL", - "priority" : 20, - "autheticatorFlow" : true, - "flowAlias" : "First broker login - Conditional OTP", - "userSetupAllowed" : false - } ] - }, { - "id" : "1b02c9b7-50d4-4001-8648-4674d2b5c83f", - "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" : "2c52b4db-2764-4930-ba72-eed08a3568f9", - "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" : "d4b0242b-f4a2-4e28-9dc5-5ee8bd64c4a7", - "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" : "5c90d095-2a79-40c5-a452-98e0cd9402e6", - "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" : "87054128-dec5-47c4-a461-0491ac601ee8", - "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" : "197b6d93-54f1-46a1-8bc1-fee099e06978", - "alias" : "forms", - "description" : "Username, password, otp and other auth forms.", - "providerId" : "basic-flow", - "topLevel" : false, - "builtIn" : true, - "authenticationExecutions" : [ { - "authenticator" : "auth-username-password-form", - "authenticatorFlow" : false, - "requirement" : "REQUIRED", - "priority" : 10, - "autheticatorFlow" : false, - "userSetupAllowed" : false - }, { - "authenticatorFlow" : true, - "requirement" : "CONDITIONAL", - "priority" : 20, - "autheticatorFlow" : true, - "flowAlias" : "Browser - Conditional OTP", - "userSetupAllowed" : false - } ] - }, { - "id" : "ca5c0b1a-51cf-4a79-bb61-5b923eed9bf7", - "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" : "856a26b0-cf52-4173-94fb-8726c77de2ab", - "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" : "ea7cafde-a77b-4fd6-9510-396748960980", - "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" : "35a9e22a-3775-4cad-9a8b-d646cd74c8eb", - "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" : "4a307cbf-79bc-4125-8eca-4ea98f7cb27b", - "alias" : "create unique user config", - "config" : { - "require.password.update.after.registration" : "false" - } - }, { - "id" : "0a0aaedd-39f6-4dc0-9153-ac6dbd255d3a", - "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" : "webauthn-register", - "name" : "Webauthn Register", - "providerId" : "webauthn-register", - "enabled" : true, - "defaultAction" : false, - "priority" : 70, - "config" : { } - }, { - "alias" : "webauthn-register-passwordless", - "name" : "Webauthn Register Passwordless", - "providerId" : "webauthn-register-passwordless", - "enabled" : true, - "defaultAction" : false, - "priority" : 80, - "config" : { } - }, { - "alias" : "VERIFY_PROFILE", - "name" : "Verify Profile", - "providerId" : "VERIFY_PROFILE", - "enabled" : true, - "defaultAction" : false, - "priority" : 90, - "config" : { } - }, { - "alias" : "delete_credential", - "name" : "Delete Credential", - "providerId" : "delete_credential", - "enabled" : true, - "defaultAction" : false, - "priority" : 100, - "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", - "frontendUrl" : "http://localhost:8181", - "acr.loa.map" : "{}" - }, - "keycloakVersion" : "24.0.3", - "userManagedAccessAllowed" : false, - "clientProfiles" : { - "profiles" : [ ] - }, - "clientPolicies" : { - "policies" : [ ] } -} ] \ No newline at end of file +] diff --git a/examples/using react and other custom scripts and styles/my_react_component.js b/examples/using react and other custom scripts and styles/my_react_component.js index b65e4988..0999ca18 100644 --- a/examples/using react and other custom scripts and styles/my_react_component.js +++ b/examples/using react and other custom scripts and styles/my_react_component.js @@ -2,25 +2,28 @@ // version of a React component written in JSX. function MyComponent({ greeting_name }) { - const [count, setCount] = React.useState(0); - return React.createElement( - 'button', - { - onClick: async () => { - const r = await fetch('/api.sql'); - const { total_clicks } = await r.json(); - setCount(total_clicks) - }, - className: 'btn btn-primary' - }, - count == 0 - ? `Hello, ${greeting_name}. Click me !` - : `You clicked me ${count} times!` - ); + const [count, setCount] = React.useState(0); + return React.createElement( + "button", + { + type: "button", + onClick: async () => { + const r = await fetch("/api.sql"); + const { total_clicks } = await r.json(); + setCount(total_clicks); + }, + className: "btn btn-primary", + }, + count === 0 + ? `Hello, ${greeting_name}. Click me !` + : `You clicked me ${count} times!`, + ); } -for (const container of document.getElementsByClassName('react_component')) { - const root = ReactDOM.createRoot(container); - const props = JSON.parse(container.dataset.props); - root.render(React.createElement(window[props.react_component_name], props, null)); -} \ No newline at end of file +for (const container of document.getElementsByClassName("react_component")) { + const root = ReactDOM.createRoot(container); + const props = JSON.parse(container.dataset.props); + root.render( + React.createElement(window[props.react_component_name], props, null), + ); +} diff --git a/examples/using react and other custom scripts and styles/style.css b/examples/using react and other custom scripts and styles/style.css index d3fefeff..8f59d349 100644 --- a/examples/using react and other custom scripts and styles/style.css +++ b/examples/using react and other custom scripts and styles/style.css @@ -16,7 +16,8 @@ } @keyframes neon-glow { - 0%, 100% { + 0%, + 100% { text-shadow: 0 0 10px #fa2dd1, 0 0 20px #b30890, 2px 3px 30px #ff00cc; } 50% { @@ -29,5 +30,5 @@ } #funky_text * { - color: inherit; -} \ No newline at end of file + color: inherit; +} diff --git a/sqlpage/apexcharts.js b/sqlpage/apexcharts.js index 2e616186..6dc9f0bc 100644 --- a/sqlpage/apexcharts.js +++ b/sqlpage/apexcharts.js @@ -1,231 +1,282 @@ /* !include https://cdn.jsdelivr.net/npm/apexcharts@4.0.0/dist/apexcharts.min.js */ sqlpage_chart = (() => { + function sqlpage_chart() { + for (const c of document.querySelectorAll("[data-pre-init=chart]")) { + try { + build_sqlpage_chart(c); + } catch (e) { + console.log(e); + } + } + } - function sqlpage_chart() { - for (const c of document.querySelectorAll("[data-pre-init=chart]")) { - try { build_sqlpage_chart(c) } - catch (e) { console.log(e) } + const tblrColors = Object.fromEntries( + [ + "azure", + "red", + "lime", + "purple", + "yellow", + "gray-600", + "orange", + "pink", + "teal", + "indigo", + "cyan", + "green", + "blue-lt", + "yellow-lt", + "pink-lt", + "green-lt", + "orange-lt", + "blue", + "gray-500", + "gray-400", + "gray-300", + "gray-200", + "gray-100", + "gray-50", + "black", + ].map((c) => [ + c, + getComputedStyle(document.documentElement).getPropertyValue( + `--tblr-${c}`, + ), + ]), + ); + + /** @typedef { { [name:string]: {data:{x:number,y:number}[], name:string} } } Series */ + + /** + * @param {Series} series + * @returns {Series} */ + function align_categories(series) { + const new_series = series.map((s) => ({ name: s.name, data: [] })); + do { + let category = null; + series.forEach((s, s_i) => { + const point = s.data[0]; + let new_point = { x: category, y: 0 }; + if (point) { + if (category == null) category = point.x; + if (category === point.x) { + new_point = s.data.shift(); + } } + new_series[s_i].data.push(new_point); + }); + for (const s of new_series) { + s.data[s.data.length - 1].x = category; + } + } while (category != null); + for (const s of new_series) { + s.data.pop(); } + return new_series; + } - - const tblrColors = Object.fromEntries(['azure', 'red', 'lime', 'purple', 'yellow', 'gray-600', 'orange', 'pink', 'teal', 'indigo', 'cyan', 'green', 'blue-lt', 'yellow-lt', 'pink-lt', 'green-lt', 'orange-lt', 'blue', 'gray-500', 'gray-400', 'gray-300', 'gray-200', 'gray-100', 'gray-50', 'black'] - .map(c => [c, getComputedStyle(document.documentElement).getPropertyValue('--tblr-' + c)])); - - /** @typedef { { [name:string]: {data:{x:number,y:number}[], name:string} } } Series */ - - /** - * @param {Series} series - * @returns {Series} */ - function align_categories(series) { - const new_series = series.map(s => ({ name: s.name, data: [] })); - do { - var category = null; - series.forEach((s, s_i) => { - const point = s.data[0]; - let new_point = { x: category, y: 0 }; - if (point) { - if (category == null) category = point.x; - if (category === point.x) { - new_point = s.data.shift(); - } - } - new_series[s_i].data.push(new_point); - }) - new_series.forEach(s => s.data[s.data.length - 1].x = category); - } while (category != null); - new_series.forEach(s => s.data.pop()); - return new_series; + /** @param {HTMLElement} c */ + function build_sqlpage_chart(c) { + const [data_element] = c.getElementsByTagName("data"); + const data = JSON.parse(data_element.textContent); + const chartContainer = c.querySelector(".chart"); + chartContainer.innerHTML = ""; + const is_timeseries = !!data.time; + /** @type { Series } */ + const series_map = {}; + for (const [name, old_x, old_y, z] of data.points) { + series_map[name] = series_map[name] || { name, data: [] }; + let x = old_x; + let y = old_y; + if (is_timeseries) { + if (typeof x === "number") x = new Date(x * 1000); + else if (data.type === "rangeBar" && Array.isArray(y)) + y = y.map((y) => new Date(y).getTime()); + else x = new Date(x); + } + series_map[name].data.push({ x, y, z }); } + if (data.xmin == null) data.xmin = undefined; + if (data.xmax == null) data.xmax = undefined; + if (data.ymin == null) data.ymin = undefined; + if (data.ymax == null) data.ymax = undefined; + const colors = [ + ...data.colors.filter((c) => c).map((c) => tblrColors[c]), + ...Object.values(tblrColors), + ]; - /** @param {HTMLElement} c */ - function build_sqlpage_chart(c) { - const [data_element] = c.getElementsByTagName("data"); - const data = JSON.parse(data_element.textContent); - const chartContainer = c.querySelector('.chart'); - chartContainer.innerHTML = ""; - const is_timeseries = !!data.time; - /** @type { Series } */ - const series_map = {}; - data.points.forEach(([name, x, y, z]) => { - series_map[name] = series_map[name] || { name, data: [] } - if (is_timeseries) { - if (typeof x === 'number') x = new Date(x * 1000) // databases use seconds; JS uses ms - else if (data.type === 'rangeBar' && Array.isArray(y)) y = y.map(y => new Date(y).getTime()); // timerange charts - else x = new Date(x); + let series = Object.values(series_map); + + // tickamount is the number of intervals, not the number of ticks + const tickAmount = + data.xticks || + Math.min(30, Math.max(...series.map((s) => s.data.length - 1))); + + let labels; + const categories = + series.length > 0 && typeof series[0].data[0].x === "string"; + if (data.type === "pie") { + labels = data.points.map(([name, x, y]) => x || name); + series = data.points.map(([name, x, y]) => y); + } else if (categories && data.type === "bar") + series = align_categories(series); + + const options = { + chart: { + type: data.type || "line", + fontFamily: "inherit", + parentHeightOffset: 0, + height: chartContainer.style.height, + stacked: !!data.stacked, + toolbar: { + show: !!data.toolbar, + }, + animations: { + enabled: false, + }, + zoom: { + enabled: false, + }, + }, + theme: { + palette: "palette4", + }, + dataLabels: { + enabled: !!data.labels, + dropShadow: { + enabled: true, + color: "#f6f8fb", + }, + formatter: + data.type === "rangeBar" + ? (_val, { seriesIndex, w }) => w.config.series[seriesIndex].name + : data.type === "pie" + ? (value, { seriesIndex, w }) => + `${w.config.labels[seriesIndex]}: ${value.toFixed()}%` + : (value) => value.toLocaleString(), + }, + fill: { + type: data.type === "area" ? "gradient" : "solid", + }, + stroke: { + width: data.type === "area" ? 3 : 1, + lineCap: "round", + curve: "smooth", + }, + xaxis: { + tooltip: { + enabled: false, + }, + min: data.xmin, + max: data.xmax, + tickAmount, + title: { + text: data.xtitle || undefined, + }, + type: is_timeseries ? "datetime" : categories ? "category" : undefined, + labels: { + datetimeUTC: false, + }, + }, + yaxis: { + logarithmic: !!data.logarithmic, + min: data.ymin, + max: data.ymax, + stepSize: data.ystep, + tickAmount: data.yticks, + title: { + text: data.ytitle || undefined, + }, + }, + zaxis: { + title: { + text: data.ztitle || undefined, + }, + }, + markers: { + size: data.marker || 0, + strokeWidth: 0, + hover: { + sizeOffset: 5, + }, + }, + tooltip: { + fillSeriesColor: false, + custom: + data.type === "bubble" || data.type === "scatter" + ? bubbleTooltip + : undefined, + y: { + formatter: (value) => { + if (is_timeseries && data.type === "rangeBar") { + const d = new Date(value); + if (d.getHours() === 0 && d.getMinutes() === 0) + return d.toLocaleDateString(); + return d.toLocaleString(); } - series_map[name].data.push({ x, y, z }); - }) - if (data.xmin == null) data.xmin = undefined; - if (data.xmax == null) data.xmax = undefined; - if (data.ymin == null) data.ymin = undefined; - if (data.ymax == null) data.ymax = undefined; + const str_val = value.toLocaleString(); + if (str_val.length > 10 && Number.isNaN(value)) + return value.toFixed(2); + return str_val; + }, + }, + }, + plotOptions: { + bar: { + horizontal: !!data.horizontal || data.type === "rangeBar", + borderRadius: 5, + }, + bubble: { minBubbleRadius: 5 }, + }, + colors, + series, + }; + if (labels) options.labels = labels; + const chart = new ApexCharts(chartContainer, options); + chart.render(); + if (window.charts) window.charts.push(chart); + else window.charts = [chart]; + c.removeAttribute("data-pre-init"); + } - const colors = [ - ...data.colors.filter(c => c).map(c => tblrColors[c]), - ...Object.values(tblrColors) - ]; + function bubbleTooltip({ series, seriesIndex, dataPointIndex, w }) { + const { name, data } = w.config.series[seriesIndex]; + const point = data[dataPointIndex]; - let series = Object.values(series_map); + const tooltip = document.createElement("div"); + tooltip.className = "apexcharts-tooltip-text"; + tooltip.style.fontFamily = "inherit"; - // tickamount is the number of intervals, not the number of ticks - const tickAmount = data.xticks || - Math.min(30, Math.max(...series.map(s => s.data.length - 1))); + const seriesName = document.createElement("div"); + seriesName.className = "apexcharts-tooltip-y-group"; + seriesName.style.fontWeight = "bold"; + seriesName.innerText = name; + tooltip.appendChild(seriesName); - let labels; - const categories = series.length > 0 && typeof series[0].data[0].x === "string"; - if (data.type === "pie") { - labels = data.points.map(([name, x, y]) => x || name); - series = data.points.map(([name, x, y]) => y); - } else if (categories && data.type === 'bar') series = align_categories(series); - - const options = { - chart: { - type: data.type || 'line', - fontFamily: 'inherit', - parentHeightOffset: 0, - height: chartContainer.style.height, - stacked: !!data.stacked, - toolbar: { - show: !!data.toolbar, - }, - animations: { - enabled: false - }, - zoom: { - enabled: false - } - }, - theme: { - palette: 'palette4', - }, - dataLabels: { - enabled: !!data.labels, - dropShadow: { - enabled: true, - color: '#f6f8fb', - }, - formatter: (data.type === 'rangeBar') ? (_val, { seriesIndex, w }) => w.config.series[seriesIndex].name : - (data.type === 'pie') ? (value, { seriesIndex, w }) => `${w.config.labels[seriesIndex]}: ${value.toFixed()}%` - : value => value.toLocaleString(), - }, - fill: { - type: data.type === 'area' ? 'gradient' : 'solid', - }, - stroke: { - width: data.type === 'area' ? 3 : 1, - lineCap: "round", - curve: "smooth", - }, - xaxis: { - tooltip: { - enabled: false - }, - min: data.xmin, - max: data.xmax, - tickAmount, - title: { - text: data.xtitle || undefined, - }, - type: is_timeseries ? 'datetime' : categories ? 'category' : undefined, - labels: { - datetimeUTC: false, - } - }, - yaxis: { - logarithmic: !!data.logarithmic, - min: data.ymin, - max: data.ymax, - stepSize: data.ystep, - tickAmount: data.yticks, - title: { - text: data.ytitle || undefined, - } - }, - zaxis: { - title: { - text: data.ztitle || undefined, - } - }, - markers: { - size: data.marker || 0, - strokeWidth: 0, - hover: { - sizeOffset: 5, - } - }, - tooltip: { - fillSeriesColor: false, - custom: (data.type === 'bubble' || data.type === 'scatter') ? bubbleTooltip : undefined, - y: { - formatter: (value) => { - if (is_timeseries && data.type === 'rangeBar') { - const d = new Date(value); - if (d.getHours() === 0 && d.getMinutes() === 0) return d.toLocaleDateString(); - return d.toLocaleString(); - } - const str_val = value.toLocaleString(); - if (str_val.length > 10 && value != value | 0) return value.toFixed(2); - return str_val; - } - } - }, - plotOptions: { - bar: { - horizontal: !!data.horizontal || data.type === 'rangeBar', - borderRadius: 5, - }, - bubble: { minBubbleRadius: 5, }, - }, - colors, - series, - }; - if (labels) options.labels = labels; - const chart = new ApexCharts(chartContainer, options); - chart.render(); - if (window.charts) window.charts.push(chart); - else window.charts = [chart]; - c.removeAttribute("data-pre-init"); + for (const axis of ["x", "y", "z"]) { + const value = point[axis]; + if (value == null) continue; + const axisValue = document.createElement("div"); + axisValue.className = "apexcharts-tooltip-y-group"; + let axis_conf = w.config[`${axis}axis`]; + if (axis_conf.length) axis_conf = axis_conf[0]; + const title = axis_conf.title.text || axis; + const labelSpan = document.createElement("span"); + labelSpan.className = "apexcharts-tooltip-text-y-label"; + labelSpan.innerText = `${title}: `; + axisValue.appendChild(labelSpan); + const valueSpan = document.createElement("span"); + valueSpan.className = "apexcharts-tooltip-text-y-value"; + valueSpan.innerText = value; + axisValue.appendChild(valueSpan); + tooltip.appendChild(axisValue); } + return tooltip.outerHTML; + } - function bubbleTooltip({ series, seriesIndex, dataPointIndex, w }) { - const { name, data } = w.config.series[seriesIndex]; - const point = data[dataPointIndex]; - - const tooltip = document.createElement('div'); - tooltip.className = 'apexcharts-tooltip-text'; - tooltip.style.fontFamily = 'inherit'; - - const seriesName = document.createElement('div'); - seriesName.className = 'apexcharts-tooltip-y-group'; - seriesName.style.fontWeight = 'bold'; - seriesName.innerText = name; - tooltip.appendChild(seriesName); - - for (const axis of ['x', 'y', 'z']) { - const value = point[axis]; - if (value == null) continue; - const axisValue = document.createElement('div'); - axisValue.className = 'apexcharts-tooltip-y-group'; - let axis_conf = w.config[axis + 'axis']; - if (axis_conf.length) axis_conf = axis_conf[0]; - const title = axis_conf.title.text || axis; - const labelSpan = document.createElement('span'); - labelSpan.className = 'apexcharts-tooltip-text-y-label'; - labelSpan.innerText = title + ': '; - axisValue.appendChild(labelSpan); - const valueSpan = document.createElement('span'); - valueSpan.className = 'apexcharts-tooltip-text-y-value'; - valueSpan.innerText = value; - axisValue.appendChild(valueSpan); - tooltip.appendChild(axisValue); - } - return tooltip.outerHTML; - } - - return sqlpage_chart; + return sqlpage_chart; })(); -add_init_fn(sqlpage_chart); \ No newline at end of file +add_init_fn(sqlpage_chart); diff --git a/sqlpage/sqlpage.css b/sqlpage/sqlpage.css index e387113f..6a3a2866 100644 --- a/sqlpage/sqlpage.css +++ b/sqlpage/sqlpage.css @@ -58,7 +58,8 @@ code { font-size: 100%; } -.apexcharts-text, .apexcharts-datalabel { +.apexcharts-text, +.apexcharts-datalabel { fill: var(--tblr-body-color) !important; font-weight: var(--tblr-body-font-weight); -} \ No newline at end of file +} diff --git a/sqlpage/sqlpage.js b/sqlpage/sqlpage.js index 289644d6..5e04685c 100644 --- a/sqlpage/sqlpage.js +++ b/sqlpage/sqlpage.js @@ -5,8 +5,8 @@ function sqlpage_card() { for (const c of document.querySelectorAll("[data-pre-init=card]")) { const source = c.dataset.embed; fetch(c.dataset.embed) - .then(res => res.text()) - .then(html => { + .then((res) => res.text()) + .then((html) => { const body = c.querySelector(".card-content"); body.innerHTML = html; c.removeAttribute("data-pre-init"); @@ -15,10 +15,10 @@ function sqlpage_card() { spinner.parentNode.removeChild(spinner); } const fragLoadedEvt = new CustomEvent("fragment-loaded", { - bubbles: true + bubbles: true, }); c.dispatchEvent(fragLoadedEvt); - }) + }); } } @@ -28,19 +28,25 @@ function table_search_sort(el) { const search_input = el.querySelector("input.search"); const sort_buttons = [...el.querySelectorAll("button.sort[data-sort]")]; const item_parent = el.querySelector("tbody"); - const items = [...item_parent.querySelectorAll("tr")].map(el => ({ + const items = [...item_parent.querySelectorAll("tr")].map((el) => ({ el, - sort_keys: sort_buttons.map(b => { - const sort_key = el.getElementsByClassName(b.dataset.sort)[0]?.textContent; + sort_keys: sort_buttons.map((b) => { + const sort_key = el.getElementsByClassName(b.dataset.sort)[0] + ?.textContent; return { num: Number.parseFloat(sort_key), str: sort_key }; - }) + }), })); function onSearch() { - const lower_search = search_input.value.toLowerCase().split(/\s+/).filter(s => s); - items.forEach(item => { - const show = lower_search.every(s => item.el.textContent.toLowerCase().includes(s)); + const lower_search = search_input.value + .toLowerCase() + .split(/\s+/) + .filter((s) => s); + for (const item of items) { + const show = lower_search.every((s) => + item.el.textContent.toLowerCase().includes(s), + ); item.el.style.display = show ? "" : "none"; - }); + } } if (search_input) { search_input.addEventListener("input", onSearch); @@ -49,15 +55,22 @@ function table_search_sort(el) { sort_buttons.forEach((button, button_index) => { button.addEventListener("click", function sort_items() { const sort_desc = button.classList.contains("asc"); - sort_buttons.forEach(b => b.classList.remove("asc", "desc")); + for (const b of sort_buttons) { + b.classList.remove("asc", "desc"); + } button.classList.add(sort_desc ? "desc" : "asc"); const multiplier = sort_desc ? -1 : 1; items.sort((a, b) => { const a_key = a.sort_keys[button_index]; const b_key = b.sort_keys[button_index]; - return multiplier * ((isNaN(a_key.num) || isNaN(b_key.num)) ? a_key.str.localeCompare(b_key.str) : a_key.num - b_key.num); + return ( + multiplier * + (Number.isNaN(a_key.num) || Number.isNaN(b_key.num) + ? a_key.str.localeCompare(b_key.str) + : a_key.num - b_key.num) + ); }); - item_parent.append(...items.map(item => item.el)); + item_parent.append(...items.map((item) => item.el)); }); }); } @@ -79,13 +92,17 @@ function sqlpage_map() { // Add the leaflet js and css to the page const leaflet_css = document.createElement("link"); leaflet_css.rel = "stylesheet"; - leaflet_css.href = "https://cdn.jsdelivr.net/npm/leaflet@1.9.4/dist/leaflet.css"; - leaflet_css.integrity = "sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY="; + leaflet_css.href = + "https://cdn.jsdelivr.net/npm/leaflet@1.9.4/dist/leaflet.css"; + leaflet_css.integrity = + "sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY="; leaflet_css.crossOrigin = "anonymous"; document.head.appendChild(leaflet_css); const leaflet_js = document.createElement("script"); - leaflet_js.src = "https://cdn.jsdelivr.net/npm/leaflet@1.9.4/dist/leaflet.js"; - leaflet_js.integrity = "sha256-20nQCchB9co0qIjJZRGuk2/Z9VM+kNiyxNV1lvTlZBo="; + leaflet_js.src = + "https://cdn.jsdelivr.net/npm/leaflet@1.9.4/dist/leaflet.js"; + leaflet_js.integrity = + "sha256-20nQCchB9co0qIjJZRGuk2/Z9VM+kNiyxNV1lvTlZBo="; leaflet_js.crossOrigin = "anonymous"; leaflet_js.nonce = nonce; leaflet_js.onload = onLeafletLoad; @@ -96,7 +113,7 @@ function sqlpage_map() { onLeafletLoad(); } function parseCoords(coords) { - return coords && coords.split(",").map(c => Number.parseFloat(c)); + return coords?.split(",").map((c) => Number.parseFloat(c)); } function onLeafletLoad() { is_leaflet_loaded = true; @@ -108,16 +125,19 @@ function sqlpage_map() { const map = L.map(m, { attributionControl: !!attribution }); const zoom = m.dataset.zoom; const center = parseCoords(m.dataset.center); - if (tile_source) L.tileLayer(tile_source, { attribution, maxZoom }).addTo(map); + if (tile_source) + L.tileLayer(tile_source, { attribution, maxZoom }).addTo(map); map._sqlpage_markers = []; for (const marker_elem of m.getElementsByClassName("marker")) { setTimeout(addMarker, 0, marker_elem, map); } setTimeout(() => { if (center == null && map._sqlpage_markers.length) { - map.fitBounds(map._sqlpage_markers.map(m => - m.getLatLng ? m.getLatLng() : m.getBounds() - )); + map.fitBounds( + map._sqlpage_markers.map((m) => + m.getLatLng ? m.getLatLng() : m.getBounds(), + ), + ); if (zoom != null) map.setZoom(+zoom); } else map.setView(center, +zoom); }, 100); @@ -132,22 +152,28 @@ function sqlpage_map() { color: marker_elem.dataset.color, title: marker_elem.getElementsByTagName("h3")[0].textContent.trim(), }; - const marker = - dataset.coords ? createMarker(marker_elem, options) - : createGeoJSONMarker(marker_elem, options); + const marker = dataset.coords + ? createMarker(marker_elem, options) + : createGeoJSONMarker(marker_elem, options); marker.addTo(map); map._sqlpage_markers.push(marker); if (options.title) marker.bindPopup(marker_elem); - else if (marker_elem.dataset.link) marker.on('click', () => window.location = marker_elem.dataset.link); + else if (marker_elem.dataset.link) { + marker.on("click", () => { + window.location.href = marker_elem.dataset.link; + }); + } } function createMarker(marker_elem, options) { const coords = parseCoords(marker_elem.dataset.coords); const icon_obj = marker_elem.getElementsByClassName("mapicon")[0]; if (icon_obj) { - const size = 1.5 * +(options.size || icon_obj.firstChild?.getAttribute('width') || 24); + const size = + 1.5 * + +(options.size || icon_obj.firstChild?.getAttribute("width") || 24); options.icon = L.divIcon({ html: icon_obj, - className: `border-0 bg-${options.color || 'primary'} bg-gradient text-white rounded-circle shadow d-flex justify-content-center align-items-center`, + className: `border-0 bg-${options.color || "primary"} bg-gradient text-white rounded-circle shadow d-flex justify-content-center align-items-center`, iconSize: [size, size], iconAnchor: [size / 2, size / 2], }); @@ -164,7 +190,7 @@ function sqlpage_map() { return { ...options, ...properties }; } function pointToLayer(feature, latlng) { - marker_elem.dataset.coords = latlng.lat + "," + latlng.lng; + marker_elem.dataset.coords = `${latlng.lat},${latlng.lng}`; return createMarker(marker_elem, { ...options, ...feature.properties }); } return L.geoJSON(geojson, { style, pointToLayer }); @@ -172,7 +198,9 @@ function sqlpage_map() { } function sqlpage_form() { - const file_inputs = document.querySelectorAll("input[type=file][data-max-size]"); + const file_inputs = document.querySelectorAll( + "input[type=file][data-max-size]", + ); for (const input of file_inputs) { const max_size = +input.dataset.maxSize; input.addEventListener("change", function () { @@ -181,7 +209,9 @@ function sqlpage_form() { for (const { size } of this.files) { if (size > max_size) { input.classList.add("is-invalid"); - return input.setCustomValidity(`File size must be less than ${max_size / 1000} kB.`); + return input.setCustomValidity( + `File size must be less than ${max_size / 1000} kB.`, + ); } } }); @@ -189,12 +219,16 @@ function sqlpage_form() { } function get_tabler_color(name) { - return getComputedStyle(document.documentElement).getPropertyValue('--tblr-' + name); + return getComputedStyle(document.documentElement).getPropertyValue( + `--tblr-${name}`, + ); } function load_scripts() { const addjs = document.querySelectorAll("[data-sqlpage-js]"); - const existing_scripts = new Set([...document.querySelectorAll("script")].map(s => s.src)); + const existing_scripts = new Set( + [...document.querySelectorAll("script")].map((s) => s.src), + ); for (const el of addjs) { const js = new URL(el.dataset.sqlpageJs, window.location.href).href; if (existing_scripts.has(js)) continue; @@ -206,12 +240,11 @@ function load_scripts() { } function add_init_fn(f) { - document.addEventListener('DOMContentLoaded', f); - document.addEventListener('fragment-loaded', f); + document.addEventListener("DOMContentLoaded", f); + document.addEventListener("fragment-loaded", f); if (document.readyState !== "loading") setTimeout(f, 0); } - add_init_fn(sqlpage_table); add_init_fn(sqlpage_map); add_init_fn(sqlpage_card); @@ -221,11 +254,19 @@ add_init_fn(load_scripts); function init_bootstrap_components(event) { if (window.bootstrap) { const fragment = event.target; - fragment.querySelectorAll('[data-bs-toggle="tooltip"]').forEach(el => new bootstrap.Tooltip(el)); - fragment.querySelectorAll('[data-bs-toggle="popover"]').forEach(el => new bootstrap.Popover(el)); - fragment.querySelectorAll('[data-bs-toggle="dropdown"]').forEach(el => new bootstrap.Dropdown(el)); - fragment.querySelectorAll('[data-bs-ride="carousel"]').forEach(el => new bootstrap.Carousel(el)); + for (const el of fragment.querySelectorAll('[data-bs-toggle="tooltip"]')) { + new bootstrap.Tooltip(el); + } + for (const el of fragment.querySelectorAll('[data-bs-toggle="popover"]')) { + new bootstrap.Popover(el); + } + for (const el of fragment.querySelectorAll('[data-bs-toggle="dropdown"]')) { + new bootstrap.Dropdown(el); + } + for (const el of fragment.querySelectorAll('[data-bs-ride="carousel"]')) { + new bootstrap.Carousel(el); + } } } -document.addEventListener('fragment-loaded', init_bootstrap_components); +document.addEventListener("fragment-loaded", init_bootstrap_components); diff --git a/sqlpage/tomselect.js b/sqlpage/tomselect.js index 0796087e..aa7998dd 100644 --- a/sqlpage/tomselect.js +++ b/sqlpage/tomselect.js @@ -1,7 +1,9 @@ /* !include https://cdn.jsdelivr.net/npm/tom-select@2.3.1/dist/js/tom-select.popular.min.js */ function sqlpage_select_dropdown() { - for (const s of document.querySelectorAll("[data-pre-init=select-dropdown]")) { + for (const s of document.querySelectorAll( + "[data-pre-init=select-dropdown]", + )) { // See: https://github.com/orchidjs/tom-select/issues/716 // By default, TomSelect will not retain the focus if s is already focused // This is a workaround to fix that @@ -15,4 +17,4 @@ function sqlpage_select_dropdown() { } } -add_init_fn(sqlpage_select_dropdown); \ No newline at end of file +add_init_fn(sqlpage_select_dropdown); diff --git a/tests/end-to-end/official-site.spec.ts b/tests/end-to-end/official-site.spec.ts index 89e5406c..ab641311 100644 --- a/tests/end-to-end/official-site.spec.ts +++ b/tests/end-to-end/official-site.spec.ts @@ -1,134 +1,139 @@ -import { test, expect } from '@playwright/test'; +import { expect, test } from "@playwright/test"; -const BASE = 'http://localhost:8080/'; +const BASE = "http://localhost:8080/"; -test('Open documentation', async ({ page }) => { +test("Open documentation", async ({ page }) => { await page.goto(BASE); // Expect a title "to contain" a substring. await expect(page).toHaveTitle(/SQLPage.*/); // open the submenu - await page.getByText('Documentation', { exact: true }).first().click(); - await page.getByText('All Components').click(); - const components = ['form', 'map', 'chart', 'button']; + await page.getByText("Documentation", { exact: true }).first().click(); + await page.getByText("All Components").click(); + const components = ["form", "map", "chart", "button"]; for (const component of components) { - await expect(page.getByRole('link', { name: component }).first()).toBeVisible(); + await expect( + page.getByRole("link", { name: component }).first(), + ).toBeVisible(); } }); -test('chart', async ({ page }) => { - await page.goto(BASE + '/documentation.sql?component=chart#component'); - await expect(page.getByText('Loading...')).not.toBeVisible(); - await expect(page.locator('.apexcharts-canvas').first()).toBeVisible(); +test("chart", async ({ page }) => { + await page.goto(`${BASE}/documentation.sql?component=chart#component`); + await expect(page.getByText("Loading...")).not.toBeVisible(); + await expect(page.locator(".apexcharts-canvas").first()).toBeVisible(); }); -test('map', async ({ page }) => { - await page.goto(BASE + '/documentation.sql?component=map#component'); - await expect(page.getByText('Loading...')).not.toBeVisible(); - await expect(page.locator('.leaflet-marker-icon').first()).toBeVisible(); +test("map", async ({ page }) => { + await page.goto(`${BASE}/documentation.sql?component=map#component`); + await expect(page.getByText("Loading...")).not.toBeVisible(); + await expect(page.locator(".leaflet-marker-icon").first()).toBeVisible(); }); -test('form example', async ({ page }) => { - await page.goto(BASE + '/examples/multistep-form'); +test("form example", async ({ page }) => { + await page.goto(`${BASE}/examples/multistep-form`); // Single selection matching the value or label - await page.getByLabel('From').selectOption('Paris'); - await page.getByText('Next').click(); - await page.getByLabel(/\bTo\b/).selectOption('Mexico'); - await page.getByText('Next').click(); - await page.getByLabel('Number of Adults').fill('1'); - await page.getByText('Next').click(); - await page.getByLabel('Passenger 1 (adult)').fill('John Doe'); - await page.getByText('Book the flight').click(); - await expect(page.getByText('John Doe').first()).toBeVisible(); + await page.getByLabel("From").selectOption("Paris"); + await page.getByText("Next").click(); + await page.getByLabel(/\bTo\b/).selectOption("Mexico"); + await page.getByText("Next").click(); + await page.getByLabel("Number of Adults").fill("1"); + await page.getByText("Next").click(); + await page.getByLabel("Passenger 1 (adult)").fill("John Doe"); + await page.getByText("Book the flight").click(); + await expect(page.getByText("John Doe").first()).toBeVisible(); }); -test('File upload', async ({ page }) => { +test("File upload", async ({ page }) => { await page.goto(BASE); - await page.getByRole('button', { name: 'Examples', exact: true }).click(); - await page.getByText('File uploads').click(); + await page.getByRole("button", { name: "Examples", exact: true }).click(); + await page.getByText("File uploads").click(); const my_svg = 'Hello World'; // @ts-ignore const buffer = Buffer.from(my_svg); - await page.getByLabel('Picture').setInputFiles({ - name: 'small.svg', - mimeType: 'image/svg+xml', + await page.getByLabel("Picture").setInputFiles({ + name: "small.svg", + mimeType: "image/svg+xml", buffer, }); - await page.getByRole('button', { name: 'Upload picture' }).click(); - await expect(page.locator('img[src^=data]').first().getAttribute('src')).resolves.toBe('data:image/svg+xml;base64,' + buffer.toString('base64')); + await page.getByRole("button", { name: "Upload picture" }).click(); + await expect( + page.locator("img[src^=data]").first().getAttribute("src"), + ).resolves.toBe(`data:image/svg+xml;base64,${buffer.toString("base64")}`); }); -test('Authentication example', async ({ page }) => { - await page.goto(BASE + '/examples/authentication/login.sql'); - await expect(page.locator('h1', { hasText: 'Authentication' })).toBeVisible(); +test("Authentication example", async ({ page }) => { + await page.goto(`${BASE}/examples/authentication/login.sql`); + await expect(page.locator("h1", { hasText: "Authentication" })).toBeVisible(); - const usernameInput = page.getByLabel('Username'); - const passwordInput = page.getByLabel('Password'); - const loginButton = page.getByRole('button', { name: 'Log in' }); + const usernameInput = page.getByLabel("Username"); + const passwordInput = page.getByLabel("Password"); + const loginButton = page.getByRole("button", { name: "Log in" }); await expect(usernameInput).toBeVisible(); await expect(passwordInput).toBeVisible(); await expect(loginButton).toBeVisible(); - await usernameInput.fill('admin'); - await passwordInput.fill('admin'); + await usernameInput.fill("admin"); + await passwordInput.fill("admin"); await loginButton.click(); - await expect(page.getByText('You are logged in as admin')).toBeVisible(); + await expect(page.getByText("You are logged in as admin")).toBeVisible(); }); -test('table filtering', async ({ page }) => { - await page.goto(BASE + '/documentation.sql?component=table'); - const tableSection = page.locator('.table-responsive', { - has: page.getByRole('cell', { name: 'Chart' }) +test("table filtering", async ({ page }) => { + await page.goto(`${BASE}/documentation.sql?component=table`); + const tableSection = page.locator(".table-responsive", { + has: page.getByRole("cell", { name: "Chart" }), }); - const searchInput = tableSection.getByPlaceholder('Search…'); - await searchInput.fill('chart'); - await expect(tableSection.getByRole('cell', { name: 'Chart' })).toBeVisible(); - await expect(tableSection.getByRole('cell', { name: 'Table' })).not.toBeVisible(); + const searchInput = tableSection.getByPlaceholder("Search…"); + await searchInput.fill("chart"); + await expect(tableSection.getByRole("cell", { name: "Chart" })).toBeVisible(); + await expect( + tableSection.getByRole("cell", { name: "Table" }), + ).not.toBeVisible(); }); -test('table sorting', async ({ page }) => { - await page.goto(BASE + '/documentation.sql?component=table'); - const tableSection = page.locator('.table-responsive', { - has: page.getByRole('cell', { name: '31456' }) +test("table sorting", async ({ page }) => { + await page.goto(`${BASE}/documentation.sql?component=table`); + const tableSection = page.locator(".table-responsive", { + has: page.getByRole("cell", { name: "31456" }), }); // Test numeric sorting on id column - await tableSection.getByRole('button', { name: 'id' }).click(); - let ids = await tableSection.locator('td.id').allInnerTexts(); - let numericIds = ids.map(id => Number.parseInt(id)); + await tableSection.getByRole("button", { name: "id" }).click(); + let ids = await tableSection.locator("td.id").allInnerTexts(); + let numericIds = ids.map((id) => Number.parseInt(id)); const sortedIds = [...numericIds].sort((a, b) => a - b); expect(numericIds).toEqual(sortedIds); // Test reverse sorting - await tableSection.getByRole('button', { name: 'id' }).click(); - ids = await tableSection.locator('td.id').allInnerTexts(); - numericIds = ids.map(id => Number.parseInt(id)); + await tableSection.getByRole("button", { name: "id" }).click(); + ids = await tableSection.locator("td.id").allInnerTexts(); + numericIds = ids.map((id) => Number.parseInt(id)); const reverseSortedIds = [...numericIds].sort((a, b) => b - a); expect(numericIds).toEqual(reverseSortedIds); // Test amount in stock column sorting - await tableSection.getByRole('button', { name: 'Amount in stock' }).click(); - const amounts = await tableSection.locator('td.Amount').allInnerTexts(); - const numericAmounts = amounts.map(amount => Number.parseInt(amount)); + await tableSection.getByRole("button", { name: "Amount in stock" }).click(); + const amounts = await tableSection.locator("td.Amount").allInnerTexts(); + const numericAmounts = amounts.map((amount) => Number.parseInt(amount)); const sortedAmounts = [...numericAmounts].sort((a, b) => a - b); expect(numericAmounts).toEqual(sortedAmounts); }); - -test('no console errors on table page', async ({ page }) => { +test("no console errors on table page", async ({ page }) => { const errors: string[] = []; - page.on('console', msg => { - if (msg.type() === 'error') { + page.on("console", (msg) => { + if (msg.type() === "error") { errors.push(msg.text()); } }); - await page.goto(BASE + '/documentation.sql?component=table'); - await page.waitForLoadState('networkidle'); - + await page.goto(`${BASE}/documentation.sql?component=table`); + await page.waitForLoadState("networkidle"); + expect(errors).toHaveLength(0); -}); \ No newline at end of file +}); diff --git a/tests/end-to-end/playwright.config.ts b/tests/end-to-end/playwright.config.ts index 38423e13..5b36286a 100644 --- a/tests/end-to-end/playwright.config.ts +++ b/tests/end-to-end/playwright.config.ts @@ -1,4 +1,4 @@ -import { defineConfig, devices } from '@playwright/test'; +import { defineConfig, devices } from "@playwright/test"; /** * Read environment variables from file. @@ -11,7 +11,7 @@ import { defineConfig, devices } from '@playwright/test'; * See https://playwright.dev/docs/test-configuration. */ export default defineConfig({ - testDir: './.', + testDir: "./.", /* Run tests in files in parallel */ fullyParallel: true, /* Fail the build on CI if you accidentally left test.only in the source code. */ @@ -21,21 +21,21 @@ export default defineConfig({ /* Opt out of parallel tests on CI. */ workers: process.env.CI ? 1 : undefined, /* Reporter to use. See https://playwright.dev/docs/test-reporters */ - reporter: 'html', + reporter: "html", /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ use: { /* Base URL to use in actions like `await page.goto('/')`. */ // baseURL: 'http://127.0.0.1:3000', /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ - trace: 'on-first-retry', + trace: "on-first-retry", }, /* Configure projects for major browsers */ projects: [ { - name: 'chromium', - use: { ...devices['Desktop Chrome'] }, + name: "chromium", + use: { ...devices["Desktop Chrome"] }, }, // {