keycloakify 11.4.0-rc.0 → 11.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/account/i18n/noJsx/getI18n.js +5 -7
- package/account/i18n/noJsx/getI18n.js.map +1 -1
- package/account/i18n/withJsx/useI18n.js +15 -4
- package/account/i18n/withJsx/useI18n.js.map +1 -1
- package/bin/20.index.js +0 -85
- package/bin/33.index.js +55 -212
- package/bin/356.index.js +106 -45
- package/bin/36.index.js +1 -2922
- package/bin/{526.index.js → 392.index.js} +89 -3
- package/bin/40.index.js +1 -86
- package/bin/453.index.js +85 -22
- package/bin/573.index.js +4 -86
- package/bin/653.index.js +752 -0
- package/bin/658.index.js +197 -0
- package/bin/735.index.js +343 -116
- package/bin/786.index.js +78 -14
- package/bin/805.index.js +15 -18
- package/bin/921.index.js +79 -18
- package/bin/97.index.js +64 -13
- package/bin/main.js +165 -86
- package/bin/shared/constants.d.ts +2 -0
- package/bin/shared/constants.js +3 -1
- package/bin/shared/constants.js.map +1 -1
- package/bin/start-keycloak/startViteDevServer.d.ts +7 -0
- package/bin/tools/crawlAsync.d.ts +1 -1
- package/bin/tools/isTrackedByGit.d.ts +3 -0
- package/bin/tools/runPrettier.d.ts +5 -5
- package/bin/tools/untrackFromGit.d.ts +3 -0
- package/lib/getKcClsx.js +1 -2
- package/lib/getKcClsx.js.map +1 -1
- package/login/KcContext/KcContext.d.ts +2 -2
- package/login/KcContext/kcContextMocks.d.ts +1 -1
- package/login/TemplateProps.d.ts +0 -1
- package/login/i18n/noJsx/getI18n.js +5 -7
- package/login/i18n/noJsx/getI18n.js.map +1 -1
- package/login/i18n/withJsx/useI18n.js +15 -4
- package/login/i18n/withJsx/useI18n.js.map +1 -1
- package/login/pages/LoginConfigTotp.js +1 -1
- package/login/pages/LoginConfigTotp.js.map +1 -1
- package/login/pages/LoginPasskeysConditionalAuthenticate.js +16 -18
- package/login/pages/LoginPasskeysConditionalAuthenticate.js.map +1 -1
- package/package.json +17 -7
- package/src/account/i18n/noJsx/getI18n.tsx +5 -7
- package/src/account/i18n/withJsx/useI18n.tsx +18 -4
- package/src/bin/eject-page.ts +28 -10
- package/src/bin/initialize-account-theme/initializeAccountTheme_singlePage.ts +3 -18
- package/src/bin/initialize-account-theme/updateAccountThemeImplementationInConfig.ts +1 -2
- package/src/bin/keycloakify/generateFtl/kcContextDeclarationTemplate.ftl +39 -0
- package/src/bin/keycloakify/generateResources/generateResources.ts +6 -2
- package/src/bin/main.ts +51 -4
- package/src/bin/postinstall/getUiModuleFileSourceCodeReadyToBeCopied.ts +30 -19
- package/src/bin/postinstall/installUiModulesPeerDependencies.ts +3 -3
- package/src/bin/postinstall/managedGitignoreFile.ts +4 -3
- package/src/bin/postinstall/postinstall.ts +24 -2
- package/src/bin/postinstall/uiModuleMeta.ts +14 -9
- package/src/bin/shared/buildContext.ts +1 -2
- package/src/bin/shared/constants.ts +4 -1
- package/src/bin/start-keycloak/myrealm-realm-25.json +21 -34
- package/src/bin/start-keycloak/myrealm-realm-26.json +32 -35
- package/src/bin/start-keycloak/start-keycloak.ts +93 -1
- package/src/bin/start-keycloak/startViteDevServer.ts +39 -0
- package/src/bin/tools/crawlAsync.ts +6 -6
- package/src/bin/tools/isTrackedByGit.ts +29 -0
- package/src/bin/tools/listInstalledModules.ts +1 -2
- package/src/bin/tools/npmInstall.ts +396 -1
- package/src/bin/tools/runPrettier.ts +63 -14
- package/src/bin/tools/untrackFromGit.ts +24 -0
- package/src/bin/tsconfig.json +1 -1
- package/src/bin/update-kc-gen.ts +17 -2
- package/src/lib/getKcClsx.ts +1 -2
- package/src/login/KcContext/KcContext.ts +2 -2
- package/src/login/KcContext/kcContextMocks.ts +1 -1
- package/src/login/TemplateProps.ts +0 -1
- package/src/login/i18n/noJsx/getI18n.tsx +5 -7
- package/src/login/i18n/withJsx/useI18n.tsx +18 -4
- package/src/login/pages/LoginConfigTotp.tsx +18 -20
- package/src/login/pages/LoginPasskeysConditionalAuthenticate.tsx +51 -52
- package/src/tools/StatefulObservable/StatefulObservable.ts +1 -2
- package/src/tools/deepAssign.ts +1 -2
- package/src/tools/extractLastParenthesisContent.ts +43 -0
- package/src/vite-plugin/vite-plugin.ts +67 -0
- package/stories/login/pages/Info.stories.tsx +3 -39
- package/tools/StatefulObservable/StatefulObservable.js +1 -2
- package/tools/StatefulObservable/StatefulObservable.js.map +1 -1
- package/tools/deepAssign.js +1 -2
- package/tools/deepAssign.js.map +1 -1
- package/tools/extractLastParenthesisContent.d.ts +6 -0
- package/tools/extractLastParenthesisContent.js +36 -0
- package/tools/extractLastParenthesisContent.js.map +1 -0
- package/vite-plugin/index.js +326 -186
- package/bin/124.index.js +0 -348
- package/stories/login/pages/LoginDeviceVerifyUserCode.stories.tsx +0 -18
package/src/bin/main.ts
CHANGED
@@ -5,6 +5,9 @@ import { readThisNpmPackageVersion } from "./tools/readThisNpmPackageVersion";
|
|
5
5
|
import * as child_process from "child_process";
|
6
6
|
import { assertNoPnpmDlx } from "./tools/assertNoPnpmDlx";
|
7
7
|
import { getBuildContext } from "./shared/buildContext";
|
8
|
+
import { SemVer } from "./tools/SemVer";
|
9
|
+
import { assert, is } from "tsafe/assert";
|
10
|
+
import chalk from "chalk";
|
8
11
|
|
9
12
|
type CliCommandOptions = {
|
10
13
|
projectDirPath: string | undefined;
|
@@ -80,7 +83,7 @@ program
|
|
80
83
|
program
|
81
84
|
.command<{
|
82
85
|
port: number | undefined;
|
83
|
-
keycloakVersion: string | undefined;
|
86
|
+
keycloakVersion: string | number | undefined;
|
84
87
|
realmJsonFilePath: string | undefined;
|
85
88
|
}>({
|
86
89
|
name: "start-keycloak",
|
@@ -134,9 +137,50 @@ program
|
|
134
137
|
handler: async ({ projectDirPath, keycloakVersion, port, realmJsonFilePath }) => {
|
135
138
|
const { command } = await import("./start-keycloak");
|
136
139
|
|
140
|
+
validate_keycloak_version: {
|
141
|
+
if (keycloakVersion === undefined) {
|
142
|
+
break validate_keycloak_version;
|
143
|
+
}
|
144
|
+
|
145
|
+
const isValidVersion = (() => {
|
146
|
+
if (typeof keycloakVersion === "number") {
|
147
|
+
return false;
|
148
|
+
}
|
149
|
+
|
150
|
+
try {
|
151
|
+
SemVer.parse(keycloakVersion);
|
152
|
+
} catch {
|
153
|
+
return false;
|
154
|
+
}
|
155
|
+
|
156
|
+
return;
|
157
|
+
})();
|
158
|
+
|
159
|
+
if (isValidVersion) {
|
160
|
+
break validate_keycloak_version;
|
161
|
+
}
|
162
|
+
|
163
|
+
console.log(
|
164
|
+
chalk.red(
|
165
|
+
[
|
166
|
+
`Invalid Keycloak version: ${keycloakVersion}`,
|
167
|
+
"It should be a valid semver version example: 26.0.4"
|
168
|
+
].join(" ")
|
169
|
+
)
|
170
|
+
);
|
171
|
+
|
172
|
+
process.exit(1);
|
173
|
+
}
|
174
|
+
|
175
|
+
assert(is<string | undefined>(keycloakVersion));
|
176
|
+
|
137
177
|
await command({
|
138
178
|
buildContext: getBuildContext({ projectDirPath }),
|
139
|
-
cliCommandOptions: {
|
179
|
+
cliCommandOptions: {
|
180
|
+
keycloakVersion,
|
181
|
+
port,
|
182
|
+
realmJsonFilePath
|
183
|
+
}
|
140
184
|
});
|
141
185
|
}
|
142
186
|
});
|
@@ -201,7 +245,7 @@ program
|
|
201
245
|
.command({
|
202
246
|
name: "copy-keycloak-resources-to-public",
|
203
247
|
description:
|
204
|
-
"(
|
248
|
+
"(Internal) Copy Keycloak default theme resources to the public directory."
|
205
249
|
})
|
206
250
|
.task({
|
207
251
|
skip,
|
@@ -246,7 +290,10 @@ program
|
|
246
290
|
file: string;
|
247
291
|
}>({
|
248
292
|
name: "eject-file",
|
249
|
-
description:
|
293
|
+
description: [
|
294
|
+
"WARNING: Not usable yet, will be used for future features",
|
295
|
+
"Take ownership over a given file"
|
296
|
+
].join(" ")
|
250
297
|
})
|
251
298
|
.option({
|
252
299
|
key: "file",
|
@@ -32,27 +32,38 @@ export async function getUiModuleFileSourceCodeReadyToBeCopied(params: {
|
|
32
32
|
await fsPr.readFile(pathJoin(uiModuleDirPath, KEYCLOAK_THEME, fileRelativePath))
|
33
33
|
).toString("utf8");
|
34
34
|
|
35
|
-
const
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
].join("\n");
|
42
|
-
}
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
``,
|
47
|
-
`npx keycloakify eject-file --file ${fileRelativePath.split(pathSep).join("/")}\``,
|
48
|
-
``,
|
49
|
-
`This file comes from ${uiModuleName} version ${uiModuleVersion}.`,
|
50
|
-
`*/`
|
51
|
-
];
|
35
|
+
const toComment = (lines: string[]) => {
|
36
|
+
for (const ext of [".ts", ".tsx", ".css", ".less", ".sass", ".js", ".jsx"]) {
|
37
|
+
if (!fileRelativePath.endsWith(ext)) {
|
38
|
+
continue;
|
39
|
+
}
|
40
|
+
|
41
|
+
return [`/**`, ...lines.map(line => ` * ${line}`), ` */`].join("\n");
|
42
|
+
}
|
43
|
+
|
44
|
+
if (fileRelativePath.endsWith(".html")) {
|
45
|
+
return [`<!--`, ...lines.map(line => ` ${line}`), `-->`].join("\n");
|
52
46
|
}
|
53
|
-
})();
|
54
47
|
|
55
|
-
|
48
|
+
return undefined;
|
49
|
+
};
|
50
|
+
|
51
|
+
const comment = toComment(
|
52
|
+
isForEjection
|
53
|
+
? [`This file was ejected from ${uiModuleName} version ${uiModuleVersion}.`]
|
54
|
+
: [
|
55
|
+
`WARNING: Before modifying this file run the following command:`,
|
56
|
+
``,
|
57
|
+
`$ npx keycloakify eject-file --file ${fileRelativePath.split(pathSep).join("/")}`,
|
58
|
+
``,
|
59
|
+
`This file comes from ${uiModuleName} version ${uiModuleVersion}.`,
|
60
|
+
`This file has been copied over to your repo by your postinstall script: \`npx keycloakify postinstall\``
|
61
|
+
]
|
62
|
+
);
|
63
|
+
|
64
|
+
if (comment !== undefined) {
|
65
|
+
sourceCode = [comment, ``, sourceCode].join("\n");
|
66
|
+
}
|
56
67
|
|
57
68
|
const destFilePath = pathJoin(buildContext.themeSrcDirPath, fileRelativePath);
|
58
69
|
|
@@ -1,5 +1,4 @@
|
|
1
|
-
import { assert, type Equals } from "tsafe/assert";
|
2
|
-
import { is } from "tsafe/is";
|
1
|
+
import { assert, type Equals, is } from "tsafe/assert";
|
3
2
|
import type { BuildContext } from "../shared/buildContext";
|
4
3
|
import type { UiModuleMeta } from "./uiModuleMeta";
|
5
4
|
import { z } from "zod";
|
@@ -9,6 +8,7 @@ import { SemVer } from "../tools/SemVer";
|
|
9
8
|
import { same } from "evt/tools/inDepth/same";
|
10
9
|
import { runPrettier, getIsPrettierAvailable } from "../tools/runPrettier";
|
11
10
|
import { npmInstall } from "../tools/npmInstall";
|
11
|
+
import { dirname as pathDirname } from "path";
|
12
12
|
|
13
13
|
export type BuildContextLike = {
|
14
14
|
packageJsonFilePath: string;
|
@@ -150,7 +150,7 @@ export async function installUiModulesPeerDependencies(params: {
|
|
150
150
|
await fsPr.writeFile(buildContext.packageJsonFilePath, packageJsonContentStr);
|
151
151
|
|
152
152
|
npmInstall({
|
153
|
-
packageJsonDirPath: buildContext.packageJsonFilePath
|
153
|
+
packageJsonDirPath: pathDirname(buildContext.packageJsonFilePath)
|
154
154
|
});
|
155
155
|
|
156
156
|
process.exit(0);
|
@@ -38,9 +38,9 @@ export async function writeManagedGitignoreFile(params: {
|
|
38
38
|
`# This file is managed by Keycloakify, do not edit it manually.`,
|
39
39
|
``,
|
40
40
|
DELIMITER_START,
|
41
|
-
...ejectedFilesRelativePaths
|
42
|
-
fileRelativePath.split(pathSep).join("/")
|
43
|
-
|
41
|
+
...ejectedFilesRelativePaths
|
42
|
+
.map(fileRelativePath => fileRelativePath.split(pathSep).join("/"))
|
43
|
+
.map(line => `# ${line}`),
|
44
44
|
DELIMITER_END,
|
45
45
|
``,
|
46
46
|
...uiModuleMetas
|
@@ -122,6 +122,7 @@ export async function readManagedGitignoreFile(params: {
|
|
122
122
|
const ejectedFilesRelativePaths = payload
|
123
123
|
.split("\n")
|
124
124
|
.map(line => line.trim())
|
125
|
+
.map(line => line.replace(/^# /, ""))
|
125
126
|
.filter(line => line !== "")
|
126
127
|
.map(line =>
|
127
128
|
getAbsoluteAndInOsFormatPath({
|
@@ -9,6 +9,8 @@ import { dirname as pathDirname } from "path";
|
|
9
9
|
import { join as pathJoin } from "path";
|
10
10
|
import { existsAsync } from "../tools/fs.existsAsync";
|
11
11
|
import * as fsPr from "fs/promises";
|
12
|
+
import { getIsTrackedByGit } from "../tools/isTrackedByGit";
|
13
|
+
import { untrackFromGit } from "../tools/untrackFromGit";
|
12
14
|
|
13
15
|
export async function command(params: { buildContext: BuildContext }) {
|
14
16
|
const { buildContext } = params;
|
@@ -45,8 +47,10 @@ export async function command(params: { buildContext: BuildContext }) {
|
|
45
47
|
fileRelativePath
|
46
48
|
);
|
47
49
|
|
50
|
+
const doesFileExist = await existsAsync(destFilePath);
|
51
|
+
|
48
52
|
skip_condition: {
|
49
|
-
if (!
|
53
|
+
if (!doesFileExist) {
|
50
54
|
break skip_condition;
|
51
55
|
}
|
52
56
|
|
@@ -61,8 +65,26 @@ export async function command(params: { buildContext: BuildContext }) {
|
|
61
65
|
return;
|
62
66
|
}
|
63
67
|
|
68
|
+
git_untrack: {
|
69
|
+
if (!doesFileExist) {
|
70
|
+
break git_untrack;
|
71
|
+
}
|
72
|
+
|
73
|
+
const isTracked = await getIsTrackedByGit({
|
74
|
+
filePath: destFilePath
|
75
|
+
});
|
76
|
+
|
77
|
+
if (!isTracked) {
|
78
|
+
break git_untrack;
|
79
|
+
}
|
80
|
+
|
81
|
+
await untrackFromGit({
|
82
|
+
filePath: destFilePath
|
83
|
+
});
|
84
|
+
}
|
85
|
+
|
64
86
|
{
|
65
|
-
const dirName = pathDirname(
|
87
|
+
const dirName = pathDirname(destFilePath);
|
66
88
|
|
67
89
|
if (!(await existsAsync(dirName))) {
|
68
90
|
await fsPr.mkdir(dirName, { recursive: true });
|
@@ -1,14 +1,13 @@
|
|
1
|
-
import { assert, type Equals } from "tsafe/assert";
|
1
|
+
import { assert, type Equals, is } from "tsafe/assert";
|
2
2
|
import { id } from "tsafe/id";
|
3
3
|
import { z } from "zod";
|
4
4
|
import { join as pathJoin, dirname as pathDirname } from "path";
|
5
5
|
import * as fsPr from "fs/promises";
|
6
6
|
import type { BuildContext } from "../shared/buildContext";
|
7
|
-
import { is } from "tsafe/is";
|
8
7
|
import { existsAsync } from "../tools/fs.existsAsync";
|
9
8
|
import { listInstalledModules } from "../tools/listInstalledModules";
|
10
9
|
import { crawlAsync } from "../tools/crawlAsync";
|
11
|
-
import { getIsPrettierAvailable,
|
10
|
+
import { getIsPrettierAvailable, getPrettier } from "../tools/runPrettier";
|
12
11
|
import { readThisNpmPackageVersion } from "../tools/readThisNpmPackageVersion";
|
13
12
|
import {
|
14
13
|
getUiModuleFileSourceCodeReadyToBeCopied,
|
@@ -16,6 +15,7 @@ import {
|
|
16
15
|
} from "./getUiModuleFileSourceCodeReadyToBeCopied";
|
17
16
|
import * as crypto from "crypto";
|
18
17
|
import { KEYCLOAK_THEME } from "../shared/constants";
|
18
|
+
import { exclude } from "tsafe/exclude";
|
19
19
|
|
20
20
|
export type UiModuleMeta = {
|
21
21
|
moduleName: string;
|
@@ -100,9 +100,9 @@ export async function getUiModuleMetas(params: {
|
|
100
100
|
return null;
|
101
101
|
}
|
102
102
|
|
103
|
-
const {
|
103
|
+
const { configHash } = await getPrettier();
|
104
104
|
|
105
|
-
return
|
105
|
+
return configHash;
|
106
106
|
})();
|
107
107
|
|
108
108
|
const installedUiModules = await (async () => {
|
@@ -113,11 +113,16 @@ export async function getUiModuleMetas(params: {
|
|
113
113
|
moduleName.includes("keycloakify") && moduleName !== "keycloakify"
|
114
114
|
});
|
115
115
|
|
116
|
-
return
|
117
|
-
|
118
|
-
|
116
|
+
return (
|
117
|
+
await Promise.all(
|
118
|
+
installedModulesWithKeycloakifyInTheName.map(async entry => {
|
119
|
+
if (!(await existsAsync(pathJoin(entry.dirPath, KEYCLOAK_THEME)))) {
|
120
|
+
return undefined;
|
121
|
+
}
|
122
|
+
return entry;
|
123
|
+
})
|
119
124
|
)
|
120
|
-
);
|
125
|
+
).filter(exclude(undefined));
|
121
126
|
})();
|
122
127
|
|
123
128
|
const cacheContent = await (async () => {
|
@@ -9,7 +9,7 @@ import {
|
|
9
9
|
import { getAbsoluteAndInOsFormatPath } from "../tools/getAbsoluteAndInOsFormatPath";
|
10
10
|
import { z } from "zod";
|
11
11
|
import * as fs from "fs";
|
12
|
-
import { assert, type Equals } from "tsafe/assert";
|
12
|
+
import { assert, type Equals, is } from "tsafe/assert";
|
13
13
|
import * as child_process from "child_process";
|
14
14
|
import {
|
15
15
|
VITE_PLUGIN_SUB_SCRIPTS_ENV_NAMES,
|
@@ -23,7 +23,6 @@ import { objectEntries } from "tsafe/objectEntries";
|
|
23
23
|
import { id } from "tsafe/id";
|
24
24
|
import chalk from "chalk";
|
25
25
|
import { getProxyFetchOptions, type FetchOptionsLike } from "../tools/fetchProxyOptions";
|
26
|
-
import { is } from "tsafe/is";
|
27
26
|
|
28
27
|
export type BuildContext = {
|
29
28
|
themeVersion: string;
|
@@ -10,7 +10,8 @@ export type ThemeType = (typeof THEME_TYPES)[number];
|
|
10
10
|
|
11
11
|
export const VITE_PLUGIN_SUB_SCRIPTS_ENV_NAMES = {
|
12
12
|
RUN_POST_BUILD_SCRIPT: "KEYCLOAKIFY_RUN_POST_BUILD_SCRIPT",
|
13
|
-
RESOLVE_VITE_CONFIG: "KEYCLOAKIFY_RESOLVE_VITE_CONFIG"
|
13
|
+
RESOLVE_VITE_CONFIG: "KEYCLOAKIFY_RESOLVE_VITE_CONFIG",
|
14
|
+
READ_KC_CONTEXT_FROM_URL: "KEYCLOAKIFY_READ_KC_CONTEXT_FROM_URL"
|
14
15
|
} as const;
|
15
16
|
|
16
17
|
export const BUILD_FOR_KEYCLOAK_MAJOR_VERSION_ENV_NAME =
|
@@ -78,3 +79,5 @@ export const CUSTOM_HANDLER_ENV_NAMES = {
|
|
78
79
|
};
|
79
80
|
|
80
81
|
export const KEYCLOAK_THEME = "keycloak-theme";
|
82
|
+
|
83
|
+
export const KEYCLOAKIFY_SPA_DEV_SERVER_PORT = "KEYCLOAKIFY_SPA_DEV_SERVER_PORT";
|
@@ -628,14 +628,16 @@
|
|
628
628
|
"id": "d8f14dc4-5f0f-4a1d-8c0b-cfe78ee55cb3",
|
629
629
|
"clientId": "account-console",
|
630
630
|
"name": "${client_account-console}",
|
631
|
+
"description": "",
|
631
632
|
"rootUrl": "${authBaseUrl}",
|
633
|
+
"adminUrl": "",
|
632
634
|
"baseUrl": "/realms/myrealm/account/",
|
633
635
|
"surrogateAuthRequired": false,
|
634
636
|
"enabled": true,
|
635
637
|
"alwaysDisplayInConsole": false,
|
636
638
|
"clientAuthenticatorType": "client-secret",
|
637
|
-
"redirectUris": ["
|
638
|
-
"webOrigins": [],
|
639
|
+
"redirectUris": ["*"],
|
640
|
+
"webOrigins": ["*"],
|
639
641
|
"notBefore": 0,
|
640
642
|
"bearerOnly": false,
|
641
643
|
"consentRequired": false,
|
@@ -647,8 +649,13 @@
|
|
647
649
|
"frontchannelLogout": false,
|
648
650
|
"protocol": "openid-connect",
|
649
651
|
"attributes": {
|
652
|
+
"oidc.ciba.grant.enabled": "false",
|
653
|
+
"backchannel.logout.session.required": "true",
|
650
654
|
"post.logout.redirect.uris": "+",
|
651
|
-
"
|
655
|
+
"oauth2.device.authorization.grant.enabled": "false",
|
656
|
+
"display.on.consent.screen": "false",
|
657
|
+
"pkce.code.challenge.method": "S256",
|
658
|
+
"backchannel.logout.revoke.offline.tokens": "false"
|
652
659
|
},
|
653
660
|
"authenticationFlowBindingOverrides": {},
|
654
661
|
"fullScopeAllowed": false,
|
@@ -1574,14 +1581,14 @@
|
|
1574
1581
|
"subComponents": {},
|
1575
1582
|
"config": {
|
1576
1583
|
"allowed-protocol-mapper-types": [
|
1584
|
+
"oidc-sha256-pairwise-sub-mapper",
|
1577
1585
|
"oidc-full-name-mapper",
|
1578
|
-
"oidc-usermodel-attribute-mapper",
|
1579
|
-
"oidc-address-mapper",
|
1580
|
-
"saml-user-attribute-mapper",
|
1581
1586
|
"oidc-usermodel-property-mapper",
|
1582
|
-
"saml-user-property-mapper",
|
1583
1587
|
"saml-role-list-mapper",
|
1584
|
-
"
|
1588
|
+
"saml-user-attribute-mapper",
|
1589
|
+
"saml-user-property-mapper",
|
1590
|
+
"oidc-usermodel-attribute-mapper",
|
1591
|
+
"oidc-address-mapper"
|
1585
1592
|
]
|
1586
1593
|
}
|
1587
1594
|
},
|
@@ -1612,13 +1619,13 @@
|
|
1612
1619
|
"config": {
|
1613
1620
|
"allowed-protocol-mapper-types": [
|
1614
1621
|
"oidc-sha256-pairwise-sub-mapper",
|
1615
|
-
"
|
1616
|
-
"oidc-address-mapper",
|
1622
|
+
"saml-user-property-mapper",
|
1617
1623
|
"oidc-usermodel-attribute-mapper",
|
1618
|
-
"oidc-
|
1624
|
+
"oidc-address-mapper",
|
1625
|
+
"saml-role-list-mapper",
|
1626
|
+
"oidc-usermodel-property-mapper",
|
1619
1627
|
"saml-user-attribute-mapper",
|
1620
|
-
"
|
1621
|
-
"saml-role-list-mapper"
|
1628
|
+
"oidc-full-name-mapper"
|
1622
1629
|
]
|
1623
1630
|
}
|
1624
1631
|
},
|
@@ -1671,13 +1678,6 @@
|
|
1671
1678
|
"providerId": "rsa-generated",
|
1672
1679
|
"subComponents": {},
|
1673
1680
|
"config": {
|
1674
|
-
"privateKey": [
|
1675
|
-
"MIIEowIBAAKCAQEAsYUWzVfZMd6ywpBmLJYeF1U9Mgd/z3xWvl1Yq76oRPPfpcqQitN+cktWqu0hPerCVSl2ltwXDMrUwFzswG9MiM9hb+BLEld7kYiYkcFNt3lCtmmeRQEae7JwWimzeNV96Qlz0tHY8f9Zh0ffPDsLTN1HGAeRJJhI7mNQm6qCJNMCfVA/O5SWumsIn2XLnSMiQ05AACVHOLUq6rAZ2zCCaYmXTmJkuSOb8e26V303P6l63DSe5HSNXDdI00tjfFFf37q870zhvfsotrjjx0RMijy9Kjj8OZF+pFHpDRaGEi8tpQxZDnCTofTieB/Vp3QP+aTlvAyD3Q1ZnJxGQCLygwIDAQABAoIBABUJ9XMJGNQzamiVwuOWN7ht4UP8ezYvgdEA8NaLUO0PIYVIKyD7l4OwkHPPM9PfRACM2qG0MZp8sCyg4WxIeepy+D979oRqJYUmNRLSipqWlASuItRXIPjiY99uYXdjh2R8Os5pvCD+MZxPX9KHGuaVXmzSJMO7YAAPeYkMHcLYTp/U0c65Ztaaz1zz1FeyvpjkLr9SHiMcIN51zFmhvT1tcRIqy4zidisjrTSUr/KPVxeJtrEfyhTGk3z41yJf5YbeaxaMjJR5x0WXzt1fWVmA/V1bWa2Zlj9d8AxDReA1p7Lpstz34PRoCMj9bmFguI2+RTw6K0D++Jydfxmh8vUCgYEA5Zwk2r3TFO3i3V70LOn6CLzn15yLeuSIJ9p2os70jQOmFMCreLdcUbCaiUe7UV/IIVftbcxhFm9zECXZXX0wubcmHZqyptlbuAn1de4QkLJixXo1A7ZQXBEZk22WN2naXHQF5oK6lh/VSLcZBajTsyvBm5JWXrd8djjG06MugA8CgYEAxexKI5IwcLhpMDV9UPQb/+lDWHVqCT2xwYxnZ85y+5gmrOyyT7mIChz3DFYiaw4CHJWmBkIDBaiDgLEgQk4QXWzYshXawShBHnv1h08bVMMw98Ivec7ZRkV+/ET30YRwC2Uyk4bm4HpwVV5GCFhC4aAvRcCA1CIJk3MwcOwksk0CgYEAqxyaOomMbOR7VQ4WWgJkW26sOHppV8RH06tzDhG9HfnCI2USZHwBSL+b6wKSDiqbMn4cat8M23NjBH2wZ4OMdFqRBS7sRHtnZtfFHYW0wqCuCwzvxTxw1qvHq57Xe6RfHtc4LnjuJELE59PLyfPvEG9jcVS1GREUp+XYBpBtbvECgYAMhWBDU9JAr0noRNoCrw6+Z9Fc3UCyCPcf2XQJOyRHCl8X/XliVchna2GtpB1VTHORv13bc32hdAGtuIbj6vBaGLK0wXEvWw6TkR/9SWHfQOHuKpi6Sf2w1mCsMOjElm5IKkTC1Hvyo4xLukUP7hV9FJcpAH6l7OlSLK1Z13aS2QKBgB6w4gvmVEQruHV5+K60OatuFojr+kxJwmzCb5uKOULUFezT2pA3p3l6IWxGL2XtM+LD0SiZE3KZJUzf+LatYlBU9ek4F1krkVNUTRZpzUa0oADbymCL1chM4oPIs7sISQlFIH2wOSZt6Blvcw0E0wfjd9Gv/LHxcMnlRb1t1sLk"
|
1676
|
-
],
|
1677
|
-
"keyUse": ["SIG"],
|
1678
|
-
"certificate": [
|
1679
|
-
"MIICnTCCAYUCBgGQBsyplzANBgkqhkiG9w0BAQsFADASMRAwDgYDVQQDDAdteXJlYWxtMB4XDTI0MDYxMTEwMTQ1NFoXDTM0MDYxMTEwMTYzNFowEjEQMA4GA1UEAwwHbXlyZWFsbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALGFFs1X2THessKQZiyWHhdVPTIHf898Vr5dWKu+qETz36XKkIrTfnJLVqrtIT3qwlUpdpbcFwzK1MBc7MBvTIjPYW/gSxJXe5GImJHBTbd5QrZpnkUBGnuycFops3jVfekJc9LR2PH/WYdH3zw7C0zdRxgHkSSYSO5jUJuqgiTTAn1QPzuUlrprCJ9ly50jIkNOQAAlRzi1KuqwGdswgmmJl05iZLkjm/Htuld9Nz+petw0nuR0jVw3SNNLY3xRX9+6vO9M4b37KLa448dETIo8vSo4/DmRfqRR6Q0WhhIvLaUMWQ5wk6H04ngf1ad0D/mk5bwMg90NWZycRkAi8oMCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAVS+gJshIFX6cmBGI8UaOOI/9+XFb4Gi+DHaHVWVVHTd14MoqNK1bmmyTHbGIZbvK8UqgJ9+FhJX1ejx17d4KBzkZI3tYvPnVacHvaw1CIUMZ1Ini6u+UGUTnIlnQzCG0pcTKjOZXf3ih1B2CKdwyC7XeXyEJHicAIG7XfzYfYd9DYHvA+h6hrXaQcNJMW7WFNbtb3fJhtlv5P1Iw+ZEGdj15ukMI0bg2OEQA0F3jIw6QZpigSAGuai3HOY6OgoPO82d7TyTYlNhuwyutWr9izl6QMc2R7BmRfW9XQj4ICR2VWJiL9nqz+SOyqnjQiOObuw8Vywb8c36R1Ym1aaGjOw=="
|
1680
|
-
],
|
1681
1681
|
"priority": ["100"]
|
1682
1682
|
}
|
1683
1683
|
},
|
@@ -1687,13 +1687,6 @@
|
|
1687
1687
|
"providerId": "rsa-enc-generated",
|
1688
1688
|
"subComponents": {},
|
1689
1689
|
"config": {
|
1690
|
-
"privateKey": [
|
1691
|
-
"MIIEogIBAAKCAQEAkQtefHy82e8d5dVWN00LnGI5YmBOTKh0tgqayVRjqLH6u3NfgJVVIe0tFnxa7Wka/ySHrn1KSsW52czZ4uPXLUo4sXBkQxyyFXeZiWN8H+9WiUQ+0hefZF4es5ZPhY2VpeMK9XAnphC362LFLVycXulkpJcQ+4DjI99To4LLyJmjQvsVaJ7amoVJ5xd62eUv+D7f2+jwuaTwjGE3+MWZADXjVxsUY1qJuGLGKnLkNNxJNMDhvnKYw+aa3Z4V90fQVyjN1Volgw3DdA59o4wrWEy+2xHc6j2ESi8+cM60fWzZU9sp2XkyJoCnV7nmwk7pZkDy3zvAkeOWzrr3OWeR3wIDAQABAoIBACWMcet8R0+L7YuATQ+H7IeRjhV/pQWHXp9541RXem1DlgtM9N5Oynk78z4s90Uavphqlo1/deohgdl2hLmODjh1THPzCqGtHhUcnyzICmwiA58JgdHVt7e9/eiz8uY6HxGQ01dyr3D4RwSyzyTNItYXSayqRwU0+phgykA8LhFCAQM/UkRXDf6UCFKBhDyE7VPBaDv0xyxNb7dKtE7C6Qo5t5D40xCfQ8ni8OcD5RvshQq5xOWcw7igxAhlmXCu1fuO2CDiSiqXLMENs4NlwilQ3caMXAIzUiblaKwCrrK2noBoitx6vuOR2tKmIZSlTyDAG4vLQQtOHk53hBoupGECgYEAx4jSmLM9uUzNwNY1zfs8iNswxbU3YibNe2Q+IFmOQofvTaq1jBBxdPWX5ifIbuTvOAA33pmJRh+BtWzOBBQC7Z4i9mdfvyWB6s8t9nnTnWIY5Hj+hV5gaqae59MjdudsORR887fxzPIeAwwaETfKaZnYpC6zLaE3BXwhIcjlFTcCgYEAuhcKf16JkEYNIwanVHpUXjFxwAThAogHWZAngRokmai67Iulx+rSUhhtOIXtmjj/EaObsrqo5yCKAVZ5EbPTOajdd9RtFzH6q3bRjRdp8o8ZVx4c1vMNaOnLbvK4YzJlKSZN9N7m255Mg+/ea3veKVZsSVHDMnuYmH8GjncjPJkCgYAOIUlQmPjZA3BapJDA2nbJ9kO47IFUiQzqHQotPkpNudSfemRK2+s87htoqA6Qk9PA8nsCX3sSJS8JSwA317bxXs55Bo8IOT6/AxbtKmlq7sR2gX78sNdBFjWQkyoixHasgB/tHmyYJ9kqPBQoffvuiH+H+OqlY5JC6CxseQ6H9wKBgF69Hj4MDjLiRwve9k9+2/b8azHcCgX05PEG/+WtPpbwHQIScnseJKdhAjH1lSqf+9OqHLlYaGcK3Nejg42spEvFmcLI5iUZ78lde3++PNUdX0RH81zHbrtL06MPdSojXPcfJi8VUCjdJY1CEFVeQZOACS8mrh7EZ8KzYM4k/055AoGAYqjBv3WS8ul7kAsjpZKpIw1QZZaTjBSmLpjB6X8InF+Zihjgm80Dd4RMFnMnEawhFBvnpklvyw5Ce6NSwcC137kN3NVpJypykkXuYkimg7OxgJjR7YFdbQWJWlc+1eB81WTHcEOHVI/DmeV2yVJcv6kA2iC+3/JA0VoJxvrRBKc="
|
1692
|
-
],
|
1693
|
-
"keyUse": ["ENC"],
|
1694
|
-
"certificate": [
|
1695
|
-
"MIICnTCCAYUCBgGQBsyq0jANBgkqhkiG9w0BAQsFADASMRAwDgYDVQQDDAdteXJlYWxtMB4XDTI0MDYxMTEwMTQ1NFoXDTM0MDYxMTEwMTYzNFowEjEQMA4GA1UEAwwHbXlyZWFsbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJELXnx8vNnvHeXVVjdNC5xiOWJgTkyodLYKmslUY6ix+rtzX4CVVSHtLRZ8Wu1pGv8kh659SkrFudnM2eLj1y1KOLFwZEMcshV3mYljfB/vVolEPtIXn2ReHrOWT4WNlaXjCvVwJ6YQt+tixS1cnF7pZKSXEPuA4yPfU6OCy8iZo0L7FWie2pqFSecXetnlL/g+39vo8Lmk8IxhN/jFmQA141cbFGNaibhixipy5DTcSTTA4b5ymMPmmt2eFfdH0FcozdVaJYMNw3QOfaOMK1hMvtsR3Oo9hEovPnDOtH1s2VPbKdl5MiaAp1e55sJO6WZA8t87wJHjls669zlnkd8CAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAD9wQ+CJ0FRgls3JrUzxwHLgrJ3Yo4+mDFpSe1rh2XYK5FEIWDWSqxaXI3p0cOZq75RZmI2xV8oaiJMUz9WMZkbNe/KtGRzHY1N9AZooicGIsnFu1t++b8taFxxpvKWZgnbOum2PZlfcNiXL0QeMv0wwhfn9zKA9W1DRcqYGbIamoyVlumvbNyIjqXJKwGYIOW6GNt7v3wJl5AJw8qAU/O/DQwWwmzcnFGNRxRxAwI7we8EiQ5JlG0Wi+nyAQn74o3RhNr3zsY0ndmFx9bFV4BBo2AiYGozCDOCCG5HvrmoDbrm//wmGRv0tCwueBzWHL2mhtbZ6sGWmMWfiTJ2HPpg=="
|
1696
|
-
],
|
1697
1690
|
"priority": ["100"],
|
1698
1691
|
"algorithm": ["RSA-OAEP"]
|
1699
1692
|
}
|
@@ -1704,8 +1697,6 @@
|
|
1704
1697
|
"providerId": "aes-generated",
|
1705
1698
|
"subComponents": {},
|
1706
1699
|
"config": {
|
1707
|
-
"kid": ["1c1d0c8a-6f0b-48a9-a66f-488489137d85"],
|
1708
|
-
"secret": ["N4wzheVYYBWxFn9VGWTPQQ"],
|
1709
1700
|
"priority": ["100"]
|
1710
1701
|
}
|
1711
1702
|
},
|
@@ -1715,10 +1706,6 @@
|
|
1715
1706
|
"providerId": "hmac-generated",
|
1716
1707
|
"subComponents": {},
|
1717
1708
|
"config": {
|
1718
|
-
"kid": ["ce43821c-6cfd-4ea9-a29a-a724a37e6955"],
|
1719
|
-
"secret": [
|
1720
|
-
"j_8WeQHYt5R6coay0IOUeu9hGvCoJsgnENSoYm0gDlDx6IHOg-f6p17QIaesNmgrzXtJDRpYMhSjpTMHOnHCHLxwUM4eVg9TcszffndB850Yj3PHPeCc5aoHcpYzWN9NDZZ02nBYA04nfbkdlLXiGlpS3I3e502e4DX3rFtbFZ0"
|
1721
|
-
],
|
1722
1709
|
"priority": ["100"],
|
1723
1710
|
"algorithm": ["HS512"]
|
1724
1711
|
}
|
@@ -2388,7 +2375,7 @@
|
|
2388
2375
|
"clientSessionMaxLifespan": "0",
|
2389
2376
|
"organizationsEnabled": "false"
|
2390
2377
|
},
|
2391
|
-
"keycloakVersion": "25.0.
|
2378
|
+
"keycloakVersion": "25.0.6",
|
2392
2379
|
"userManagedAccessAllowed": false,
|
2393
2380
|
"organizationsEnabled": false,
|
2394
2381
|
"clientProfiles": {
|