@acorex-platform/framework-server 0.0.33 → 0.0.37
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/background-job/src/lib/schedule/background-job-schedule-scanner.service.d.ts.map +1 -1
- package/background-job/src/lib/schedule/background-job-schedule-scanner.service.js +29 -2
- package/background-job/src/lib/schedule/background-job-schedule-scanner.service.js.map +1 -1
- package/core/src/lib/runtime/runtime-authz.guard.d.ts +3 -2
- package/core/src/lib/runtime/runtime-authz.guard.d.ts.map +1 -1
- package/core/src/lib/runtime/runtime-authz.guard.js +7 -6
- package/core/src/lib/runtime/runtime-authz.guard.js.map +1 -1
- package/domain/seed/src/lib/category-companion-entity.builder.d.ts +1 -1
- package/domain/seed/src/lib/category-companion-entity.builder.d.ts.map +1 -1
- package/domain/seed/src/lib/category-companion-entity.builder.js +64 -0
- package/domain/seed/src/lib/category-companion-entity.builder.js.map +1 -1
- package/jql/schema/src/lib/generated/widget-data-types.bootstrap.js +1 -1
- package/jql/schema/src/lib/generated/widget-data-types.bootstrap.js.map +1 -1
- package/package.json +2 -2
- package/realtime/src/lib/auth/auth-security-alert-realtime.listener.d.ts +18 -0
- package/realtime/src/lib/auth/auth-security-alert-realtime.listener.d.ts.map +1 -0
- package/realtime/src/lib/auth/auth-security-alert-realtime.listener.js +90 -0
- package/realtime/src/lib/auth/auth-security-alert-realtime.listener.js.map +1 -0
- package/realtime/src/lib/delivery/socket-io-realtime.delivery.d.ts.map +1 -1
- package/realtime/src/lib/delivery/socket-io-realtime.delivery.js +9 -4
- package/realtime/src/lib/delivery/socket-io-realtime.delivery.js.map +1 -1
- package/realtime/src/lib/gateway/realtime-ws-auth.d.ts +1 -1
- package/realtime/src/lib/gateway/realtime-ws-auth.d.ts.map +1 -1
- package/realtime/src/lib/gateway/realtime-ws-auth.js +4 -2
- package/realtime/src/lib/gateway/realtime-ws-auth.js.map +1 -1
- package/realtime/src/lib/gateway/realtime.gateway.d.ts +1 -0
- package/realtime/src/lib/gateway/realtime.gateway.d.ts.map +1 -1
- package/realtime/src/lib/gateway/realtime.gateway.js +9 -2
- package/realtime/src/lib/gateway/realtime.gateway.js.map +1 -1
- package/realtime/src/lib/realtime.module.d.ts.map +1 -1
- package/realtime/src/lib/realtime.module.js +2 -0
- package/realtime/src/lib/realtime.module.js.map +1 -1
- package/realtime/src/lib/rooms/realtime-rooms.util.d.ts +8 -0
- package/realtime/src/lib/rooms/realtime-rooms.util.d.ts.map +1 -1
- package/realtime/src/lib/rooms/realtime-rooms.util.js +22 -0
- package/realtime/src/lib/rooms/realtime-rooms.util.js.map +1 -1
- package/realtime/src/lib/services/realtime-publisher.service.d.ts.map +1 -1
- package/realtime/src/lib/services/realtime-publisher.service.js +7 -1
- package/realtime/src/lib/services/realtime-publisher.service.js.map +1 -1
- package/realtime/src/lib/topics/realtime-topics.d.ts +1 -0
- package/realtime/src/lib/topics/realtime-topics.d.ts.map +1 -1
- package/realtime/src/lib/topics/realtime-topics.js +2 -1
- package/realtime/src/lib/topics/realtime-topics.js.map +1 -1
- package/realtime/src/lib/types/realtime.types.d.ts +19 -0
- package/realtime/src/lib/types/realtime.types.d.ts.map +1 -1
- package/realtime/src/lib/types/realtime.types.js.map +1 -1
- package/security/src/index.d.ts +4 -0
- package/security/src/index.d.ts.map +1 -1
- package/security/src/index.js +5 -0
- package/security/src/index.js.map +1 -1
- package/security/src/lib/auth/auth-cookie-response.util.d.ts.map +1 -1
- package/security/src/lib/auth/auth-cookie-response.util.js +4 -1
- package/security/src/lib/auth/auth-cookie-response.util.js.map +1 -1
- package/security/src/lib/auth/auth-cookie.service.d.ts +2 -0
- package/security/src/lib/auth/auth-cookie.service.d.ts.map +1 -1
- package/security/src/lib/auth/auth-cookie.service.js +17 -0
- package/security/src/lib/auth/auth-cookie.service.js.map +1 -1
- package/security/src/lib/auth/auth-csrf.middleware.d.ts +14 -0
- package/security/src/lib/auth/auth-csrf.middleware.d.ts.map +1 -0
- package/security/src/lib/auth/auth-csrf.middleware.js +60 -0
- package/security/src/lib/auth/auth-csrf.middleware.js.map +1 -0
- package/security/src/lib/auth/auth-identity-provider.source.d.ts +11 -0
- package/security/src/lib/auth/auth-identity-provider.source.d.ts.map +1 -1
- package/security/src/lib/auth/auth-identity-provider.source.js +6 -1
- package/security/src/lib/auth/auth-identity-provider.source.js.map +1 -1
- package/security/src/lib/auth/auth-local-credentials.service.d.ts +8 -0
- package/security/src/lib/auth/auth-local-credentials.service.d.ts.map +1 -1
- package/security/src/lib/auth/auth-local-credentials.service.js +41 -16
- package/security/src/lib/auth/auth-local-credentials.service.js.map +1 -1
- package/security/src/lib/auth/auth-max-device-sessions-policy.d.ts +14 -0
- package/security/src/lib/auth/auth-max-device-sessions-policy.d.ts.map +1 -0
- package/security/src/lib/auth/auth-max-device-sessions-policy.js +48 -0
- package/security/src/lib/auth/auth-max-device-sessions-policy.js.map +1 -0
- package/security/src/lib/auth/auth-runtime.handlers.d.ts +15 -3
- package/security/src/lib/auth/auth-runtime.handlers.d.ts.map +1 -1
- package/security/src/lib/auth/auth-runtime.handlers.js +51 -3
- package/security/src/lib/auth/auth-runtime.handlers.js.map +1 -1
- package/security/src/lib/auth/auth.config.d.ts +7 -0
- package/security/src/lib/auth/auth.config.d.ts.map +1 -1
- package/security/src/lib/auth/auth.config.js +8 -1
- package/security/src/lib/auth/auth.config.js.map +1 -1
- package/security/src/lib/auth/auth.events.d.ts +22 -0
- package/security/src/lib/auth/auth.events.d.ts.map +1 -1
- package/security/src/lib/auth/auth.events.js +3 -1
- package/security/src/lib/auth/auth.events.js.map +1 -1
- package/security/src/lib/auth/auth.service.d.ts +65 -5
- package/security/src/lib/auth/auth.service.d.ts.map +1 -1
- package/security/src/lib/auth/auth.service.js +311 -10
- package/security/src/lib/auth/auth.service.js.map +1 -1
- package/security/src/lib/auth/auth.types.d.ts +36 -0
- package/security/src/lib/auth/auth.types.d.ts.map +1 -1
- package/security/src/lib/auth/auth.types.js.map +1 -1
- package/security/src/lib/auth/device-session.service.d.ts +59 -1
- package/security/src/lib/auth/device-session.service.d.ts.map +1 -1
- package/security/src/lib/auth/device-session.service.js +299 -28
- package/security/src/lib/auth/device-session.service.js.map +1 -1
- package/security/src/lib/auth/jwt-auth.guard.d.ts +2 -1
- package/security/src/lib/auth/jwt-auth.guard.d.ts.map +1 -1
- package/security/src/lib/auth/jwt-auth.guard.js +4 -2
- package/security/src/lib/auth/jwt-auth.guard.js.map +1 -1
- package/security/src/lib/auth/login-attempt.service.d.ts +14 -3
- package/security/src/lib/auth/login-attempt.service.d.ts.map +1 -1
- package/security/src/lib/auth/login-attempt.service.js +35 -10
- package/security/src/lib/auth/login-attempt.service.js.map +1 -1
- package/security/src/lib/auth/request-meta.util.js +64 -11
- package/security/src/lib/auth/request-meta.util.js.map +1 -1
- package/security/src/lib/auth/token-revocation.constants.d.ts +9 -0
- package/security/src/lib/auth/token-revocation.constants.d.ts.map +1 -0
- package/security/src/lib/auth/token-revocation.constants.js +14 -0
- package/security/src/lib/auth/token-revocation.constants.js.map +1 -0
- package/security/src/lib/auth/token.service.d.ts +26 -1
- package/security/src/lib/auth/token.service.d.ts.map +1 -1
- package/security/src/lib/auth/token.service.js +105 -4
- package/security/src/lib/auth/token.service.js.map +1 -1
- package/security/src/lib/oauth/connect.controller.d.ts +81 -7
- package/security/src/lib/oauth/connect.controller.d.ts.map +1 -1
- package/security/src/lib/oauth/connect.controller.js +264 -36
- package/security/src/lib/oauth/connect.controller.js.map +1 -1
- package/security/src/lib/oauth/oauth-bff.util.d.ts +9 -0
- package/security/src/lib/oauth/oauth-bff.util.d.ts.map +1 -0
- package/security/src/lib/oauth/oauth-bff.util.js +30 -0
- package/security/src/lib/oauth/oauth-bff.util.js.map +1 -0
- package/security/src/lib/oauth/oauth-claims.util.d.ts +6 -0
- package/security/src/lib/oauth/oauth-claims.util.d.ts.map +1 -0
- package/security/src/lib/oauth/oauth-claims.util.js +36 -0
- package/security/src/lib/oauth/oauth-claims.util.js.map +1 -0
- package/security/src/lib/oauth/oauth-client-registry.service.d.ts +25 -0
- package/security/src/lib/oauth/oauth-client-registry.service.d.ts.map +1 -0
- package/security/src/lib/oauth/oauth-client-registry.service.js +201 -0
- package/security/src/lib/oauth/oauth-client-registry.service.js.map +1 -0
- package/security/src/lib/oauth/oauth-connect.exception-filter.d.ts +10 -0
- package/security/src/lib/oauth/oauth-connect.exception-filter.d.ts.map +1 -0
- package/security/src/lib/oauth/oauth-connect.exception-filter.js +59 -0
- package/security/src/lib/oauth/oauth-connect.exception-filter.js.map +1 -0
- package/security/src/lib/oauth/oauth-error.util.d.ts +23 -0
- package/security/src/lib/oauth/oauth-error.util.d.ts.map +1 -0
- package/security/src/lib/oauth/oauth-error.util.js +114 -0
- package/security/src/lib/oauth/oauth-error.util.js.map +1 -0
- package/security/src/lib/oauth/oauth-grant-store.interface.d.ts +16 -0
- package/security/src/lib/oauth/oauth-grant-store.interface.d.ts.map +1 -0
- package/security/src/lib/oauth/oauth-grant-store.interface.js +14 -0
- package/security/src/lib/oauth/oauth-grant-store.interface.js.map +1 -0
- package/security/src/lib/oauth/oauth-issuer.util.d.ts +7 -0
- package/security/src/lib/oauth/oauth-issuer.util.d.ts.map +1 -0
- package/security/src/lib/oauth/oauth-issuer.util.js +25 -0
- package/security/src/lib/oauth/oauth-issuer.util.js.map +1 -0
- package/security/src/lib/oauth/oauth-op.service.d.ts +35 -0
- package/security/src/lib/oauth/oauth-op.service.d.ts.map +1 -0
- package/security/src/lib/oauth/oauth-op.service.js +152 -0
- package/security/src/lib/oauth/oauth-op.service.js.map +1 -0
- package/security/src/lib/oauth/oauth-op.types.d.ts +73 -0
- package/security/src/lib/oauth/oauth-op.types.d.ts.map +1 -0
- package/security/src/lib/oauth/oauth-op.types.js +5 -0
- package/security/src/lib/oauth/oauth-op.types.js.map +1 -0
- package/security/src/lib/oauth/oauth-provider-hint.util.d.ts +8 -0
- package/security/src/lib/oauth/oauth-provider-hint.util.d.ts.map +1 -0
- package/security/src/lib/oauth/oauth-provider-hint.util.js +24 -0
- package/security/src/lib/oauth/oauth-provider-hint.util.js.map +1 -0
- package/security/src/lib/oauth/oauth-redis-oidc-adapter.d.ts +27 -0
- package/security/src/lib/oauth/oauth-redis-oidc-adapter.d.ts.map +1 -0
- package/security/src/lib/oauth/oauth-redis-oidc-adapter.js +159 -0
- package/security/src/lib/oauth/oauth-redis-oidc-adapter.js.map +1 -0
- package/security/src/lib/oauth/oauth-rp.service.d.ts +53 -0
- package/security/src/lib/oauth/oauth-rp.service.d.ts.map +1 -0
- package/security/src/lib/oauth/oauth-rp.service.js +371 -0
- package/security/src/lib/oauth/oauth-rp.service.js.map +1 -0
- package/security/src/lib/oauth/oauth-rp.types.d.ts +25 -0
- package/security/src/lib/oauth/oauth-rp.types.d.ts.map +1 -0
- package/security/src/lib/oauth/oauth-rp.types.js +5 -0
- package/security/src/lib/oauth/oauth-rp.types.js.map +1 -0
- package/security/src/lib/oauth/oidc-provider-engine.service.d.ts +25 -0
- package/security/src/lib/oauth/oidc-provider-engine.service.d.ts.map +1 -0
- package/security/src/lib/oauth/oidc-provider-engine.service.js +208 -0
- package/security/src/lib/oauth/oidc-provider-engine.service.js.map +1 -0
- package/security/src/lib/oauth/platform-oauth.service.d.ts +43 -14
- package/security/src/lib/oauth/platform-oauth.service.d.ts.map +1 -1
- package/security/src/lib/oauth/platform-oauth.service.js +177 -170
- package/security/src/lib/oauth/platform-oauth.service.js.map +1 -1
- package/security/src/lib/oauth/platform-oauth.types.d.ts +11 -3
- package/security/src/lib/oauth/platform-oauth.types.d.ts.map +1 -1
- package/security/src/lib/oauth/platform-oauth.types.js.map +1 -1
- package/security/src/lib/oauth/redis-oauth-grant-store.service.d.ts +22 -0
- package/security/src/lib/oauth/redis-oauth-grant-store.service.d.ts.map +1 -0
- package/security/src/lib/oauth/redis-oauth-grant-store.service.js +132 -0
- package/security/src/lib/oauth/redis-oauth-grant-store.service.js.map +1 -0
- package/security/src/lib/oauth/testing/in-memory-oauth-grant-store.d.ts +14 -0
- package/security/src/lib/oauth/testing/in-memory-oauth-grant-store.d.ts.map +1 -0
- package/security/src/lib/oauth/testing/in-memory-oauth-grant-store.js +46 -0
- package/security/src/lib/oauth/testing/in-memory-oauth-grant-store.js.map +1 -0
- package/security/src/lib/oauth/testing/jest-empty-module.d.ts +4 -0
- package/security/src/lib/oauth/testing/jest-empty-module.d.ts.map +1 -0
- package/security/src/lib/oauth/testing/jest-empty-module.js +11 -0
- package/security/src/lib/oauth/testing/jest-empty-module.js.map +1 -0
- package/security/src/lib/oauth/testing/mock-oidc-provider.d.ts +49 -0
- package/security/src/lib/oauth/testing/mock-oidc-provider.d.ts.map +1 -0
- package/security/src/lib/oauth/testing/mock-oidc-provider.js +158 -0
- package/security/src/lib/oauth/testing/mock-oidc-provider.js.map +1 -0
- package/security/src/lib/security.module.d.ts.map +1 -1
- package/security/src/lib/security.module.js +31 -0
- package/security/src/lib/security.module.js.map +1 -1
- package/security/src/lib/session/backend-session.types.d.ts +2 -0
- package/security/src/lib/session/backend-session.types.d.ts.map +1 -1
- package/security/src/lib/session/backend-session.types.js.map +1 -1
- package/security/src/lib/session/optional-jwt-session.middleware.d.ts +6 -4
- package/security/src/lib/session/optional-jwt-session.middleware.d.ts.map +1 -1
- package/security/src/lib/session/optional-jwt-session.middleware.js +18 -7
- package/security/src/lib/session/optional-jwt-session.middleware.js.map +1 -1
|
@@ -0,0 +1,371 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var OAuthRpService_1;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.OAuthRpService = void 0;
|
|
5
|
+
const tslib_1 = require("tslib");
|
|
6
|
+
const common_1 = require("@nestjs/common");
|
|
7
|
+
const crypto_1 = require("crypto");
|
|
8
|
+
const jwt = tslib_1.__importStar(require("jsonwebtoken"));
|
|
9
|
+
let OAuthRpService = OAuthRpService_1 = class OAuthRpService {
|
|
10
|
+
constructor() {
|
|
11
|
+
this.logger = new common_1.Logger(OAuthRpService_1.name);
|
|
12
|
+
this.jwksCache = new Map();
|
|
13
|
+
this.jwksTtlMs = Number(process.env['AUTH_OAUTH_JWKS_CACHE_TTL_MS'] ?? 900_000);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Builds external IdP authorization URL.
|
|
17
|
+
* This service is RP-only: no session/token issuance.
|
|
18
|
+
*/
|
|
19
|
+
buildAuthorizationUrl(broker, callbackUrl, state, nonce) {
|
|
20
|
+
const params = new URLSearchParams({
|
|
21
|
+
client_id: broker.clientId,
|
|
22
|
+
redirect_uri: callbackUrl,
|
|
23
|
+
response_type: 'code',
|
|
24
|
+
scope: broker.scopes,
|
|
25
|
+
state,
|
|
26
|
+
access_type: 'online',
|
|
27
|
+
prompt: 'select_account',
|
|
28
|
+
});
|
|
29
|
+
if (nonce?.trim()) {
|
|
30
|
+
params.set('nonce', nonce.trim());
|
|
31
|
+
}
|
|
32
|
+
return `${broker.authorizationUrl}?${params.toString()}`;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Exchanges external authorization code for token response.
|
|
36
|
+
* Returns raw id_token (if present) and access_token (for UserInfo fallback).
|
|
37
|
+
*/
|
|
38
|
+
async exchangeCode(broker, code, callbackUrl) {
|
|
39
|
+
const body = new URLSearchParams({
|
|
40
|
+
code,
|
|
41
|
+
client_id: broker.clientId,
|
|
42
|
+
client_secret: broker.clientSecret,
|
|
43
|
+
redirect_uri: callbackUrl,
|
|
44
|
+
grant_type: 'authorization_code',
|
|
45
|
+
});
|
|
46
|
+
const tokenResponse = await fetch(broker.tokenUrl, {
|
|
47
|
+
method: 'POST',
|
|
48
|
+
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
|
|
49
|
+
body: body.toString(),
|
|
50
|
+
});
|
|
51
|
+
if (!tokenResponse.ok) {
|
|
52
|
+
const detail = await tokenResponse.text().catch(() => '');
|
|
53
|
+
this.logger.warn(`External token exchange failed: ${detail}`);
|
|
54
|
+
throw new common_1.UnauthorizedException('External authorization failed.');
|
|
55
|
+
}
|
|
56
|
+
const tokenData = (await tokenResponse.json());
|
|
57
|
+
const accessToken = tokenData.access_token;
|
|
58
|
+
if (!accessToken) {
|
|
59
|
+
throw new common_1.UnauthorizedException('External authorization failed (missing access_token).');
|
|
60
|
+
}
|
|
61
|
+
return { idToken: tokenData.id_token, accessToken };
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Verifies external id_token using external JWKS (fetched from issuer).
|
|
65
|
+
* Validates audience + nonce (when expectedNonce is provided) and returns normalized profile.
|
|
66
|
+
* When JWKS is unreachable for Google (common corporate/geo blocks on
|
|
67
|
+
* `www.googleapis.com/.../certs`), falls back to Google `tokeninfo` over
|
|
68
|
+
* `oauth2.googleapis.com` which still cryptographically validates the JWT.
|
|
69
|
+
*/
|
|
70
|
+
async verifyAndNormalizeIdToken(rawJwt, _broker, expectedNonce, expectedAudience) {
|
|
71
|
+
const parts = rawJwt.split('.');
|
|
72
|
+
if (parts.length < 2) {
|
|
73
|
+
throw new common_1.UnauthorizedException('Invalid id_token.');
|
|
74
|
+
}
|
|
75
|
+
const header = JSON.parse(Buffer.from(parts[0], 'base64url').toString('utf8'));
|
|
76
|
+
const payload = JSON.parse(Buffer.from(parts[1], 'base64url').toString('utf8'));
|
|
77
|
+
const sub = payload.sub;
|
|
78
|
+
const issuer = payload.iss;
|
|
79
|
+
if (!sub || !issuer) {
|
|
80
|
+
throw new common_1.UnauthorizedException('Invalid id_token (missing sub/iss).');
|
|
81
|
+
}
|
|
82
|
+
const expectedIssuer = await this.resolveExpectedIssuer(_broker);
|
|
83
|
+
if (!this.issuersMatch(issuer, expectedIssuer)) {
|
|
84
|
+
this.logger.warn(`External id_token iss mismatch: token=${issuer} expected=${expectedIssuer}`);
|
|
85
|
+
throw new common_1.UnauthorizedException('Invalid issuer.');
|
|
86
|
+
}
|
|
87
|
+
const issuerUrl = this.normalizeIssuerUrl(issuer);
|
|
88
|
+
const kid = header.kid?.trim();
|
|
89
|
+
const alg = header.alg?.trim();
|
|
90
|
+
if (!alg) {
|
|
91
|
+
throw new common_1.UnauthorizedException('Invalid id_token (missing alg).');
|
|
92
|
+
}
|
|
93
|
+
try {
|
|
94
|
+
return await this.verifyIdTokenWithJwks(rawJwt, issuerUrl, alg, kid, expectedAudience, expectedNonce);
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
if (!this.isGoogleIssuer(issuerUrl)) {
|
|
98
|
+
throw error;
|
|
99
|
+
}
|
|
100
|
+
this.logger.warn(`Google JWKS verify failed; falling back to tokeninfo: ${error instanceof Error ? error.message : String(error)}`);
|
|
101
|
+
try {
|
|
102
|
+
const profile = await this.verifyGoogleIdTokenViaTokenInfo(rawJwt, payload, issuerUrl, expectedAudience, expectedNonce);
|
|
103
|
+
this.logger.log('Google id_token verified via tokeninfo fallback');
|
|
104
|
+
return profile;
|
|
105
|
+
}
|
|
106
|
+
catch (fallbackError) {
|
|
107
|
+
this.logger.warn(`Google tokeninfo fallback failed: ${fallbackError instanceof Error ? fallbackError.message : String(fallbackError)}`);
|
|
108
|
+
throw fallbackError;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
async verifyIdTokenWithJwks(rawJwt, issuerUrl, alg, kid, expectedAudience, expectedNonce) {
|
|
113
|
+
const jwks = await this.fetchJwksWithRotation(issuerUrl, kid);
|
|
114
|
+
const jwk = kid ? jwks.keys.find((k) => k.kid === kid) : jwks.keys[0];
|
|
115
|
+
if (!jwk) {
|
|
116
|
+
throw new common_1.UnauthorizedException('JWKS does not contain the expected key.');
|
|
117
|
+
}
|
|
118
|
+
let publicKey;
|
|
119
|
+
try {
|
|
120
|
+
publicKey = (0, crypto_1.createPublicKey)({ key: jwk, format: 'jwk' });
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
throw new common_1.UnauthorizedException('Invalid JWKS key.');
|
|
124
|
+
}
|
|
125
|
+
let verified;
|
|
126
|
+
try {
|
|
127
|
+
const verifyOptions = {
|
|
128
|
+
algorithms: [alg],
|
|
129
|
+
issuer: [issuerUrl, issuerUrl.replace(/^https:\/\//, '')],
|
|
130
|
+
};
|
|
131
|
+
if (expectedAudience?.trim()) {
|
|
132
|
+
verifyOptions.audience = expectedAudience.trim();
|
|
133
|
+
}
|
|
134
|
+
verified = jwt.verify(rawJwt, publicKey, verifyOptions);
|
|
135
|
+
}
|
|
136
|
+
catch (error) {
|
|
137
|
+
this.logger.warn(`External id_token verification failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
138
|
+
throw new common_1.UnauthorizedException('Invalid or untrusted id_token.');
|
|
139
|
+
}
|
|
140
|
+
this.assertNonce(verified.nonce, expectedNonce);
|
|
141
|
+
return {
|
|
142
|
+
sub: verified.sub,
|
|
143
|
+
issuer: issuerUrl,
|
|
144
|
+
email: verified.email,
|
|
145
|
+
emailVerified: verified.email_verified,
|
|
146
|
+
name: verified.name,
|
|
147
|
+
picture: verified.picture,
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Google tokeninfo validates the ID Token when local JWKS download is blocked
|
|
152
|
+
* (e.g. 403 on www.googleapis.com/oauth2/v3/certs).
|
|
153
|
+
* Prefer POST body so long JWTs are not truncated in the query string.
|
|
154
|
+
*/
|
|
155
|
+
async verifyGoogleIdTokenViaTokenInfo(rawJwt, payload, issuerUrl, expectedAudience, expectedNonce) {
|
|
156
|
+
let response;
|
|
157
|
+
try {
|
|
158
|
+
response = await fetch('https://oauth2.googleapis.com/tokeninfo', {
|
|
159
|
+
method: 'POST',
|
|
160
|
+
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
|
|
161
|
+
body: new URLSearchParams({ id_token: rawJwt }).toString(),
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
catch (error) {
|
|
165
|
+
this.logger.warn(`Google tokeninfo request failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
166
|
+
throw new common_1.UnauthorizedException('Google tokeninfo verification failed.');
|
|
167
|
+
}
|
|
168
|
+
let data;
|
|
169
|
+
try {
|
|
170
|
+
data = (await response.json());
|
|
171
|
+
}
|
|
172
|
+
catch {
|
|
173
|
+
throw new common_1.UnauthorizedException('Google tokeninfo verification failed.');
|
|
174
|
+
}
|
|
175
|
+
if (!response.ok || typeof data['error'] === 'string') {
|
|
176
|
+
this.logger.warn(`Google tokeninfo rejected id_token: HTTP ${response.status} error=${String(data['error'] ?? '')}`);
|
|
177
|
+
throw new common_1.UnauthorizedException('Invalid or untrusted id_token.');
|
|
178
|
+
}
|
|
179
|
+
const sub = typeof data['sub'] === 'string' ? data['sub'] : payload.sub;
|
|
180
|
+
if (!sub) {
|
|
181
|
+
throw new common_1.UnauthorizedException('Invalid id_token (missing sub/iss).');
|
|
182
|
+
}
|
|
183
|
+
const aud = data['aud'];
|
|
184
|
+
if (expectedAudience?.trim()) {
|
|
185
|
+
const audiences = Array.isArray(aud) ? aud : [aud];
|
|
186
|
+
if (!audiences.some((value) => value === expectedAudience.trim())) {
|
|
187
|
+
this.logger.warn(`Google tokeninfo aud mismatch: got=${JSON.stringify(aud)} expected=${expectedAudience}`);
|
|
188
|
+
throw new common_1.UnauthorizedException('Invalid or untrusted id_token.');
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
const expRaw = data['exp'] ?? payload.exp;
|
|
192
|
+
const exp = typeof expRaw === 'string' ? Number(expRaw) : typeof expRaw === 'number' ? expRaw : NaN;
|
|
193
|
+
if (!Number.isFinite(exp) || exp * 1000 <= Date.now()) {
|
|
194
|
+
throw new common_1.UnauthorizedException('Invalid or untrusted id_token.');
|
|
195
|
+
}
|
|
196
|
+
this.assertNonce(payload.nonce, expectedNonce);
|
|
197
|
+
const emailVerifiedRaw = data['email_verified'] ?? payload.email_verified;
|
|
198
|
+
const emailVerified = typeof emailVerifiedRaw === 'boolean'
|
|
199
|
+
? emailVerifiedRaw
|
|
200
|
+
: emailVerifiedRaw === 'true'
|
|
201
|
+
? true
|
|
202
|
+
: emailVerifiedRaw === 'false'
|
|
203
|
+
? false
|
|
204
|
+
: undefined;
|
|
205
|
+
return {
|
|
206
|
+
sub,
|
|
207
|
+
issuer: issuerUrl,
|
|
208
|
+
email: typeof data['email'] === 'string' ? data['email'] : payload.email,
|
|
209
|
+
emailVerified,
|
|
210
|
+
name: typeof data['name'] === 'string' ? data['name'] : payload.name,
|
|
211
|
+
picture: typeof data['picture'] === 'string' ? data['picture'] : payload.picture,
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
assertNonce(actual, expectedNonce) {
|
|
215
|
+
if (!expectedNonce?.trim()) {
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
if (!actual || actual !== expectedNonce.trim()) {
|
|
219
|
+
throw new common_1.UnauthorizedException('Invalid nonce.');
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
async fetchUserInfo(accessToken, userInfoUrl) {
|
|
223
|
+
const profileResponse = await fetch(userInfoUrl, {
|
|
224
|
+
headers: { Authorization: `Bearer ${accessToken}` },
|
|
225
|
+
});
|
|
226
|
+
if (!profileResponse.ok) {
|
|
227
|
+
throw new common_1.UnauthorizedException('External profile lookup failed.');
|
|
228
|
+
}
|
|
229
|
+
const data = (await profileResponse.json());
|
|
230
|
+
const emailVerifiedRaw = data['email_verified'];
|
|
231
|
+
const emailVerified = typeof emailVerifiedRaw === 'boolean' ? emailVerifiedRaw : undefined;
|
|
232
|
+
return {
|
|
233
|
+
sub: typeof data['sub'] === 'string' ? data['sub'] : undefined,
|
|
234
|
+
email: typeof data['email'] === 'string' ? data['email'] : undefined,
|
|
235
|
+
emailVerified,
|
|
236
|
+
name: typeof data['name'] === 'string' ? data['name'] : undefined,
|
|
237
|
+
picture: typeof data['picture'] === 'string' ? data['picture'] : undefined,
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Resolves the OIDC issuer to compare against ID Token `iss`.
|
|
242
|
+
* Prefer configured `issuerUrl` — token endpoint origin is often wrong
|
|
243
|
+
* (Google: token at oauth2.googleapis.com, iss = accounts.google.com).
|
|
244
|
+
*/
|
|
245
|
+
async resolveExpectedIssuer(broker) {
|
|
246
|
+
const configured = broker.issuerUrl?.trim()?.replace(/\/$/, '');
|
|
247
|
+
if (configured) {
|
|
248
|
+
return configured;
|
|
249
|
+
}
|
|
250
|
+
const discoveryOrigins = [];
|
|
251
|
+
for (const raw of [broker.authorizationUrl, broker.tokenUrl]) {
|
|
252
|
+
try {
|
|
253
|
+
const origin = new URL(raw).origin;
|
|
254
|
+
if (!discoveryOrigins.includes(origin)) {
|
|
255
|
+
discoveryOrigins.push(origin);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
catch {
|
|
259
|
+
/* ignore malformed URLs */
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
for (const origin of discoveryOrigins) {
|
|
263
|
+
try {
|
|
264
|
+
const response = await fetch(`${origin}/.well-known/openid-configuration`);
|
|
265
|
+
if (!response.ok) {
|
|
266
|
+
continue;
|
|
267
|
+
}
|
|
268
|
+
const data = (await response.json());
|
|
269
|
+
if (typeof data['issuer'] === 'string' && data['issuer'].trim()) {
|
|
270
|
+
return data['issuer'].replace(/\/$/, '');
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
catch (error) {
|
|
274
|
+
this.logger.warn(`External issuer discovery failed for ${origin}: ${error instanceof Error ? error.message : String(error)}`);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
return discoveryOrigins[0] ?? new URL(broker.tokenUrl).origin;
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Google historically issues both `https://accounts.google.com` and `accounts.google.com`.
|
|
281
|
+
*/
|
|
282
|
+
issuersMatch(actual, expected) {
|
|
283
|
+
return this.normalizeIssuerUrl(actual) === this.normalizeIssuerUrl(expected);
|
|
284
|
+
}
|
|
285
|
+
normalizeIssuerUrl(issuer) {
|
|
286
|
+
const trimmed = issuer.trim().replace(/\/$/, '');
|
|
287
|
+
if (trimmed === 'accounts.google.com') {
|
|
288
|
+
return 'https://accounts.google.com';
|
|
289
|
+
}
|
|
290
|
+
if (!/^https?:\/\//i.test(trimmed) && trimmed.includes('.')) {
|
|
291
|
+
return `https://${trimmed}`;
|
|
292
|
+
}
|
|
293
|
+
return trimmed;
|
|
294
|
+
}
|
|
295
|
+
isGoogleIssuer(issuerUrl) {
|
|
296
|
+
return this.normalizeIssuerUrl(issuerUrl) === 'https://accounts.google.com';
|
|
297
|
+
}
|
|
298
|
+
async fetchJwksWithRotation(issuer, kid) {
|
|
299
|
+
const normalizedIssuer = this.normalizeIssuerUrl(issuer);
|
|
300
|
+
const cached = this.jwksCache.get(normalizedIssuer);
|
|
301
|
+
if (cached && cached.expiresAt > Date.now()) {
|
|
302
|
+
if (!kid || cached.keys.some((key) => key.kid === kid)) {
|
|
303
|
+
return { keys: cached.keys };
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
const fresh = await this.fetchJwks(normalizedIssuer);
|
|
307
|
+
this.jwksCache.set(normalizedIssuer, {
|
|
308
|
+
keys: fresh.keys,
|
|
309
|
+
expiresAt: Date.now() + this.jwksTtlMs,
|
|
310
|
+
});
|
|
311
|
+
if (kid && !fresh.keys.some((key) => key.kid === kid)) {
|
|
312
|
+
this.jwksCache.delete(normalizedIssuer);
|
|
313
|
+
const rotated = await this.fetchJwks(normalizedIssuer);
|
|
314
|
+
this.jwksCache.set(normalizedIssuer, {
|
|
315
|
+
keys: rotated.keys,
|
|
316
|
+
expiresAt: Date.now() + this.jwksTtlMs,
|
|
317
|
+
});
|
|
318
|
+
return rotated;
|
|
319
|
+
}
|
|
320
|
+
return fresh;
|
|
321
|
+
}
|
|
322
|
+
async fetchJwks(issuer) {
|
|
323
|
+
const base = this.normalizeIssuerUrl(issuer);
|
|
324
|
+
const discoveryUrl = `${base}/.well-known/openid-configuration`;
|
|
325
|
+
try {
|
|
326
|
+
const discovery = await fetch(discoveryUrl);
|
|
327
|
+
if (discovery.ok) {
|
|
328
|
+
const discoveryJson = (await discovery.json());
|
|
329
|
+
const jwksUri = typeof discoveryJson['jwks_uri'] === 'string' ? discoveryJson['jwks_uri'] : null;
|
|
330
|
+
if (jwksUri) {
|
|
331
|
+
// Do not swallow JWKS URI failures — fall through to issuer jwks.json only when
|
|
332
|
+
// discovery itself failed or omitted jwks_uri.
|
|
333
|
+
return await this.fetchJwksFromUrl(jwksUri);
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
catch (error) {
|
|
338
|
+
if (error instanceof common_1.UnauthorizedException) {
|
|
339
|
+
throw error;
|
|
340
|
+
}
|
|
341
|
+
this.logger.warn(`External JWKS discovery failed for ${base}: ${error instanceof Error ? error.message : String(error)}`);
|
|
342
|
+
}
|
|
343
|
+
return await this.fetchJwksFromUrl(`${base}/.well-known/jwks.json`);
|
|
344
|
+
}
|
|
345
|
+
async fetchJwksFromUrl(jwksUrl) {
|
|
346
|
+
let response;
|
|
347
|
+
try {
|
|
348
|
+
response = await fetch(jwksUrl);
|
|
349
|
+
}
|
|
350
|
+
catch (error) {
|
|
351
|
+
this.logger.warn(`External JWKS request failed for ${jwksUrl}: ${error instanceof Error ? error.message : String(error)}`);
|
|
352
|
+
throw new common_1.UnauthorizedException('Failed to fetch external JWKS.');
|
|
353
|
+
}
|
|
354
|
+
if (!response.ok) {
|
|
355
|
+
this.logger.warn(`External JWKS HTTP ${response.status} for ${jwksUrl}`);
|
|
356
|
+
throw new common_1.UnauthorizedException('Failed to fetch external JWKS.');
|
|
357
|
+
}
|
|
358
|
+
const data = (await response.json());
|
|
359
|
+
const keys = Array.isArray(data.keys) ? data.keys : [];
|
|
360
|
+
if (keys.length === 0) {
|
|
361
|
+
throw new common_1.UnauthorizedException('External JWKS is empty.');
|
|
362
|
+
}
|
|
363
|
+
return { keys };
|
|
364
|
+
}
|
|
365
|
+
};
|
|
366
|
+
exports.OAuthRpService = OAuthRpService;
|
|
367
|
+
exports.OAuthRpService = OAuthRpService = OAuthRpService_1 = tslib_1.__decorate([
|
|
368
|
+
(0, common_1.Injectable)()
|
|
369
|
+
], OAuthRpService);
|
|
370
|
+
//#endregion
|
|
371
|
+
//# sourceMappingURL=oauth-rp.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth-rp.service.js","sourceRoot":"","sources":["../../../../../../../../libs/framework/server/security/src/lib/oauth/oauth-rp.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Output of the RP after full cryptographic verification + normalization.
|
|
3
|
+
* This must not depend on OAuth/OpenID provider protocol engine packages.
|
|
4
|
+
*/
|
|
5
|
+
export interface VerifiedExternalOidcProfile {
|
|
6
|
+
/**
|
|
7
|
+
* Subject identifier (OIDC `sub`) from the external IdP.
|
|
8
|
+
*/
|
|
9
|
+
sub: string;
|
|
10
|
+
/**
|
|
11
|
+
* External issuer (`iss`) after strict validation.
|
|
12
|
+
*/
|
|
13
|
+
issuer: string;
|
|
14
|
+
/**
|
|
15
|
+
* Primary email (if provided by the external profile).
|
|
16
|
+
*/
|
|
17
|
+
email?: string;
|
|
18
|
+
/**
|
|
19
|
+
* External `email_verified` claim (if present).
|
|
20
|
+
*/
|
|
21
|
+
emailVerified?: boolean;
|
|
22
|
+
name?: string;
|
|
23
|
+
picture?: string;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=oauth-rp.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth-rp.types.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/framework/server/security/src/lib/oauth/oauth-rp.types.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,WAAW,2BAA2B;IAC1C;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth-rp.types.js","sourceRoot":"","sources":["../../../../../../../../libs/framework/server/security/src/lib/oauth/oauth-rp.types.ts"],"names":[],"mappings":";AAAA,kDAAkD;;AA+BlD,YAAY"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { OnModuleInit } from '@nestjs/common';
|
|
2
|
+
import type { Request, Response } from 'express';
|
|
3
|
+
import { AuthLocalCredentialsService } from '../auth/auth-local-credentials.service';
|
|
4
|
+
import { TokenService } from '../auth/token.service';
|
|
5
|
+
import { OAuthClientRegistryService } from './oauth-client-registry.service';
|
|
6
|
+
export declare class OidcProviderEngineService implements OnModuleInit {
|
|
7
|
+
private readonly clients;
|
|
8
|
+
private readonly credentials;
|
|
9
|
+
private readonly tokens;
|
|
10
|
+
private readonly logger;
|
|
11
|
+
private provider;
|
|
12
|
+
private callbackHandler;
|
|
13
|
+
private issuer;
|
|
14
|
+
constructor(clients: OAuthClientRegistryService, credentials: AuthLocalCredentialsService, tokens: TokenService);
|
|
15
|
+
onModuleInit(): Promise<void>;
|
|
16
|
+
isEnabled(): boolean;
|
|
17
|
+
getIssuer(): string;
|
|
18
|
+
getDiscoveryDocument(): Promise<Record<string, unknown> | null>;
|
|
19
|
+
/**
|
|
20
|
+
* Forwards an Express request to oidc-provider (paths must be issuer-relative, without `/api` prefix).
|
|
21
|
+
*/
|
|
22
|
+
forward(req: Request, res: Response): Promise<void>;
|
|
23
|
+
private bootstrapProvider;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=oidc-provider-engine.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oidc-provider-engine.service.d.ts","sourceRoot":"","sources":["../../../../../../../../libs/framework/server/security/src/lib/oauth/oidc-provider-engine.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGjD,OAAO,EAAE,2BAA2B,EAAE,MAAM,wCAAwC,CAAC;AAErF,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AA0B7E,qBACa,yBAA0B,YAAW,YAAY;IAO1D,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM;IARzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA8C;IACrE,OAAO,CAAC,QAAQ,CAAqC;IACrD,OAAO,CAAC,eAAe,CAAqC;IAC5D,OAAO,CAAC,MAAM,CAAM;gBAGD,OAAO,EAAE,0BAA0B,EACnC,WAAW,EAAE,2BAA2B,EACxC,MAAM,EAAE,YAAY;IAGjC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAcnC,SAAS,IAAI,OAAO;IAIpB,SAAS,IAAI,MAAM;IAIb,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAQrE;;OAEG;IACG,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;YAuB3C,iBAAiB;CA+HhC"}
|