@decaf-ts/integrations 0.2.1 → 0.3.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/dist/integrations.cjs +1 -1
- package/dist/integrations.cjs.map +1 -1
- package/dist/integrations.js +1 -1
- package/dist/integrations.js.map +1 -1
- package/lib/cjs/index.cjs +3 -3
- package/lib/cjs/keycloak/services/KeycloakRoleService.cjs +25 -0
- package/lib/cjs/keycloak/services/KeycloakRoleService.cjs.map +1 -1
- package/lib/cjs/keycloak/services/KeycloakService.cjs +29 -0
- package/lib/cjs/keycloak/services/KeycloakService.cjs.map +1 -1
- package/lib/cjs/nest/authService.cjs +53 -2
- package/lib/cjs/nest/authService.cjs.map +1 -1
- package/lib/cjs/nest/keycloakAuthHandler.cjs +13 -6
- package/lib/cjs/nest/keycloakAuthHandler.cjs.map +1 -1
- package/lib/cjs/nest/keycloakModule.cjs +5 -3
- package/lib/cjs/nest/keycloakModule.cjs.map +1 -1
- package/lib/cjs/nest/utils.cjs +24 -0
- package/lib/cjs/nest/utils.cjs.map +1 -1
- package/lib/cjs/utils.cjs +1 -1
- package/lib/esm/index.js +3 -3
- package/lib/esm/keycloak/services/KeycloakRoleService.js +25 -0
- package/lib/esm/keycloak/services/KeycloakRoleService.js.map +1 -1
- package/lib/esm/keycloak/services/KeycloakService.js +30 -1
- package/lib/esm/keycloak/services/KeycloakService.js.map +1 -1
- package/lib/esm/nest/authService.js +54 -3
- package/lib/esm/nest/authService.js.map +1 -1
- package/lib/esm/nest/keycloakAuthHandler.js +13 -6
- package/lib/esm/nest/keycloakAuthHandler.js.map +1 -1
- package/lib/esm/nest/keycloakModule.js +5 -3
- package/lib/esm/nest/keycloakModule.js.map +1 -1
- package/lib/esm/nest/utils.js +23 -0
- package/lib/esm/nest/utils.js.map +1 -1
- package/lib/esm/utils.js +1 -1
- package/lib/types/index.d.cts +2 -2
- package/lib/types/index.d.mts +2 -2
- package/lib/types/keycloak/services/KeycloakRoleService.d.cts +14 -0
- package/lib/types/keycloak/services/KeycloakRoleService.d.mts +14 -0
- package/lib/types/keycloak/services/KeycloakService.d.cts +9 -0
- package/lib/types/keycloak/services/KeycloakService.d.mts +9 -0
- package/lib/types/keycloak/types.d.cts +11 -0
- package/lib/types/keycloak/types.d.mts +11 -0
- package/lib/types/nest/authService.d.cts +55 -2
- package/lib/types/nest/authService.d.mts +55 -2
- package/lib/types/nest/keycloakAuthHandler.d.cts +14 -5
- package/lib/types/nest/keycloakAuthHandler.d.mts +14 -5
- package/lib/types/nest/keycloakModule.d.cts +3 -3
- package/lib/types/nest/keycloakModule.d.mts +3 -3
- package/lib/types/nest/utils.d.cts +9 -0
- package/lib/types/nest/utils.d.mts +9 -0
- package/package.json +17 -7
|
@@ -9,7 +9,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
9
9
|
};
|
|
10
10
|
import { description } from "@decaf-ts/decoration";
|
|
11
11
|
import { ClientBasedService, service, } from "@decaf-ts/core";
|
|
12
|
-
import { NotFoundError } from "@decaf-ts/db-decorators";
|
|
12
|
+
import { InternalError, NotFoundError } from "@decaf-ts/db-decorators";
|
|
13
13
|
import Axios from "axios";
|
|
14
14
|
import * as https from "node:https";
|
|
15
15
|
import { KeycloakRealmService } from "./KeycloakRealmService.js";
|
|
@@ -86,6 +86,20 @@ let KeycloakService = class KeycloakService extends ClientBasedService {
|
|
|
86
86
|
const { ctxArgs } = (await this.logCtx(args, "addRealmRolesToUser", true)).for(this.addRealmRolesToUser);
|
|
87
87
|
await this.roleService.grantRealmRolesToUser(realmName, userUUID, roleNames, ...ctxArgs);
|
|
88
88
|
}
|
|
89
|
+
/**
|
|
90
|
+
* Creates a realm-level role, optionally as a composite of existing roles.
|
|
91
|
+
*/
|
|
92
|
+
async createRealmRole(realmName, roleName, compositeRoles, ...args) {
|
|
93
|
+
const { ctxArgs } = (await this.logCtx(args, "createRealmRole", true)).for(this.createRealmRole);
|
|
94
|
+
await this.roleService.createRealmRole(realmName, roleName, compositeRoles, ...ctxArgs);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Creates a client in the configured realm and returns its UUID.
|
|
98
|
+
*/
|
|
99
|
+
async createClient(config, overrides, ...args) {
|
|
100
|
+
const { ctxArgs } = (await this.logCtx(args, "createClient", true)).for(this.createClient);
|
|
101
|
+
return this.clientService.createClient(config, overrides, ...ctxArgs);
|
|
102
|
+
}
|
|
89
103
|
async addClientRolesToUser(realmName, clientUUID, userUUID, roleNames, ...args) {
|
|
90
104
|
const { ctxArgs } = (await this.logCtx(args, "addClientRolesToUser", true)).for(this.addClientRolesToUser);
|
|
91
105
|
await this.roleService.grantClientRolesToUser(realmName, clientUUID, userUUID, roleNames, ...ctxArgs);
|
|
@@ -99,6 +113,7 @@ let KeycloakService = class KeycloakService extends ClientBasedService {
|
|
|
99
113
|
const { ctxArgs } = (await this.logCtx(args, "setupOrganization", true)).for(this.setupOrganization);
|
|
100
114
|
const adminAccessToken = await this.authService.getAccessToken(config.adminApiUser, ...ctxArgs);
|
|
101
115
|
await this.realmService.createRealm(config.realmApiUser.realm, config.realmConfig ?? {}, ...ctxArgs);
|
|
116
|
+
await this.waitForRealm(config.realmApiUser.realm, ...ctxArgs);
|
|
102
117
|
const realmUserUUID = await this.userService.createRealmUser(config.realmApiUser, {}, ...ctxArgs);
|
|
103
118
|
config.realmApiUser.usernameUUID = realmUserUUID;
|
|
104
119
|
const realmManagementUUID = await this.clientService.getClientUUID(adminAccessToken, config.realmApiUser.realm, "realm-management", ...ctxArgs);
|
|
@@ -130,6 +145,20 @@ let KeycloakService = class KeycloakService extends ClientBasedService {
|
|
|
130
145
|
}),
|
|
131
146
|
});
|
|
132
147
|
}
|
|
148
|
+
async waitForRealm(realmName, ...args) {
|
|
149
|
+
const { ctxArgs } = (await this.logCtx(args, "waitForRealm", true)).for(this.waitForRealm);
|
|
150
|
+
const deadline = Date.now() + 15000;
|
|
151
|
+
while (Date.now() < deadline) {
|
|
152
|
+
try {
|
|
153
|
+
await this.realmService.getRealm(realmName, ...ctxArgs);
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
catch {
|
|
157
|
+
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
throw new InternalError(`Timed out waiting for realm ${realmName}`);
|
|
161
|
+
}
|
|
133
162
|
async updateClientScopesRolesMappers(keycloakUser, ...args) {
|
|
134
163
|
this.logCtx(args, this.updateClientScopesRolesMappers);
|
|
135
164
|
const client = this.createHttpClient(this.config);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KeycloakService.js","sourceRoot":"","sources":["../../../../src/keycloak/services/KeycloakService.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"KeycloakService.js","sourceRoot":"","sources":["../../../../src/keycloak/services/KeycloakService.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,15 +2,28 @@
|
|
|
2
2
|
* @module integrations/nest/authService
|
|
3
3
|
* @summary Nest-compatible authentication service helpers.
|
|
4
4
|
* @description Request-context-aware auth helpers for Nest applications using Decaf integration patterns.
|
|
5
|
+
*
|
|
6
|
+
* Supports two modes:
|
|
7
|
+
* - **Verify mode** (default when `verifyUrl` is set): validates the JWT signature
|
|
8
|
+
* against the Keycloak JWKS endpoint using `jose.jwtVerify`.
|
|
9
|
+
* - **Decode-only mode** (when `verifyToken` is false / `verifyUrl` is empty):
|
|
10
|
+
* decodes the JWT without signature verification (dev/local mode).
|
|
5
11
|
*/
|
|
6
12
|
import { AuthorizationError } from "@decaf-ts/core";
|
|
7
|
-
import {
|
|
13
|
+
import { createRemoteJWKSet, jwtVerify } from "jose";
|
|
14
|
+
import { extractKeycloakRoles, getRealmFromIssuer, getTokenPayload, getUser, getClientRoles, } from "./utils.js";
|
|
8
15
|
export class AuthService {
|
|
16
|
+
constructor(options = {}) {
|
|
17
|
+
this.verifyToken = !!options.verifyToken && !!options.verifyUrl;
|
|
18
|
+
this.verifyUrl = options.verifyUrl ?? "";
|
|
19
|
+
this.clockToleranceSeconds = options.clockToleranceSeconds ?? 5;
|
|
20
|
+
this.excludedClients = options.excludedClients ?? ["account"];
|
|
21
|
+
}
|
|
9
22
|
getTokenPayload(jwt) {
|
|
10
23
|
return getTokenPayload(jwt);
|
|
11
24
|
}
|
|
12
25
|
getRoles(jwt) {
|
|
13
|
-
return extractKeycloakRoles(this.getTokenPayload(jwt));
|
|
26
|
+
return this.extractKeycloakRoles(this.getTokenPayload(jwt));
|
|
14
27
|
}
|
|
15
28
|
getUser(jwt) {
|
|
16
29
|
return getUser(jwt);
|
|
@@ -18,15 +31,53 @@ export class AuthService {
|
|
|
18
31
|
extractKeycloakRoles(payload) {
|
|
19
32
|
return extractKeycloakRoles(payload);
|
|
20
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* Extracts client roles from the `resource_access` claim, excluding
|
|
36
|
+
* the configured `excludedClients` (default: `["account"]`).
|
|
37
|
+
*/
|
|
38
|
+
extractClientRoles(payload) {
|
|
39
|
+
return getClientRoles(payload, this.excludedClients);
|
|
40
|
+
}
|
|
21
41
|
getRealmFromIssuer(jwt) {
|
|
22
42
|
return getRealmFromIssuer(jwt);
|
|
23
43
|
}
|
|
24
|
-
|
|
44
|
+
/**
|
|
45
|
+
* Validates a JWT:
|
|
46
|
+
* - In **verify mode**: verifies the signature against the Keycloak JWKS
|
|
47
|
+
* endpoint using `jose.jwtVerify`, then returns the verified payload.
|
|
48
|
+
* - In **decode-only mode**: decodes the JWT without verification and
|
|
49
|
+
* returns the payload (or throws if unparseable).
|
|
50
|
+
*
|
|
51
|
+
* @throws {AuthorizationError} when the token is invalid, expired, or
|
|
52
|
+
* signature verification fails.
|
|
53
|
+
*/
|
|
54
|
+
async assertValidToken(jwt) {
|
|
55
|
+
if (this.verifyToken) {
|
|
56
|
+
return this.verifyAgainstJwks(jwt);
|
|
57
|
+
}
|
|
25
58
|
const payload = this.getTokenPayload(jwt);
|
|
26
59
|
if (!payload) {
|
|
27
60
|
throw new AuthorizationError("Invalid token");
|
|
28
61
|
}
|
|
29
62
|
return payload;
|
|
30
63
|
}
|
|
64
|
+
/**
|
|
65
|
+
* Verifies the JWT signature against the Keycloak JWKS endpoint.
|
|
66
|
+
* Lazily creates the JWKS keystore on first call.
|
|
67
|
+
*/
|
|
68
|
+
async verifyAgainstJwks(jwt) {
|
|
69
|
+
if (!this.jwks) {
|
|
70
|
+
this.jwks = createRemoteJWKSet(new URL(this.verifyUrl));
|
|
71
|
+
}
|
|
72
|
+
try {
|
|
73
|
+
const { payload } = await jwtVerify(jwt, this.jwks, {
|
|
74
|
+
clockTolerance: `${this.clockToleranceSeconds}s`,
|
|
75
|
+
});
|
|
76
|
+
return payload;
|
|
77
|
+
}
|
|
78
|
+
catch (e) {
|
|
79
|
+
throw new AuthorizationError("Invalid token: " + (e?.message ?? e));
|
|
80
|
+
}
|
|
81
|
+
}
|
|
31
82
|
}
|
|
32
83
|
//# sourceMappingURL=authService.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authService.js","sourceRoot":"","sources":["../../../src/nest/authService.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"authService.js","sourceRoot":"","sources":["../../../src/nest/authService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACrD,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,eAAe,EACf,OAAO,EACP,cAAc,GACf,mBAAgB;AA+BjB,MAAM,OAAO,WAAW;IAOtB,YAAY,UAA8B,EAAE;QAC1C,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;QAChE,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;QACzC,IAAI,CAAC,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,IAAI,CAAC,CAAC;QAChE,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,CAAC,SAAS,CAAC,CAAC;IAChE,CAAC;IAED,eAAe,CAAC,GAAW;QACzB,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,QAAQ,CAAC,GAAW;QAClB,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO,CAAC,GAAW;QACjB,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;IAED,oBAAoB,CAAC,OAA0C;QAC7D,OAAO,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAED;;;OAGG;IACH,kBAAkB,CAChB,OAA0C;QAE1C,OAAO,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IACvD,CAAC;IAED,kBAAkB,CAAC,GAAW;QAC5B,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,gBAAgB,CACpB,GAAW;QAEX,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACrC,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,kBAAkB,CAAC,eAAe,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,iBAAiB,CAC7B,GAAW;QAEX,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,CAAC;YACH,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE;gBAClD,cAAc,EAAE,GAAG,IAAI,CAAC,qBAAqB,GAAG;aACjD,CAAC,CAAC;YACH,OAAO,OAAgD,CAAC;QAC1D,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,MAAM,IAAI,kBAAkB,CAAC,iBAAiB,GAAG,CAAC,CAAC,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1,11 +1,19 @@
|
|
|
1
1
|
import { AuthorizationError } from "@decaf-ts/core";
|
|
2
2
|
import { AuthHandler } from "@decaf-ts/for-http/server";
|
|
3
3
|
import { AuthService } from "./authService.js";
|
|
4
|
-
import { getRealmFromIssuer, getTokenPayload, extractKeycloakRoles, } from "./utils.js";
|
|
4
|
+
import { getRealmFromIssuer, getTokenPayload, extractKeycloakRoles, getClientRoles, } from "./utils.js";
|
|
5
5
|
export class KeycloakAuthHandler extends AuthHandler {
|
|
6
|
-
|
|
6
|
+
/**
|
|
7
|
+
* @param authService An {@link AuthService} configured with JWKS verification
|
|
8
|
+
* options. When omitted a default decode-only service is
|
|
9
|
+
* used.
|
|
10
|
+
* @param authServiceOptions Convenience: if `authService` is omitted, these
|
|
11
|
+
* options are used to construct one.
|
|
12
|
+
*/
|
|
13
|
+
constructor(authService, authServiceOptions) {
|
|
7
14
|
super();
|
|
8
|
-
this.authService =
|
|
15
|
+
this.authService =
|
|
16
|
+
authService ?? new AuthService(authServiceOptions ?? {});
|
|
9
17
|
}
|
|
10
18
|
extractFromAuth(ctx) {
|
|
11
19
|
const request = ctx.switchToHttp().getRequest();
|
|
@@ -30,15 +38,13 @@ export class KeycloakAuthHandler extends AuthHandler {
|
|
|
30
38
|
async validate(data, routeRoles, model, ...args) {
|
|
31
39
|
if (data.isPublic)
|
|
32
40
|
return;
|
|
33
|
-
this.authService.assertValidToken(data.token);
|
|
41
|
+
await this.authService.assertValidToken(data.token);
|
|
34
42
|
await super.validate(data, routeRoles, model, ...args);
|
|
35
43
|
}
|
|
36
44
|
}
|
|
37
45
|
function isPublicRoute(req) {
|
|
38
46
|
if (req.path?.startsWith("/public"))
|
|
39
47
|
return true;
|
|
40
|
-
if (req.path === "/account" && req.method === "POST")
|
|
41
|
-
return true;
|
|
42
48
|
return false;
|
|
43
49
|
}
|
|
44
50
|
function getToken(req) {
|
|
@@ -55,4 +61,5 @@ function resolveOrganization(payload, token) {
|
|
|
55
61
|
return payload.azp;
|
|
56
62
|
return getRealmFromIssuer(token);
|
|
57
63
|
}
|
|
64
|
+
export { getClientRoles };
|
|
58
65
|
//# sourceMappingURL=keycloakAuthHandler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keycloakAuthHandler.js","sourceRoot":"","sources":["../../../src/nest/keycloakAuthHandler.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,kBAAkB,EAA2B,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAY,MAAM,2BAA2B,CAAC;AAElE,OAAO,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"keycloakAuthHandler.js","sourceRoot":"","sources":["../../../src/nest/keycloakAuthHandler.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,kBAAkB,EAA2B,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAY,MAAM,2BAA2B,CAAC;AAElE,OAAO,EAAE,WAAW,EAA2B,yBAAsB;AAErE,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,oBAAoB,EACpB,cAAc,GACf,mBAAgB;AAejB,MAAM,OAAO,mBAAoB,SAAQ,WAIxC;IACC;;;;;;OAMG;IACH,YACE,WAAyB,EACzB,kBAAuC;QAEvC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,WAAW;YACd,WAAW,IAAI,IAAI,WAAW,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC;IAIS,eAAe,CAAC,GAA6B;QACrD,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC,UAAU,EAAmB,CAAC;QAEjE,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAClD,CAAC;QAED,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;QAE5D,iDAAiD;QACjD,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QACvC,MAAM,KAAK,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAC5C,MAAM,YAAY,GAAG,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACzD,MAAM,IAAI,GAAG,OAAO,EAAE,KAAK,IAAI,OAAO,EAAE,kBAAkB,CAAC;QAE3D,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC/D,CAAC;IAED;;;;OAIG;IACgB,KAAK,CAAC,QAAQ,CAC/B,IAAsB,EACtB,UAAgC,EAChC,KAA2B,EAC3B,GAAG,IAA6B;QAEhC,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC1B,MAAM,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpD,MAAM,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;IACzD,CAAC;CACF;AAED,SAAS,aAAa,CAAC,GAAoB;IACzC,IAAI,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IACjD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,QAAQ,CAAC,GAAoB;IACpC,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,6BAA6B,CAAC;QACzD,GAAG,CAAC,OAAO,EAAE,CAAC,eAAe,CAAC,CAAuB,CAAC;IACxD,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,OAAO,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC7E,CAAC;AAED,SAAS,mBAAmB,CAC1B,OAA8C,EAC9C,KAAa;IAEb,IAAI,OAAO,EAAE,GAAG;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC;IACrC,IAAI,OAAO,EAAE,GAAG;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC;IACrC,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC;AAED,OAAO,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -6,12 +6,14 @@
|
|
|
6
6
|
import { AuthService } from "./authService.js";
|
|
7
7
|
import { KeycloakAuthHandler } from "./keycloakAuthHandler.js";
|
|
8
8
|
export class KeycloakModule {
|
|
9
|
-
constructor(authService
|
|
9
|
+
constructor(authService, authHandler) {
|
|
10
10
|
this.authService = authService;
|
|
11
11
|
this.authHandler = authHandler;
|
|
12
12
|
}
|
|
13
|
-
static create() {
|
|
14
|
-
|
|
13
|
+
static create(options) {
|
|
14
|
+
const authService = new AuthService(options);
|
|
15
|
+
const authHandler = new KeycloakAuthHandler(authService);
|
|
16
|
+
return new KeycloakModule(authService, authHandler);
|
|
15
17
|
}
|
|
16
18
|
}
|
|
17
19
|
export class AuthModule extends KeycloakModule {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keycloakModule.js","sourceRoot":"","sources":["../../../src/nest/keycloakModule.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"keycloakModule.js","sourceRoot":"","sources":["../../../src/nest/keycloakModule.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,WAAW,EAA2B,yBAAsB;AACrE,OAAO,EAAE,mBAAmB,EAAE,iCAA8B;AAE5D,MAAM,OAAO,cAAc;IACzB,YACkB,WAAwB,EACxB,WAAgC;QADhC,gBAAW,GAAX,WAAW,CAAa;QACxB,gBAAW,GAAX,WAAW,CAAqB;IAC/C,CAAC;IAEJ,MAAM,CAAC,MAAM,CAAC,OAA4B;QACxC,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;QAC7C,MAAM,WAAW,GAAG,IAAI,mBAAmB,CAAC,WAAW,CAAC,CAAC;QACzD,OAAO,IAAI,cAAc,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IACtD,CAAC;CACF;AAED,MAAM,OAAO,UAAW,SAAQ,cAAc;CAAG"}
|
package/lib/esm/nest/utils.js
CHANGED
|
@@ -23,6 +23,29 @@ export function extractKeycloakRoles(payload) {
|
|
|
23
23
|
}
|
|
24
24
|
return [...roles];
|
|
25
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* Extracts roles from the `resource_access` claim only, optionally excluding
|
|
28
|
+
* specified client IDs (e.g. `"account"`). Unlike {@link extractKeycloakRoles}
|
|
29
|
+
* this does NOT include `realm_access.roles`.
|
|
30
|
+
*
|
|
31
|
+
* @param payload The decoded JWT payload.
|
|
32
|
+
* @param excluded Client IDs to skip. @default ["account"]
|
|
33
|
+
*/
|
|
34
|
+
export function getClientRoles(payload, excluded = ["account"]) {
|
|
35
|
+
const resourceAccess = payload?.resource_access;
|
|
36
|
+
if (!resourceAccess || typeof resourceAccess !== "object")
|
|
37
|
+
return [];
|
|
38
|
+
const roles = new Set();
|
|
39
|
+
for (const [clientId, data] of Object.entries(resourceAccess)) {
|
|
40
|
+
if (excluded.includes(clientId))
|
|
41
|
+
continue;
|
|
42
|
+
if (Array.isArray(data?.roles)) {
|
|
43
|
+
for (const role of data.roles)
|
|
44
|
+
roles.add(role);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return [...roles];
|
|
48
|
+
}
|
|
26
49
|
export function getUser(jwt) {
|
|
27
50
|
const payload = getTokenPayload(jwt);
|
|
28
51
|
if (!payload)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/nest/utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/nest/utils.ts"],"names":[],"mappings":"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"}
|
package/lib/esm/utils.js
CHANGED
|
@@ -18,7 +18,7 @@ export async function execWithLogging(command, options, log, level = LogLevel.in
|
|
|
18
18
|
});
|
|
19
19
|
child.stderr?.on("data", (data) => {
|
|
20
20
|
stderr.push(data);
|
|
21
|
-
log.
|
|
21
|
+
log.debug(data.trim());
|
|
22
22
|
});
|
|
23
23
|
child.on("close", (code) => {
|
|
24
24
|
if (code === 0) {
|
package/lib/types/index.d.cts
CHANGED
|
@@ -5,6 +5,6 @@
|
|
|
5
5
|
*/
|
|
6
6
|
export * from "./utils.d.cts";
|
|
7
7
|
export declare const VERSION: string;
|
|
8
|
-
export declare const COMMIT = "
|
|
9
|
-
export declare const FULL_VERSION = "0.2.
|
|
8
|
+
export declare const COMMIT = "5dab9b8";
|
|
9
|
+
export declare const FULL_VERSION = "0.2.2-5dab9b8";
|
|
10
10
|
export declare const PACKAGE_NAME: string;
|
package/lib/types/index.d.mts
CHANGED
|
@@ -5,6 +5,6 @@
|
|
|
5
5
|
*/
|
|
6
6
|
export * from "./utils.d.mts";
|
|
7
7
|
export declare const VERSION: string;
|
|
8
|
-
export declare const COMMIT = "
|
|
9
|
-
export declare const FULL_VERSION = "0.2.
|
|
8
|
+
export declare const COMMIT = "5dab9b8";
|
|
9
|
+
export declare const FULL_VERSION = "0.2.2-5dab9b8";
|
|
10
10
|
export declare const PACKAGE_NAME: string;
|
|
@@ -8,6 +8,20 @@ export declare class KeycloakRoleService extends ClientBasedService<AxiosInstanc
|
|
|
8
8
|
client: AxiosInstance;
|
|
9
9
|
}>;
|
|
10
10
|
createClientRoles(keycloakSetupConfig: KeycloakSetupConfig, roleConfigs: KeycloakClientRoleConfig[] | undefined, ...args: MaybeContextualArg<any>): Promise<void>;
|
|
11
|
+
/**
|
|
12
|
+
* Creates a realm-level role in the specified realm.
|
|
13
|
+
*
|
|
14
|
+
* When `compositeRoles` is provided, the role is created as a Keycloak
|
|
15
|
+
* composite role that includes the given sub-roles. This allows role
|
|
16
|
+
* hierarchies (e.g. `admin ⊃ writer ⊃ reader`) so that a user assigned
|
|
17
|
+
* the composite role automatically inherits all sub-roles in their JWT.
|
|
18
|
+
*
|
|
19
|
+
* @param realmName The realm in which to create the role.
|
|
20
|
+
* @param roleName The name of the realm role to create.
|
|
21
|
+
* @param compositeRoles Optional array of existing realm role names to
|
|
22
|
+
* include as composites.
|
|
23
|
+
*/
|
|
24
|
+
createRealmRole(realmName: string, roleName: string, compositeRoles: string[] | undefined, ...args: MaybeContextualArg<any>): Promise<void>;
|
|
11
25
|
getRealmRoles(realmName: string, ...args: MaybeContextualArg<any>): Promise<any[]>;
|
|
12
26
|
getClientRoles(realmName: string, clientUUID: string, ...args: MaybeContextualArg<any>): Promise<any[]>;
|
|
13
27
|
grantRealmRolesToUser(realmName: string, userUUID: string, roleNames: string[], ...args: MaybeContextualArg<any>): Promise<void>;
|
|
@@ -8,6 +8,20 @@ export declare class KeycloakRoleService extends ClientBasedService<AxiosInstanc
|
|
|
8
8
|
client: AxiosInstance;
|
|
9
9
|
}>;
|
|
10
10
|
createClientRoles(keycloakSetupConfig: KeycloakSetupConfig, roleConfigs: KeycloakClientRoleConfig[] | undefined, ...args: MaybeContextualArg<any>): Promise<void>;
|
|
11
|
+
/**
|
|
12
|
+
* Creates a realm-level role in the specified realm.
|
|
13
|
+
*
|
|
14
|
+
* When `compositeRoles` is provided, the role is created as a Keycloak
|
|
15
|
+
* composite role that includes the given sub-roles. This allows role
|
|
16
|
+
* hierarchies (e.g. `admin ⊃ writer ⊃ reader`) so that a user assigned
|
|
17
|
+
* the composite role automatically inherits all sub-roles in their JWT.
|
|
18
|
+
*
|
|
19
|
+
* @param realmName The realm in which to create the role.
|
|
20
|
+
* @param roleName The name of the realm role to create.
|
|
21
|
+
* @param compositeRoles Optional array of existing realm role names to
|
|
22
|
+
* include as composites.
|
|
23
|
+
*/
|
|
24
|
+
createRealmRole(realmName: string, roleName: string, compositeRoles: string[] | undefined, ...args: MaybeContextualArg<any>): Promise<void>;
|
|
11
25
|
getRealmRoles(realmName: string, ...args: MaybeContextualArg<any>): Promise<any[]>;
|
|
12
26
|
getClientRoles(realmName: string, clientUUID: string, ...args: MaybeContextualArg<any>): Promise<any[]>;
|
|
13
27
|
grantRealmRolesToUser(realmName: string, userUUID: string, roleNames: string[], ...args: MaybeContextualArg<any>): Promise<void>;
|
|
@@ -27,12 +27,21 @@ export declare class KeycloakService extends ClientBasedService<AxiosInstance, K
|
|
|
27
27
|
editUser(realmName: string, userUUID: string, payload: any, ...args: MaybeContextualArg<any>): Promise<void>;
|
|
28
28
|
removeUserFromRealm(realmName: string, userUUID: string, ...args: MaybeContextualArg<any>): Promise<void>;
|
|
29
29
|
addRealmRolesToUser(realmName: string, userUUID: string, roleNames: string[], ...args: MaybeContextualArg<any>): Promise<void>;
|
|
30
|
+
/**
|
|
31
|
+
* Creates a realm-level role, optionally as a composite of existing roles.
|
|
32
|
+
*/
|
|
33
|
+
createRealmRole(realmName: string, roleName: string, compositeRoles: string[] | undefined, ...args: MaybeContextualArg<any>): Promise<void>;
|
|
34
|
+
/**
|
|
35
|
+
* Creates a client in the configured realm and returns its UUID.
|
|
36
|
+
*/
|
|
37
|
+
createClient(config: KeycloakSetupConfig, overrides: Partial<import("../types.d.cts").KeycloakClientConfig> | undefined, ...args: MaybeContextualArg<any>): Promise<string>;
|
|
30
38
|
addClientRolesToUser(realmName: string, clientUUID: string, userUUID: string, roleNames: string[], ...args: MaybeContextualArg<any>): Promise<void>;
|
|
31
39
|
deleteAdminApiUser(keycloakSetupConfig: KeycloakSetupConfig, ...args: MaybeContextualArg<any>): Promise<void>;
|
|
32
40
|
setupOrganization(config: KeycloakSetupConfig, ...args: MaybeContextualArg<any>): Promise<KeycloakSetupConfig>;
|
|
33
41
|
setupOrganizationSSO(keycloakSetupConfig: KeycloakSetupConfig, ...args: MaybeContextualArg<any>): Promise<void>;
|
|
34
42
|
deleteOrganization(realmName: string, ...args: MaybeContextualArg<any>): Promise<void>;
|
|
35
43
|
private createHttpClient;
|
|
44
|
+
private waitForRealm;
|
|
36
45
|
private updateClientScopesRolesMappers;
|
|
37
46
|
private parseJsonResponse;
|
|
38
47
|
}
|
|
@@ -27,12 +27,21 @@ export declare class KeycloakService extends ClientBasedService<AxiosInstance, K
|
|
|
27
27
|
editUser(realmName: string, userUUID: string, payload: any, ...args: MaybeContextualArg<any>): Promise<void>;
|
|
28
28
|
removeUserFromRealm(realmName: string, userUUID: string, ...args: MaybeContextualArg<any>): Promise<void>;
|
|
29
29
|
addRealmRolesToUser(realmName: string, userUUID: string, roleNames: string[], ...args: MaybeContextualArg<any>): Promise<void>;
|
|
30
|
+
/**
|
|
31
|
+
* Creates a realm-level role, optionally as a composite of existing roles.
|
|
32
|
+
*/
|
|
33
|
+
createRealmRole(realmName: string, roleName: string, compositeRoles: string[] | undefined, ...args: MaybeContextualArg<any>): Promise<void>;
|
|
34
|
+
/**
|
|
35
|
+
* Creates a client in the configured realm and returns its UUID.
|
|
36
|
+
*/
|
|
37
|
+
createClient(config: KeycloakSetupConfig, overrides: Partial<import("../types.d.mts").KeycloakClientConfig> | undefined, ...args: MaybeContextualArg<any>): Promise<string>;
|
|
30
38
|
addClientRolesToUser(realmName: string, clientUUID: string, userUUID: string, roleNames: string[], ...args: MaybeContextualArg<any>): Promise<void>;
|
|
31
39
|
deleteAdminApiUser(keycloakSetupConfig: KeycloakSetupConfig, ...args: MaybeContextualArg<any>): Promise<void>;
|
|
32
40
|
setupOrganization(config: KeycloakSetupConfig, ...args: MaybeContextualArg<any>): Promise<KeycloakSetupConfig>;
|
|
33
41
|
setupOrganizationSSO(keycloakSetupConfig: KeycloakSetupConfig, ...args: MaybeContextualArg<any>): Promise<void>;
|
|
34
42
|
deleteOrganization(realmName: string, ...args: MaybeContextualArg<any>): Promise<void>;
|
|
35
43
|
private createHttpClient;
|
|
44
|
+
private waitForRealm;
|
|
36
45
|
private updateClientScopesRolesMappers;
|
|
37
46
|
private parseJsonResponse;
|
|
38
47
|
}
|
|
@@ -100,4 +100,15 @@ export interface KeycloakSetupConfig {
|
|
|
100
100
|
client: KeycloakClientConfig;
|
|
101
101
|
identityProvider?: KeycloakIdentityProviderConfig;
|
|
102
102
|
realmConfig?: KeycloakRealmConfig;
|
|
103
|
+
/**
|
|
104
|
+
* When true, realm roles are created as Keycloak composite roles forming a
|
|
105
|
+
* hierarchy (e.g. admin ⊃ writer ⊃ reader). A user assigned the composite
|
|
106
|
+
* role automatically inherits all sub-roles in their JWT.
|
|
107
|
+
*
|
|
108
|
+
* When false (default), roles are independent — admin does NOT imply writer
|
|
109
|
+
* or reader. Each user must be explicitly granted every role they need.
|
|
110
|
+
*
|
|
111
|
+
* @default false
|
|
112
|
+
*/
|
|
113
|
+
useCompositeRoles?: boolean;
|
|
103
114
|
}
|
|
@@ -100,4 +100,15 @@ export interface KeycloakSetupConfig {
|
|
|
100
100
|
client: KeycloakClientConfig;
|
|
101
101
|
identityProvider?: KeycloakIdentityProviderConfig;
|
|
102
102
|
realmConfig?: KeycloakRealmConfig;
|
|
103
|
+
/**
|
|
104
|
+
* When true, realm roles are created as Keycloak composite roles forming a
|
|
105
|
+
* hierarchy (e.g. admin ⊃ writer ⊃ reader). A user assigned the composite
|
|
106
|
+
* role automatically inherits all sub-roles in their JWT.
|
|
107
|
+
*
|
|
108
|
+
* When false (default), roles are independent — admin does NOT imply writer
|
|
109
|
+
* or reader. Each user must be explicitly granted every role they need.
|
|
110
|
+
*
|
|
111
|
+
* @default false
|
|
112
|
+
*/
|
|
113
|
+
useCompositeRoles?: boolean;
|
|
103
114
|
}
|
|
@@ -1,9 +1,62 @@
|
|
|
1
1
|
import type { KeycloakAccessTokenPayload, KeycloakUser } from "./types.d.cts";
|
|
2
|
+
/**
|
|
3
|
+
* Configuration for the {@link AuthService}.
|
|
4
|
+
*/
|
|
5
|
+
export interface AuthServiceOptions {
|
|
6
|
+
/**
|
|
7
|
+
* Whether to verify the JWT signature against the Keycloak JWKS endpoint.
|
|
8
|
+
* When `false` (or `verifyUrl` is empty), tokens are decoded without
|
|
9
|
+
* signature verification (dev/local mode only).
|
|
10
|
+
* @default false
|
|
11
|
+
*/
|
|
12
|
+
verifyToken?: boolean;
|
|
13
|
+
/**
|
|
14
|
+
* The Keycloak JWKS URL (e.g. `https://keycloak/realms/myrealm/protocol/openid-connect/certs`).
|
|
15
|
+
* Required when `verifyToken` is `true`.
|
|
16
|
+
*/
|
|
17
|
+
verifyUrl?: string;
|
|
18
|
+
/**
|
|
19
|
+
* Clock tolerance for JWT expiry verification (in seconds).
|
|
20
|
+
* @default 5
|
|
21
|
+
*/
|
|
22
|
+
clockToleranceSeconds?: number;
|
|
23
|
+
/**
|
|
24
|
+
* Keycloak client IDs to exclude when extracting roles from `resource_access`.
|
|
25
|
+
* @default ["account"]
|
|
26
|
+
*/
|
|
27
|
+
excludedClients?: string[];
|
|
28
|
+
}
|
|
2
29
|
export declare class AuthService {
|
|
30
|
+
private readonly verifyToken;
|
|
31
|
+
private readonly verifyUrl;
|
|
32
|
+
private readonly clockToleranceSeconds;
|
|
33
|
+
private readonly excludedClients;
|
|
34
|
+
private jwks;
|
|
35
|
+
constructor(options?: AuthServiceOptions);
|
|
3
36
|
getTokenPayload(jwt: string): KeycloakAccessTokenPayload | null;
|
|
4
37
|
getRoles(jwt: string): string[];
|
|
5
38
|
getUser(jwt: string): KeycloakUser | undefined;
|
|
6
|
-
extractKeycloakRoles(payload:
|
|
39
|
+
extractKeycloakRoles(payload: KeycloakAccessTokenPayload | null): string[];
|
|
40
|
+
/**
|
|
41
|
+
* Extracts client roles from the `resource_access` claim, excluding
|
|
42
|
+
* the configured `excludedClients` (default: `["account"]`).
|
|
43
|
+
*/
|
|
44
|
+
extractClientRoles(payload: KeycloakAccessTokenPayload | null): string[];
|
|
7
45
|
getRealmFromIssuer(jwt: string): string;
|
|
8
|
-
|
|
46
|
+
/**
|
|
47
|
+
* Validates a JWT:
|
|
48
|
+
* - In **verify mode**: verifies the signature against the Keycloak JWKS
|
|
49
|
+
* endpoint using `jose.jwtVerify`, then returns the verified payload.
|
|
50
|
+
* - In **decode-only mode**: decodes the JWT without verification and
|
|
51
|
+
* returns the payload (or throws if unparseable).
|
|
52
|
+
*
|
|
53
|
+
* @throws {AuthorizationError} when the token is invalid, expired, or
|
|
54
|
+
* signature verification fails.
|
|
55
|
+
*/
|
|
56
|
+
assertValidToken(jwt: string): Promise<KeycloakAccessTokenPayload>;
|
|
57
|
+
/**
|
|
58
|
+
* Verifies the JWT signature against the Keycloak JWKS endpoint.
|
|
59
|
+
* Lazily creates the JWKS keystore on first call.
|
|
60
|
+
*/
|
|
61
|
+
private verifyAgainstJwks;
|
|
9
62
|
}
|
|
@@ -1,9 +1,62 @@
|
|
|
1
1
|
import type { KeycloakAccessTokenPayload, KeycloakUser } from "./types.d.mts";
|
|
2
|
+
/**
|
|
3
|
+
* Configuration for the {@link AuthService}.
|
|
4
|
+
*/
|
|
5
|
+
export interface AuthServiceOptions {
|
|
6
|
+
/**
|
|
7
|
+
* Whether to verify the JWT signature against the Keycloak JWKS endpoint.
|
|
8
|
+
* When `false` (or `verifyUrl` is empty), tokens are decoded without
|
|
9
|
+
* signature verification (dev/local mode only).
|
|
10
|
+
* @default false
|
|
11
|
+
*/
|
|
12
|
+
verifyToken?: boolean;
|
|
13
|
+
/**
|
|
14
|
+
* The Keycloak JWKS URL (e.g. `https://keycloak/realms/myrealm/protocol/openid-connect/certs`).
|
|
15
|
+
* Required when `verifyToken` is `true`.
|
|
16
|
+
*/
|
|
17
|
+
verifyUrl?: string;
|
|
18
|
+
/**
|
|
19
|
+
* Clock tolerance for JWT expiry verification (in seconds).
|
|
20
|
+
* @default 5
|
|
21
|
+
*/
|
|
22
|
+
clockToleranceSeconds?: number;
|
|
23
|
+
/**
|
|
24
|
+
* Keycloak client IDs to exclude when extracting roles from `resource_access`.
|
|
25
|
+
* @default ["account"]
|
|
26
|
+
*/
|
|
27
|
+
excludedClients?: string[];
|
|
28
|
+
}
|
|
2
29
|
export declare class AuthService {
|
|
30
|
+
private readonly verifyToken;
|
|
31
|
+
private readonly verifyUrl;
|
|
32
|
+
private readonly clockToleranceSeconds;
|
|
33
|
+
private readonly excludedClients;
|
|
34
|
+
private jwks;
|
|
35
|
+
constructor(options?: AuthServiceOptions);
|
|
3
36
|
getTokenPayload(jwt: string): KeycloakAccessTokenPayload | null;
|
|
4
37
|
getRoles(jwt: string): string[];
|
|
5
38
|
getUser(jwt: string): KeycloakUser | undefined;
|
|
6
|
-
extractKeycloakRoles(payload:
|
|
39
|
+
extractKeycloakRoles(payload: KeycloakAccessTokenPayload | null): string[];
|
|
40
|
+
/**
|
|
41
|
+
* Extracts client roles from the `resource_access` claim, excluding
|
|
42
|
+
* the configured `excludedClients` (default: `["account"]`).
|
|
43
|
+
*/
|
|
44
|
+
extractClientRoles(payload: KeycloakAccessTokenPayload | null): string[];
|
|
7
45
|
getRealmFromIssuer(jwt: string): string;
|
|
8
|
-
|
|
46
|
+
/**
|
|
47
|
+
* Validates a JWT:
|
|
48
|
+
* - In **verify mode**: verifies the signature against the Keycloak JWKS
|
|
49
|
+
* endpoint using `jose.jwtVerify`, then returns the verified payload.
|
|
50
|
+
* - In **decode-only mode**: decodes the JWT without verification and
|
|
51
|
+
* returns the payload (or throws if unparseable).
|
|
52
|
+
*
|
|
53
|
+
* @throws {AuthorizationError} when the token is invalid, expired, or
|
|
54
|
+
* signature verification fails.
|
|
55
|
+
*/
|
|
56
|
+
assertValidToken(jwt: string): Promise<KeycloakAccessTokenPayload>;
|
|
57
|
+
/**
|
|
58
|
+
* Verifies the JWT signature against the Keycloak JWKS endpoint.
|
|
59
|
+
* Lazily creates the JWKS keystore on first call.
|
|
60
|
+
*/
|
|
61
|
+
private verifyAgainstJwks;
|
|
9
62
|
}
|