@portaidentity/server 1.12.0 → 1.13.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/CHANGELOG.md +13 -0
- package/dist/config/schema.d.ts +1 -1
- package/dist/middleware/tenant-invite-auth.d.ts +81 -0
- package/dist/middleware/tenant-invite-auth.d.ts.map +1 -0
- package/dist/middleware/tenant-invite-auth.js +280 -0
- package/dist/middleware/tenant-invite-auth.js.map +1 -0
- package/dist/middleware/tenant-invite-rate-limiter.d.ts +21 -0
- package/dist/middleware/tenant-invite-rate-limiter.d.ts.map +1 -0
- package/dist/middleware/tenant-invite-rate-limiter.js +51 -0
- package/dist/middleware/tenant-invite-rate-limiter.js.map +1 -0
- package/dist/oidc/configuration.d.ts.map +1 -1
- package/dist/oidc/configuration.js +13 -2
- package/dist/oidc/configuration.js.map +1 -1
- package/dist/oidc/scopes.d.ts +15 -0
- package/dist/oidc/scopes.d.ts.map +1 -0
- package/dist/oidc/scopes.js +15 -0
- package/dist/oidc/scopes.js.map +1 -0
- package/dist/portability/schema.d.ts +6 -6
- package/dist/routes/tenant-invitations.d.ts +20 -0
- package/dist/routes/tenant-invitations.d.ts.map +1 -0
- package/dist/routes/tenant-invitations.js +111 -0
- package/dist/routes/tenant-invitations.js.map +1 -0
- package/dist/routes/users.d.ts.map +1 -1
- package/dist/routes/users.js +36 -178
- package/dist/routes/users.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +6 -0
- package/dist/server.js.map +1 -1
- package/dist/users/invite-service.d.ts +132 -0
- package/dist/users/invite-service.d.ts.map +1 -0
- package/dist/users/invite-service.js +260 -0
- package/dist/users/invite-service.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,19 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [1.13.0] - 2026-10-24
|
|
9
|
+
|
|
10
|
+
## Added
|
|
11
|
+
- Add tenant-scoped user invitations, including a tenant invite route for service clients and tenant users.
|
|
12
|
+
|
|
13
|
+
## Changed
|
|
14
|
+
- Keep the server dependency pin aligned with the audited lockfile.
|
|
15
|
+
- Keep the exact version pins aligned across the root and server workspace.
|
|
16
|
+
|
|
17
|
+
## Fixed
|
|
18
|
+
- Upgrade nodemailer to the patched 10.1.4 release to resolve remaining moderate production audit advisories.
|
|
19
|
+
- Upgrade zod to the patched 4.6.6 release to resolve high-severity production audit advisory.
|
|
20
|
+
|
|
8
21
|
## [1.12.0] - 2026-10-23
|
|
9
22
|
|
|
10
23
|
Fixed:
|
package/dist/config/schema.d.ts
CHANGED
|
@@ -26,7 +26,7 @@ export declare const configSchema: z.ZodObject<{
|
|
|
26
26
|
warn: "warn";
|
|
27
27
|
}>>;
|
|
28
28
|
trustProxy: z.ZodPipe<z.ZodDefault<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>>, z.ZodTransform<boolean, string | boolean>>;
|
|
29
|
-
trustProxyHops: z.ZodPreprocess<z.ZodDefault<z.ZodCoercedNumber<unknown
|
|
29
|
+
trustProxyHops: z.ZodPreprocess<z.ZodDefault<z.ZodCoercedNumber<unknown>>, unknown>;
|
|
30
30
|
twoFactorEncryptionKey: z.ZodOptional<z.ZodString>;
|
|
31
31
|
signingKeyEncryptionKey: z.ZodString;
|
|
32
32
|
adminCorsOrigins: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tenant-scoped invitation authentication.
|
|
3
|
+
*
|
|
4
|
+
* The tenant invitation route accepts two caller types:
|
|
5
|
+
*
|
|
6
|
+
* - A confidential client using the OAuth `client_credentials` grant. The
|
|
7
|
+
* token must carry the `org:user:invite` scope, the client must be active
|
|
8
|
+
* and confidential, and the client must belong to the route organization.
|
|
9
|
+
* - A tenant user's access token. The user must be active, belong to the
|
|
10
|
+
* route organization, and hold the `org:user:invite` permission in the
|
|
11
|
+
* token client's application.
|
|
12
|
+
*
|
|
13
|
+
* Control-plane clients and the super-admin organization are rejected. This
|
|
14
|
+
* route is deliberately separate from `/api/admin/*`; a Porta administrator
|
|
15
|
+
* uses the existing admin invitation route instead.
|
|
16
|
+
*
|
|
17
|
+
* @module middleware/tenant-invite-auth
|
|
18
|
+
*/
|
|
19
|
+
import type { Middleware } from 'koa';
|
|
20
|
+
import { TENANT_INVITE_PERMISSION, TENANT_INVITE_SCOPE } from '../oidc/scopes.js';
|
|
21
|
+
export { TENANT_INVITE_PERMISSION, TENANT_INVITE_SCOPE };
|
|
22
|
+
/** Minimal provider boundary needed to resolve both supported token types. */
|
|
23
|
+
export interface TenantInviteTokenProvider {
|
|
24
|
+
/** Opaque user access-token model. */
|
|
25
|
+
readonly AccessToken: {
|
|
26
|
+
/** Resolve one user access token. */
|
|
27
|
+
find(token: string): Promise<{
|
|
28
|
+
readonly accountId?: string;
|
|
29
|
+
readonly clientId?: string;
|
|
30
|
+
readonly scopes: ReadonlySet<string>;
|
|
31
|
+
} | undefined>;
|
|
32
|
+
};
|
|
33
|
+
/** Opaque client-credentials token model. */
|
|
34
|
+
readonly ClientCredentials: {
|
|
35
|
+
/** Resolve one service access token. */
|
|
36
|
+
find(token: string): Promise<{
|
|
37
|
+
readonly clientId?: string;
|
|
38
|
+
readonly scopes: ReadonlySet<string>;
|
|
39
|
+
} | undefined>;
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/** Authenticated tenant invitation actor. */
|
|
43
|
+
export type TenantInviteActor = {
|
|
44
|
+
/** Tenant service client. */
|
|
45
|
+
readonly kind: 'service';
|
|
46
|
+
/** Client identifier used for audit and rate limiting. */
|
|
47
|
+
readonly clientId: string;
|
|
48
|
+
/** Application that owns the invite's roles and claims. */
|
|
49
|
+
readonly applicationId: string;
|
|
50
|
+
/** Route organization. */
|
|
51
|
+
readonly organizationId: string;
|
|
52
|
+
/** Safe display name used in the invitation email. */
|
|
53
|
+
readonly displayName: string;
|
|
54
|
+
} | {
|
|
55
|
+
/** Tenant user. */
|
|
56
|
+
readonly kind: 'user';
|
|
57
|
+
/** User identifier used for audit and rate limiting. */
|
|
58
|
+
readonly userId: string;
|
|
59
|
+
/** Application that owns the invite's roles and claims. */
|
|
60
|
+
readonly applicationId: string;
|
|
61
|
+
/** Route organization. */
|
|
62
|
+
readonly organizationId: string;
|
|
63
|
+
/** Safe display name used in the invitation email. */
|
|
64
|
+
readonly displayName: string;
|
|
65
|
+
/** Live permissions used to enforce the delegation ceiling. */
|
|
66
|
+
readonly permissions: ReadonlySet<string>;
|
|
67
|
+
};
|
|
68
|
+
declare module 'koa' {
|
|
69
|
+
interface DefaultState {
|
|
70
|
+
/** Set by requireTenantInviteAuth after a successful caller check. */
|
|
71
|
+
tenantInviteActor?: TenantInviteActor;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Create middleware that authenticates a tenant invitation caller.
|
|
76
|
+
*
|
|
77
|
+
* @param provider - OIDC provider token models, or undefined to fail closed
|
|
78
|
+
* @returns Koa middleware that sets `ctx.state.tenantInviteActor`
|
|
79
|
+
*/
|
|
80
|
+
export declare function requireTenantInviteAuth(provider?: TenantInviteTokenProvider): Middleware;
|
|
81
|
+
//# sourceMappingURL=tenant-invite-auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tenant-invite-auth.d.ts","sourceRoot":"","sources":["../../src/middleware/tenant-invite-auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAItC,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAUlF,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,CAAC;AAEzD,8EAA8E;AAC9E,MAAM,WAAW,yBAAyB;IACxC,sCAAsC;IACtC,QAAQ,CAAC,WAAW,EAAE;QACpB,qCAAqC;QACrC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CACxB;YACE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;YAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;YAC3B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;SACtC,GACD,SAAS,CACZ,CAAC;KACH,CAAC;IACF,6CAA6C;IAC7C,QAAQ,CAAC,iBAAiB,EAAE;QAC1B,wCAAwC;QACxC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CACxB;YACE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;YAC3B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;SACtC,GACD,SAAS,CACZ,CAAC;KACH,CAAC;CACH;AAED,6CAA6C;AAC7C,MAAM,MAAM,iBAAiB,GACzB;IACE,6BAA6B;IAC7B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,0DAA0D;IAC1D,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,2DAA2D;IAC3D,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,0BAA0B;IAC1B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,sDAAsD;IACtD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B,GACD;IACE,mBAAmB;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,wDAAwD;IACxD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,2DAA2D;IAC3D,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,0BAA0B;IAC1B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,sDAAsD;IACtD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,+DAA+D;IAC/D,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC3C,CAAC;AAMN,OAAO,QAAQ,KAAK,CAAC;IACnB,UAAU,YAAY;QACpB,sEAAsE;QACtE,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;KACvC;CACF;AA4LD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,CAAC,EAAE,yBAAyB,GAAG,UAAU,CAuGxF"}
|
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tenant-scoped invitation authentication.
|
|
3
|
+
*
|
|
4
|
+
* The tenant invitation route accepts two caller types:
|
|
5
|
+
*
|
|
6
|
+
* - A confidential client using the OAuth `client_credentials` grant. The
|
|
7
|
+
* token must carry the `org:user:invite` scope, the client must be active
|
|
8
|
+
* and confidential, and the client must belong to the route organization.
|
|
9
|
+
* - A tenant user's access token. The user must be active, belong to the
|
|
10
|
+
* route organization, and hold the `org:user:invite` permission in the
|
|
11
|
+
* token client's application.
|
|
12
|
+
*
|
|
13
|
+
* Control-plane clients and the super-admin organization are rejected. This
|
|
14
|
+
* route is deliberately separate from `/api/admin/*`; a Porta administrator
|
|
15
|
+
* uses the existing admin invitation route instead.
|
|
16
|
+
*
|
|
17
|
+
* @module middleware/tenant-invite-auth
|
|
18
|
+
*/
|
|
19
|
+
import { getApplicationBySlug } from '../applications/service.js';
|
|
20
|
+
import { getClientByClientId } from '../clients/service.js';
|
|
21
|
+
import { logger } from '../lib/logger.js';
|
|
22
|
+
import { TENANT_INVITE_PERMISSION, TENANT_INVITE_SCOPE } from '../oidc/scopes.js';
|
|
23
|
+
import { findSuperAdminOrganization } from '../organizations/repository.js';
|
|
24
|
+
import { buildPermissionClaims } from '../rbac/user-role-service.js';
|
|
25
|
+
import { recordSecurityDecision, recordSecurityReference } from '../security/decision-context.js';
|
|
26
|
+
import { findUserForOidc } from '../users/service.js';
|
|
27
|
+
// ---------------------------------------------------------------------------
|
|
28
|
+
// Public constants and contracts
|
|
29
|
+
// ---------------------------------------------------------------------------
|
|
30
|
+
export { TENANT_INVITE_PERMISSION, TENANT_INVITE_SCOPE };
|
|
31
|
+
// ---------------------------------------------------------------------------
|
|
32
|
+
// Internal helpers
|
|
33
|
+
// ---------------------------------------------------------------------------
|
|
34
|
+
/** Return the authenticated permission set when the scope is granted. */
|
|
35
|
+
function hasInviteScope(scopes) {
|
|
36
|
+
return scopes?.has(TENANT_INVITE_SCOPE) === true;
|
|
37
|
+
}
|
|
38
|
+
/** Build a safe display name from optional profile fields. */
|
|
39
|
+
function displayName(givenName, familyName, fallback) {
|
|
40
|
+
const name = [givenName, familyName].filter((part) => Boolean(part)).join(' ');
|
|
41
|
+
return name.length > 0 ? name : fallback;
|
|
42
|
+
}
|
|
43
|
+
/** Resolve the canonical control-plane application or fail closed. */
|
|
44
|
+
async function loadAdminApplicationId() {
|
|
45
|
+
const application = await getApplicationBySlug('porta-admin');
|
|
46
|
+
return application?.id ?? null;
|
|
47
|
+
}
|
|
48
|
+
/** Resolve the control-plane organization or fail closed. */
|
|
49
|
+
async function loadSuperAdminOrganizationId() {
|
|
50
|
+
const organization = await findSuperAdminOrganization();
|
|
51
|
+
return organization?.id ?? null;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Reject the super-admin organization and the canonical admin application.
|
|
55
|
+
*
|
|
56
|
+
* @returns A fixed denial status when the route is not a tenant surface.
|
|
57
|
+
*/
|
|
58
|
+
async function isTenantBoundary(organizationId, applicationId) {
|
|
59
|
+
const [adminApplicationId, superAdminOrganizationId] = await Promise.all([
|
|
60
|
+
loadAdminApplicationId(),
|
|
61
|
+
loadSuperAdminOrganizationId(),
|
|
62
|
+
]);
|
|
63
|
+
if (!adminApplicationId || !superAdminOrganizationId)
|
|
64
|
+
return false;
|
|
65
|
+
return applicationId !== adminApplicationId && organizationId !== superAdminOrganizationId;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Authorize a client-credentials token.
|
|
69
|
+
*
|
|
70
|
+
* @returns The service actor, or undefined after writing a denial response.
|
|
71
|
+
*/
|
|
72
|
+
async function authorizeService(ctx, organizationId, token) {
|
|
73
|
+
if (!token.clientId || !hasInviteScope(token.scopes)) {
|
|
74
|
+
recordSecurityDecision(ctx, {
|
|
75
|
+
decisionPoint: 'permission',
|
|
76
|
+
reasonCode: 'permission-required',
|
|
77
|
+
outcome: 'deny',
|
|
78
|
+
});
|
|
79
|
+
ctx.status = 403;
|
|
80
|
+
ctx.body = { error: 'Forbidden', message: 'The requested operation is not permitted' };
|
|
81
|
+
return undefined;
|
|
82
|
+
}
|
|
83
|
+
const client = await getClientByClientId(token.clientId);
|
|
84
|
+
if (!client ||
|
|
85
|
+
client.status !== 'active' ||
|
|
86
|
+
client.clientType !== 'confidential' ||
|
|
87
|
+
client.organizationId !== organizationId ||
|
|
88
|
+
!client.scope.split(' ').includes(TENANT_INVITE_SCOPE)) {
|
|
89
|
+
recordSecurityDecision(ctx, {
|
|
90
|
+
decisionPoint: 'membership',
|
|
91
|
+
reasonCode: 'membership-required',
|
|
92
|
+
outcome: 'deny',
|
|
93
|
+
});
|
|
94
|
+
ctx.status = 403;
|
|
95
|
+
ctx.body = { error: 'Forbidden', message: 'The requested operation is not permitted' };
|
|
96
|
+
return undefined;
|
|
97
|
+
}
|
|
98
|
+
if (!(await isTenantBoundary(organizationId, client.applicationId))) {
|
|
99
|
+
recordSecurityDecision(ctx, {
|
|
100
|
+
decisionPoint: 'membership',
|
|
101
|
+
reasonCode: 'membership-required',
|
|
102
|
+
outcome: 'deny',
|
|
103
|
+
});
|
|
104
|
+
ctx.status = 403;
|
|
105
|
+
ctx.body = { error: 'Forbidden', message: 'The requested operation is not permitted' };
|
|
106
|
+
return undefined;
|
|
107
|
+
}
|
|
108
|
+
return {
|
|
109
|
+
kind: 'service',
|
|
110
|
+
clientId: client.clientId,
|
|
111
|
+
applicationId: client.applicationId,
|
|
112
|
+
organizationId,
|
|
113
|
+
displayName: client.clientName,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Authorize a user access token.
|
|
118
|
+
*
|
|
119
|
+
* @returns The user actor, or undefined after writing a denial response.
|
|
120
|
+
*/
|
|
121
|
+
async function authorizeUser(ctx, organizationId, token) {
|
|
122
|
+
if (!token.accountId || !token.clientId) {
|
|
123
|
+
recordSecurityDecision(ctx, {
|
|
124
|
+
decisionPoint: 'authentication',
|
|
125
|
+
reasonCode: 'authentication-required',
|
|
126
|
+
outcome: 'deny',
|
|
127
|
+
});
|
|
128
|
+
ctx.status = 401;
|
|
129
|
+
ctx.body = { error: 'Invalid token', message: 'Token validation failed' };
|
|
130
|
+
return undefined;
|
|
131
|
+
}
|
|
132
|
+
const client = await getClientByClientId(token.clientId);
|
|
133
|
+
if (!client || client.status !== 'active' || client.organizationId !== organizationId) {
|
|
134
|
+
recordSecurityDecision(ctx, {
|
|
135
|
+
decisionPoint: 'membership',
|
|
136
|
+
reasonCode: 'membership-required',
|
|
137
|
+
outcome: 'deny',
|
|
138
|
+
});
|
|
139
|
+
ctx.status = 403;
|
|
140
|
+
ctx.body = { error: 'Forbidden', message: 'The requested operation is not permitted' };
|
|
141
|
+
return undefined;
|
|
142
|
+
}
|
|
143
|
+
if (!(await isTenantBoundary(organizationId, client.applicationId))) {
|
|
144
|
+
recordSecurityDecision(ctx, {
|
|
145
|
+
decisionPoint: 'membership',
|
|
146
|
+
reasonCode: 'membership-required',
|
|
147
|
+
outcome: 'deny',
|
|
148
|
+
});
|
|
149
|
+
ctx.status = 403;
|
|
150
|
+
ctx.body = { error: 'Forbidden', message: 'The requested operation is not permitted' };
|
|
151
|
+
return undefined;
|
|
152
|
+
}
|
|
153
|
+
const user = await findUserForOidc(token.accountId);
|
|
154
|
+
if (!user || user.organizationId !== organizationId) {
|
|
155
|
+
recordSecurityDecision(ctx, {
|
|
156
|
+
decisionPoint: 'membership',
|
|
157
|
+
reasonCode: 'membership-required',
|
|
158
|
+
outcome: 'deny',
|
|
159
|
+
});
|
|
160
|
+
ctx.status = 403;
|
|
161
|
+
ctx.body = { error: 'Forbidden', message: 'The requested operation is not permitted' };
|
|
162
|
+
return undefined;
|
|
163
|
+
}
|
|
164
|
+
const permissions = await buildPermissionClaims(user.id, client.applicationId);
|
|
165
|
+
if (!permissions.includes(TENANT_INVITE_PERMISSION)) {
|
|
166
|
+
recordSecurityDecision(ctx, {
|
|
167
|
+
decisionPoint: 'permission',
|
|
168
|
+
reasonCode: 'permission-required',
|
|
169
|
+
outcome: 'deny',
|
|
170
|
+
});
|
|
171
|
+
ctx.status = 403;
|
|
172
|
+
ctx.body = { error: 'Forbidden', message: 'The requested operation is not permitted' };
|
|
173
|
+
return undefined;
|
|
174
|
+
}
|
|
175
|
+
return {
|
|
176
|
+
kind: 'user',
|
|
177
|
+
userId: user.id,
|
|
178
|
+
applicationId: client.applicationId,
|
|
179
|
+
organizationId,
|
|
180
|
+
displayName: displayName(user.givenName, user.familyName, user.email),
|
|
181
|
+
permissions: new Set(permissions),
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
// ---------------------------------------------------------------------------
|
|
185
|
+
// Middleware factory
|
|
186
|
+
// ---------------------------------------------------------------------------
|
|
187
|
+
/**
|
|
188
|
+
* Create middleware that authenticates a tenant invitation caller.
|
|
189
|
+
*
|
|
190
|
+
* @param provider - OIDC provider token models, or undefined to fail closed
|
|
191
|
+
* @returns Koa middleware that sets `ctx.state.tenantInviteActor`
|
|
192
|
+
*/
|
|
193
|
+
export function requireTenantInviteAuth(provider) {
|
|
194
|
+
return async function tenantInviteAuthMiddleware(ctx, next) {
|
|
195
|
+
if (!provider) {
|
|
196
|
+
logger.error('Tenant invite auth: OIDC provider not initialized');
|
|
197
|
+
recordSecurityDecision(ctx, {
|
|
198
|
+
decisionPoint: 'handler',
|
|
199
|
+
reasonCode: 'handler-failed',
|
|
200
|
+
outcome: 'error',
|
|
201
|
+
});
|
|
202
|
+
ctx.status = 500;
|
|
203
|
+
ctx.body = { error: 'Server configuration error' };
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
const organizationId = ctx.params.orgId;
|
|
207
|
+
if (typeof organizationId !== 'string' || organizationId.length === 0) {
|
|
208
|
+
recordSecurityDecision(ctx, {
|
|
209
|
+
decisionPoint: 'resource',
|
|
210
|
+
reasonCode: 'resource-not-found',
|
|
211
|
+
outcome: 'deny',
|
|
212
|
+
});
|
|
213
|
+
ctx.status = 404;
|
|
214
|
+
ctx.body = { error: 'Organization not found' };
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
const authHeader = ctx.get('Authorization');
|
|
218
|
+
if (!authHeader.startsWith('Bearer ')) {
|
|
219
|
+
recordSecurityDecision(ctx, {
|
|
220
|
+
decisionPoint: 'authentication',
|
|
221
|
+
reasonCode: 'authentication-required',
|
|
222
|
+
outcome: 'deny',
|
|
223
|
+
});
|
|
224
|
+
ctx.status = 401;
|
|
225
|
+
ctx.body = {
|
|
226
|
+
error: 'Authentication required',
|
|
227
|
+
message: 'Missing or invalid Authorization header',
|
|
228
|
+
};
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
const token = authHeader.slice(7);
|
|
232
|
+
if (token.length === 0) {
|
|
233
|
+
ctx.status = 401;
|
|
234
|
+
ctx.body = { error: 'Invalid token', message: 'Token validation failed' };
|
|
235
|
+
return;
|
|
236
|
+
}
|
|
237
|
+
let serviceToken;
|
|
238
|
+
try {
|
|
239
|
+
serviceToken = await provider.ClientCredentials.find(token);
|
|
240
|
+
}
|
|
241
|
+
catch {
|
|
242
|
+
logger.debug({ event: 'tenant-invite-service-token-unavailable' }, 'Tenant invite service token lookup failed');
|
|
243
|
+
}
|
|
244
|
+
if (serviceToken) {
|
|
245
|
+
const actor = await authorizeService(ctx, organizationId, serviceToken);
|
|
246
|
+
if (!actor)
|
|
247
|
+
return;
|
|
248
|
+
recordSecurityReference(ctx, 'actor', actor.clientId);
|
|
249
|
+
recordSecurityReference(ctx, 'tenant', organizationId);
|
|
250
|
+
ctx.state.tenantInviteActor = actor;
|
|
251
|
+
await next();
|
|
252
|
+
return;
|
|
253
|
+
}
|
|
254
|
+
let userToken;
|
|
255
|
+
try {
|
|
256
|
+
userToken = await provider.AccessToken.find(token);
|
|
257
|
+
}
|
|
258
|
+
catch {
|
|
259
|
+
logger.debug({ event: 'tenant-invite-user-token-unavailable' }, 'Tenant invite user token lookup failed');
|
|
260
|
+
}
|
|
261
|
+
if (userToken) {
|
|
262
|
+
const actor = await authorizeUser(ctx, organizationId, userToken);
|
|
263
|
+
if (!actor)
|
|
264
|
+
return;
|
|
265
|
+
recordSecurityReference(ctx, 'actor', actor.userId);
|
|
266
|
+
recordSecurityReference(ctx, 'tenant', organizationId);
|
|
267
|
+
ctx.state.tenantInviteActor = actor;
|
|
268
|
+
await next();
|
|
269
|
+
return;
|
|
270
|
+
}
|
|
271
|
+
recordSecurityDecision(ctx, {
|
|
272
|
+
decisionPoint: 'authentication',
|
|
273
|
+
reasonCode: 'authentication-required',
|
|
274
|
+
outcome: 'deny',
|
|
275
|
+
});
|
|
276
|
+
ctx.status = 401;
|
|
277
|
+
ctx.body = { error: 'Invalid token', message: 'Token validation failed' };
|
|
278
|
+
};
|
|
279
|
+
}
|
|
280
|
+
//# sourceMappingURL=tenant-invite-auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tenant-invite-auth.js","sourceRoot":"","sources":["../../src/middleware/tenant-invite-auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tenant invitation rate limiter.
|
|
3
|
+
*
|
|
4
|
+
* Sits after tenant invitation authentication so the counter can be keyed by
|
|
5
|
+
* the authenticated user or service client instead of a shared IP address.
|
|
6
|
+
* The limit is intentionally small because invitations send email and create
|
|
7
|
+
* durable invitation records.
|
|
8
|
+
*
|
|
9
|
+
* @module middleware/tenant-invite-rate-limiter
|
|
10
|
+
*/
|
|
11
|
+
import type { Middleware } from 'koa';
|
|
12
|
+
import type { RateLimitConfig } from '../auth/rate-limiter.js';
|
|
13
|
+
/** Invitation limit per actor and organization. */
|
|
14
|
+
export declare const TENANT_INVITE_RATE_LIMIT: RateLimitConfig;
|
|
15
|
+
/**
|
|
16
|
+
* Create the tenant invitation rate limiter.
|
|
17
|
+
*
|
|
18
|
+
* @returns Koa middleware that limits authenticated invitation requests
|
|
19
|
+
*/
|
|
20
|
+
export declare function tenantInviteRateLimiter(): Middleware;
|
|
21
|
+
//# sourceMappingURL=tenant-invite-rate-limiter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tenant-invite-rate-limiter.d.ts","sourceRoot":"","sources":["../../src/middleware/tenant-invite-rate-limiter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAEtC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG/D,mDAAmD;AACnD,eAAO,MAAM,wBAAwB,EAAE,eAGtC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,uBAAuB,IAAI,UAAU,CAkCpD"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tenant invitation rate limiter.
|
|
3
|
+
*
|
|
4
|
+
* Sits after tenant invitation authentication so the counter can be keyed by
|
|
5
|
+
* the authenticated user or service client instead of a shared IP address.
|
|
6
|
+
* The limit is intentionally small because invitations send email and create
|
|
7
|
+
* durable invitation records.
|
|
8
|
+
*
|
|
9
|
+
* @module middleware/tenant-invite-rate-limiter
|
|
10
|
+
*/
|
|
11
|
+
import { checkRateLimit } from '../auth/rate-limiter.js';
|
|
12
|
+
import { logger } from '../lib/logger.js';
|
|
13
|
+
/** Invitation limit per actor and organization. */
|
|
14
|
+
export const TENANT_INVITE_RATE_LIMIT = {
|
|
15
|
+
max: 30,
|
|
16
|
+
windowSeconds: 3600,
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Create the tenant invitation rate limiter.
|
|
20
|
+
*
|
|
21
|
+
* @returns Koa middleware that limits authenticated invitation requests
|
|
22
|
+
*/
|
|
23
|
+
export function tenantInviteRateLimiter() {
|
|
24
|
+
return async function tenantInviteRateLimiterMiddleware(ctx, next) {
|
|
25
|
+
const actor = ctx.state.tenantInviteActor;
|
|
26
|
+
if (!actor)
|
|
27
|
+
return next();
|
|
28
|
+
const key = actor.kind === 'user'
|
|
29
|
+
? `ratelimit:tenant-invite:user:${actor.organizationId}:${actor.userId}`
|
|
30
|
+
: `ratelimit:tenant-invite:client:${actor.organizationId}:${actor.clientId}`;
|
|
31
|
+
const result = await checkRateLimit(key, TENANT_INVITE_RATE_LIMIT);
|
|
32
|
+
ctx.set('X-RateLimit-Limit', String(TENANT_INVITE_RATE_LIMIT.max));
|
|
33
|
+
ctx.set('X-RateLimit-Remaining', String(result.remaining));
|
|
34
|
+
if (!result.allowed) {
|
|
35
|
+
logger.warn({
|
|
36
|
+
action: 'tenant_invite_rate_limit_exceeded',
|
|
37
|
+
actorKind: actor.kind,
|
|
38
|
+
}, 'Tenant invitation rate limit exceeded');
|
|
39
|
+
ctx.status = 429;
|
|
40
|
+
ctx.set('Retry-After', String(result.retryAfter));
|
|
41
|
+
ctx.body = {
|
|
42
|
+
error: 'Too Many Requests',
|
|
43
|
+
message: 'Invitation rate limit exceeded. Please try again later.',
|
|
44
|
+
retry_after: result.retryAfter,
|
|
45
|
+
};
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
return next();
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=tenant-invite-rate-limiter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tenant-invite-rate-limiter.js","sourceRoot":"","sources":["../../src/middleware/tenant-invite-rate-limiter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,mDAAmD;AACnD,MAAM,CAAC,MAAM,wBAAwB,GAAoB;IACvD,GAAG,EAAE,EAAE;IACP,aAAa,EAAE,IAAI;CACpB,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,KAAK,UAAU,iCAAiC,CAAC,GAAG,EAAE,IAAI;QAC/D,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC;QAC1C,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,EAAE,CAAC;QAE1B,MAAM,GAAG,GACP,KAAK,CAAC,IAAI,KAAK,MAAM;YACnB,CAAC,CAAC,gCAAgC,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,MAAM,EAAE;YACxE,CAAC,CAAC,kCAAkC,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QAEjF,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,wBAAwB,CAAC,CAAC;QACnE,GAAG,CAAC,GAAG,CAAC,mBAAmB,EAAE,MAAM,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC;QACnE,GAAG,CAAC,GAAG,CAAC,uBAAuB,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;QAE3D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,CAAC,IAAI,CACT;gBACE,MAAM,EAAE,mCAAmC;gBAC3C,SAAS,EAAE,KAAK,CAAC,IAAI;aACtB,EACD,uCAAuC,CACxC,CAAC;YACF,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC;YACjB,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;YAClD,GAAG,CAAC,IAAI,GAAG;gBACT,KAAK,EAAE,mBAAmB;gBAC1B,OAAO,EAAE,yDAAyD;gBAClE,WAAW,EAAE,MAAM,CAAC,UAAU;aAC/B,CAAC;YACF,OAAO;QACT,CAAC;QAED,OAAO,IAAI,EAAE,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configuration.d.ts","sourceRoot":"","sources":["../../src/oidc/configuration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAIzD,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,+BAA+B,CAAC;AAKvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"configuration.d.ts","sourceRoot":"","sources":["../../src/oidc/configuration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAIzD,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,+BAA+B,CAAC;AAKvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAI9D,8DAA8D;AAC9D,MAAM,WAAW,yBAAyB;IACxC,8DAA8D;IAC9D,GAAG,EAAE,aAAa,CAAC;IACnB,iDAAiD;IACjD,IAAI,EAAE;QAAE,IAAI,EAAE,UAAU,EAAE,CAAA;KAAE,CAAC;IAC7B,sEAAsE;IACtE,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,6DAA6D;IAC7D,WAAW,EAAE,CACX,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,MAAM,KACR,OAAO,CACR;QACE,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;KAC1E,GACD,SAAS,CACZ,CAAC;IACF,yEAAyE;IACzE,cAAc,EAAE,OAAO,CAAC;IACxB,sFAAsF;IACtF,cAAc,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,KAAK,MAAM,CAAC;IACvE,qEAAqE;IACrE,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;CAC9E;AAMD;;;;;GAKG;AACH,wBAAgB,oBAAoB,IAAI,iBAAiB,CASxD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,yBAAyB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CA8B/F;AAMD;;;;;;;;;;;;;GAaG;AAEH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoD5E;AAED;;;;;;;;;;;GAWG;AAEH,wBAAsB,2BAA2B,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BzE;AAoDD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,eAAe,CAEnC,GAAG,EAAE,GAAG,EACR,GAAG,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAAE,EAClD,MAAM,EAAE,KAAK,GACZ,OAAO,CAAC,IAAI,CAAC,CAwDf;AAMD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,iBAAiB,CAErC,GAAG,EAAE,GAAG,GACP,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CA6B9B;AAMD;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,yBAAyB,GAChC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAoNzB"}
|
|
@@ -24,6 +24,7 @@ import { logger } from '../lib/logger.js';
|
|
|
24
24
|
import { getUserById } from '../users/service.js';
|
|
25
25
|
import { getOrganizationById } from '../organizations/service.js';
|
|
26
26
|
import { clearSessionCookies } from '../middleware/prompt-login-reset.js';
|
|
27
|
+
import { TENANT_INVITE_SCOPE } from './scopes.js';
|
|
27
28
|
// ---------------------------------------------------------------------------
|
|
28
29
|
// Rendering hook helpers
|
|
29
30
|
// ---------------------------------------------------------------------------
|
|
@@ -448,8 +449,18 @@ export function buildProviderConfiguration(params) {
|
|
|
448
449
|
},
|
|
449
450
|
// Enable refresh token rotation — each refresh generates a new token
|
|
450
451
|
rotateRefreshToken: true,
|
|
451
|
-
// Standard OIDC scopes
|
|
452
|
-
|
|
452
|
+
// Standard OIDC scopes plus the tenant application scope used by the
|
|
453
|
+
// tenant-scoped BFF invitation API. Supported scopes must be registered
|
|
454
|
+
// here before a client may carry them in its metadata.
|
|
455
|
+
scopes: [
|
|
456
|
+
'openid',
|
|
457
|
+
'profile',
|
|
458
|
+
'email',
|
|
459
|
+
'address',
|
|
460
|
+
'phone',
|
|
461
|
+
'offline_access',
|
|
462
|
+
TENANT_INVITE_SCOPE,
|
|
463
|
+
],
|
|
453
464
|
// OIDC claims mapping per scope.
|
|
454
465
|
// Standard claims follow OpenID Connect Core §5.4.
|
|
455
466
|
// Custom claims (roles, permissions, ERP attributes) are mapped to
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configuration.js","sourceRoot":"","sources":["../../src/oidc/configuration.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"configuration.js","sourceRoot":"","sources":["../../src/oidc/configuration.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tenant-scoped OAuth scope names.
|
|
3
|
+
*
|
|
4
|
+
* These values are shared by the OIDC provider configuration and the tenant
|
|
5
|
+
* invitation middleware. A scope must be registered as supported before an
|
|
6
|
+
* OIDC client can carry it in its metadata; otherwise the provider rejects the
|
|
7
|
+
* client at the token endpoint.
|
|
8
|
+
*
|
|
9
|
+
* @module oidc/scopes
|
|
10
|
+
*/
|
|
11
|
+
/** Scope that authorizes a tenant service client to invite users. */
|
|
12
|
+
export declare const TENANT_INVITE_SCOPE = "org:user:invite";
|
|
13
|
+
/** Permission that authorizes a tenant user to invite users. */
|
|
14
|
+
export declare const TENANT_INVITE_PERMISSION = "org:user:invite";
|
|
15
|
+
//# sourceMappingURL=scopes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scopes.d.ts","sourceRoot":"","sources":["../../src/oidc/scopes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,qEAAqE;AACrE,eAAO,MAAM,mBAAmB,oBAAoB,CAAC;AAErD,gEAAgE;AAChE,eAAO,MAAM,wBAAwB,oBAAsB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tenant-scoped OAuth scope names.
|
|
3
|
+
*
|
|
4
|
+
* These values are shared by the OIDC provider configuration and the tenant
|
|
5
|
+
* invitation middleware. A scope must be registered as supported before an
|
|
6
|
+
* OIDC client can carry it in its metadata; otherwise the provider rejects the
|
|
7
|
+
* client at the token endpoint.
|
|
8
|
+
*
|
|
9
|
+
* @module oidc/scopes
|
|
10
|
+
*/
|
|
11
|
+
/** Scope that authorizes a tenant service client to invite users. */
|
|
12
|
+
export const TENANT_INVITE_SCOPE = 'org:user:invite';
|
|
13
|
+
/** Permission that authorizes a tenant user to invite users. */
|
|
14
|
+
export const TENANT_INVITE_PERMISSION = TENANT_INVITE_SCOPE;
|
|
15
|
+
//# sourceMappingURL=scopes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scopes.js","sourceRoot":"","sources":["../../src/oidc/scopes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,qEAAqE;AACrE,MAAM,CAAC,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;AAErD,gEAAgE;AAChE,MAAM,CAAC,MAAM,wBAAwB,GAAG,mBAAmB,CAAC"}
|