@_mustachio/openauth 0.14.0 → 0.15.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/esm/domain/token.js +13 -0
- package/dist/esm/http/handlers/token.js +4 -0
- package/dist/esm/index.js +1 -0
- package/dist/types/domain/client-credentials.d.ts +3 -1
- package/dist/types/domain/client-credentials.d.ts.map +1 -1
- package/dist/types/domain/refresh.d.ts +3 -0
- package/dist/types/domain/refresh.d.ts.map +1 -1
- package/dist/types/domain/token-exchange.d.ts +3 -1
- package/dist/types/domain/token-exchange.d.ts.map +1 -1
- package/dist/types/domain/token.d.ts +4 -1
- package/dist/types/domain/token.d.ts.map +1 -1
- package/dist/types/http/context.d.ts +3 -0
- package/dist/types/http/context.d.ts.map +1 -1
- package/dist/types/http/handlers/token.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/types/idp.d.ts +72 -0
- package/dist/types/types/idp.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/domain/client-credentials.ts +7 -1
- package/src/domain/refresh.ts +3 -0
- package/src/domain/token-exchange.ts +3 -1
- package/src/domain/token.ts +29 -1
- package/src/http/context.ts +3 -0
- package/src/http/handlers/token.ts +4 -0
- package/src/index.ts +2 -0
- package/src/types/idp.ts +74 -0
package/dist/esm/domain/token.js
CHANGED
|
@@ -139,6 +139,19 @@ async function mintTokens(args) {
|
|
|
139
139
|
const now = deps.clock();
|
|
140
140
|
const receivingClient = tenant.config.clients.find((c) => c.id === payload.clientId);
|
|
141
141
|
const subjectId = await deriveSubjectId(claim, receivingClient?.sectorIdentifier);
|
|
142
|
+
if (deps.onTokenIssued) {
|
|
143
|
+
try {
|
|
144
|
+
await deps.onTokenIssued({
|
|
145
|
+
tenant,
|
|
146
|
+
clientId: payload.clientId,
|
|
147
|
+
subjectId,
|
|
148
|
+
claim,
|
|
149
|
+
...skipRefresh ? {} : { family }
|
|
150
|
+
});
|
|
151
|
+
} catch (e) {
|
|
152
|
+
return err(authError.serverError("onTokenIssued hook threw", e));
|
|
153
|
+
}
|
|
154
|
+
}
|
|
142
155
|
const keyRes = await deps.keyStore.currentSigningKey();
|
|
143
156
|
if (isErr(keyRes))
|
|
144
157
|
return err(keyRes.error);
|
|
@@ -71,6 +71,7 @@ function makeTokenHandler(deps) {
|
|
|
71
71
|
...deps.persistUpstreamTokens ? { persistUpstreamTokens: deps.persistUpstreamTokens } : {},
|
|
72
72
|
issuerUrl: c.get("issuerUrl"),
|
|
73
73
|
clock: deps.clock,
|
|
74
|
+
...deps.onTokenIssued ? { onTokenIssued: deps.onTokenIssued } : {},
|
|
74
75
|
...deps.customScopeClaims !== undefined ? { customScopeClaims: deps.customScopeClaims } : {}
|
|
75
76
|
});
|
|
76
77
|
if (isErr(result))
|
|
@@ -104,6 +105,7 @@ function makeTokenHandler(deps) {
|
|
|
104
105
|
...deps.persistUpstreamTokens ? { persistUpstreamTokens: deps.persistUpstreamTokens } : {},
|
|
105
106
|
issuerUrl: c.get("issuerUrl"),
|
|
106
107
|
clock: deps.clock,
|
|
108
|
+
...deps.onTokenIssued ? { onTokenIssued: deps.onTokenIssued } : {},
|
|
107
109
|
...deps.customScopeClaims !== undefined ? { customScopeClaims: deps.customScopeClaims } : {}
|
|
108
110
|
}, tenantRes.value);
|
|
109
111
|
if (isErr(result))
|
|
@@ -125,6 +127,7 @@ function makeTokenHandler(deps) {
|
|
|
125
127
|
...deps.auditLog ? { auditLog: deps.auditLog } : {},
|
|
126
128
|
issuerUrl: c.get("issuerUrl"),
|
|
127
129
|
clock: deps.clock,
|
|
130
|
+
...deps.onTokenIssued ? { onTokenIssued: deps.onTokenIssued } : {},
|
|
128
131
|
...deps.customScopeClaims !== undefined ? { customScopeClaims: deps.customScopeClaims } : {}
|
|
129
132
|
});
|
|
130
133
|
if (isErr(refreshResult))
|
|
@@ -149,6 +152,7 @@ function makeTokenHandler(deps) {
|
|
|
149
152
|
...deps.exchangeAudience ? { exchangeAudience: deps.exchangeAudience } : {},
|
|
150
153
|
issuerUrl: c.get("issuerUrl"),
|
|
151
154
|
clock: deps.clock,
|
|
155
|
+
...deps.onTokenIssued ? { onTokenIssued: deps.onTokenIssued } : {},
|
|
152
156
|
...deps.customScopeClaims !== undefined ? { customScopeClaims: deps.customScopeClaims } : {}
|
|
153
157
|
});
|
|
154
158
|
if (isErr(exchangeResult)) {
|
package/dist/esm/index.js
CHANGED
|
@@ -68,6 +68,7 @@ function createIdP(opts) {
|
|
|
68
68
|
resolveTenant: opts.resolveTenant,
|
|
69
69
|
success: opts.success,
|
|
70
70
|
subjects: opts.subjects,
|
|
71
|
+
...opts.onTokenIssued ? { onTokenIssued: opts.onTokenIssued } : {},
|
|
71
72
|
...opts.onLogout ? { onLogout: opts.onLogout } : {},
|
|
72
73
|
...opts.persistUpstreamTokens ? { persistUpstreamTokens: opts.persistUpstreamTokens } : {},
|
|
73
74
|
...opts.exchangeAudience ? { exchangeAudience: opts.exchangeAudience } : {},
|
|
@@ -22,7 +22,7 @@ import type { ConfigStore } from "../ports/config-store";
|
|
|
22
22
|
import type { KeyStore } from "../ports/key-store";
|
|
23
23
|
import type { TokenStore } from "../ports/token-store";
|
|
24
24
|
import { type AuthError } from "../types/error";
|
|
25
|
-
import type { PersistUpstreamTokens, SuccessMapInput } from "../types/idp";
|
|
25
|
+
import type { OnTokenIssued, PersistUpstreamTokens, SuccessMapInput } from "../types/idp";
|
|
26
26
|
import type { Result } from "../types/result";
|
|
27
27
|
import type { SubjectClaim, SubjectSchema } from "../types/subject";
|
|
28
28
|
import type { TenantId } from "../types/tenant";
|
|
@@ -48,6 +48,8 @@ export type ClientCredentialsDeps = {
|
|
|
48
48
|
persistUpstreamTokens?: PersistUpstreamTokens;
|
|
49
49
|
issuerUrl: string;
|
|
50
50
|
clock: () => number;
|
|
51
|
+
/** See `IdPOptions.onTokenIssued`. Threaded to `mintTokens`. */
|
|
52
|
+
onTokenIssued?: OnTokenIssued;
|
|
51
53
|
newRefreshFamily?: () => string;
|
|
52
54
|
/** See `IdPOptions.customScopeClaims`. Forwarded to `mintTokens`. */
|
|
53
55
|
customScopeClaims?: Record<string, ReadonlyArray<string>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-credentials.d.ts","sourceRoot":"","sources":["../../../src/domain/client-credentials.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1D,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"client-credentials.d.ts","sourceRoot":"","sources":["../../../src/domain/client-credentials.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1D,OAAO,KAAK,EACV,aAAa,EACb,qBAAqB,EACrB,eAAe,EAChB,MAAM,cAAc,CAAA;AACrB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAE7C,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AACnE,OAAO,KAAK,EAAiB,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAKnD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAI5C,MAAM,MAAM,wBAAwB,GAAG;IACrC,SAAS,EAAE,oBAAoB,CAAA;IAC/B,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,6EAA6E;IAC7E,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAChC,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,WAAW,EAAE,WAAW,CAAA;IACxB,UAAU,EAAE,UAAU,CAAA;IACtB,QAAQ,EAAE,QAAQ,CAAA;IAClB,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,WAAW,EAAE,WAAW,CAAA;IACxB,OAAO,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC,YAAY,CAAC,CAAA;IAC1D,0EAA0E;IAC1E,QAAQ,EAAE,aAAa,CAAA;IACvB,qBAAqB,CAAC,EAAE,qBAAqB,CAAA;IAC7C,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,MAAM,CAAA;IACnB,gEAAgE;IAChE,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,gBAAgB,CAAC,EAAE,MAAM,MAAM,CAAA;IAC/B,qEAAqE;IACrE,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAA;CAC1D,CAAA;AAED,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,wBAAwB,EAC7B,IAAI,EAAE,qBAAqB,EAC3B,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC,CAkI3C"}
|
|
@@ -17,6 +17,7 @@ import type { ConfigStore } from "../ports/config-store";
|
|
|
17
17
|
import type { KeyStore } from "../ports/key-store";
|
|
18
18
|
import type { TokenStore } from "../ports/token-store";
|
|
19
19
|
import { type AuthError } from "../types/error";
|
|
20
|
+
import type { OnTokenIssued } from "../types/idp";
|
|
20
21
|
import type { Result } from "../types/result";
|
|
21
22
|
import type { TokenResponse } from "../types/token";
|
|
22
23
|
export type RefreshGrantRequest = {
|
|
@@ -42,6 +43,8 @@ export type RefreshTokensDeps = {
|
|
|
42
43
|
auditLog?: AuditLog;
|
|
43
44
|
issuerUrl: string;
|
|
44
45
|
clock: () => number;
|
|
46
|
+
/** See `IdPOptions.onTokenIssued`. Threaded to `mintTokens`. */
|
|
47
|
+
onTokenIssued?: OnTokenIssued;
|
|
45
48
|
/** Reuse-detection window (ms). Default 60 s. */
|
|
46
49
|
reuseWindowMs?: number;
|
|
47
50
|
newRefreshToken?: () => string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refresh.d.ts","sourceRoot":"","sources":["../../../src/domain/refresh.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAG7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAMnD,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,EAAE,eAAe,CAAA;IAC1B,YAAY,EAAE,MAAM,CAAA;IACpB,mFAAmF;IACnF,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,EAAE,WAAW,CAAA;IACxB,UAAU,EAAE,UAAU,CAAA;IACtB,QAAQ,EAAE,QAAQ,CAAA;IAClB,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,MAAM,CAAA;IACnB,iDAAiD;IACjD,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,eAAe,CAAC,EAAE,MAAM,MAAM,CAAA;IAC9B,qEAAqE;IACrE,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAA;CAC1D,CAAA;AAsBD,wBAAsB,aAAa,CACjC,GAAG,EAAE,mBAAmB,EACxB,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC,CA4J3C"}
|
|
1
|
+
{"version":3,"file":"refresh.d.ts","sourceRoot":"","sources":["../../../src/domain/refresh.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAG7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAMnD,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,EAAE,eAAe,CAAA;IAC1B,YAAY,EAAE,MAAM,CAAA;IACpB,mFAAmF;IACnF,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,EAAE,WAAW,CAAA;IACxB,UAAU,EAAE,UAAU,CAAA;IACtB,QAAQ,EAAE,QAAQ,CAAA;IAClB,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,MAAM,CAAA;IACnB,gEAAgE;IAChE,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,iDAAiD;IACjD,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,eAAe,CAAC,EAAE,MAAM,MAAM,CAAA;IAC9B,qEAAqE;IACrE,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAA;CAC1D,CAAA;AAsBD,wBAAsB,aAAa,CACjC,GAAG,EAAE,mBAAmB,EACxB,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC,CA4J3C"}
|
|
@@ -36,7 +36,7 @@ import type { ConfigStore } from "../ports/config-store";
|
|
|
36
36
|
import type { KeyStore } from "../ports/key-store";
|
|
37
37
|
import type { TokenStore } from "../ports/token-store";
|
|
38
38
|
import { type AuthError } from "../types/error";
|
|
39
|
-
import type { ExchangeAudience } from "../types/idp";
|
|
39
|
+
import type { ExchangeAudience, OnTokenIssued } from "../types/idp";
|
|
40
40
|
import type { Result } from "../types/result";
|
|
41
41
|
import type { TokenResponse } from "../types/token";
|
|
42
42
|
export type TokenExchangeRequest = {
|
|
@@ -61,6 +61,8 @@ export type ExchangeTokenDeps = {
|
|
|
61
61
|
exchangeAudience?: ExchangeAudience;
|
|
62
62
|
issuerUrl: string;
|
|
63
63
|
clock: () => number;
|
|
64
|
+
/** See `IdPOptions.onTokenIssued`. Threaded to `mintTokens`. */
|
|
65
|
+
onTokenIssued?: OnTokenIssued;
|
|
64
66
|
newRefreshFamily?: () => string;
|
|
65
67
|
/** See `IdPOptions.customScopeClaims`. Forwarded to `mintTokens`. */
|
|
66
68
|
customScopeClaims?: Record<string, ReadonlyArray<string>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-exchange.d.ts","sourceRoot":"","sources":["../../../src/domain/token-exchange.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"token-exchange.d.ts","sourceRoot":"","sources":["../../../src/domain/token-exchange.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAI7C,OAAO,KAAK,EAAqB,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAQtE,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,EAAE,iDAAiD,CAAA;IAC5D,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,qFAAqF;IACrF,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG,aAAa,GAAG;IAClD,6DAA6D;IAC7D,iBAAiB,EAAE,+CAA+C,CAAA;CACnE,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,EAAE,WAAW,CAAA;IACxB,UAAU,EAAE,UAAU,CAAA;IACtB,QAAQ,EAAE,QAAQ,CAAA;IAClB,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,MAAM,CAAA;IACnB,gEAAgE;IAChE,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,gBAAgB,CAAC,EAAE,MAAM,MAAM,CAAA;IAC/B,qEAAqE;IACrE,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAA;CAC1D,CAAA;AAED,wBAAsB,aAAa,CACjC,GAAG,EAAE,oBAAoB,EACzB,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,MAAM,CAAC,qBAAqB,EAAE,SAAS,CAAC,CAAC,CA+JnD"}
|
|
@@ -23,7 +23,7 @@ import type { KeyStore } from "../ports/key-store";
|
|
|
23
23
|
import type { TokenStore } from "../ports/token-store";
|
|
24
24
|
import type { ConfigStore } from "../ports/config-store";
|
|
25
25
|
import type { AuthError } from "../types/error";
|
|
26
|
-
import type { PersistUpstreamTokens, SuccessMapInput } from "../types/idp";
|
|
26
|
+
import type { OnTokenIssued, PersistUpstreamTokens, SuccessMapInput } from "../types/idp";
|
|
27
27
|
import type { Result } from "../types/result";
|
|
28
28
|
import type { SubjectClaim, SubjectSchema } from "../types/subject";
|
|
29
29
|
import type { TenantContext } from "../types/tenant";
|
|
@@ -71,6 +71,8 @@ export type ExchangeCodeDeps = {
|
|
|
71
71
|
persistUpstreamTokens?: PersistUpstreamTokens;
|
|
72
72
|
issuerUrl: string;
|
|
73
73
|
clock: () => number;
|
|
74
|
+
/** See `IdPOptions.onTokenIssued`. Threaded to `mintTokens`. */
|
|
75
|
+
onTokenIssued?: OnTokenIssued;
|
|
74
76
|
newRefreshToken?: () => string;
|
|
75
77
|
/** Test override. */
|
|
76
78
|
newRefreshFamily?: () => string;
|
|
@@ -127,6 +129,7 @@ export declare function mintTokens(args: {
|
|
|
127
129
|
auditLog?: AuditLog;
|
|
128
130
|
issuerUrl: string;
|
|
129
131
|
clock: () => number;
|
|
132
|
+
onTokenIssued?: OnTokenIssued;
|
|
130
133
|
newRefreshToken?: () => string;
|
|
131
134
|
/**
|
|
132
135
|
* Host-supplied vendor scope → claim-names map merged into the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../src/domain/token.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE/C,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../src/domain/token.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,7 @@ import type { SessionStore } from "../ports/session-store";
|
|
|
15
15
|
import type { TokenStore } from "../ports/token-store";
|
|
16
16
|
import type { MethodCache } from "../domain/method-cache";
|
|
17
17
|
import type { AuthError } from "../types/error";
|
|
18
|
+
import type { OnTokenIssued } from "../types/idp";
|
|
18
19
|
import type { SubjectSchema } from "../types/subject";
|
|
19
20
|
import type { ExchangeAudience, LogoutEventInput, LogoutHookResult, PersistUpstreamTokens, RegisterClient, RenderPicker, SuccessMapInput } from "../types/idp";
|
|
20
21
|
import type { Result } from "../types/result";
|
|
@@ -39,6 +40,8 @@ export type HttpDeps = {
|
|
|
39
40
|
callbackHostFor?: (tenantId: TenantId) => string;
|
|
40
41
|
/** Host-declared subject schemas, validated at issuance. */
|
|
41
42
|
subjects: SubjectSchema;
|
|
43
|
+
/** See `IdPOptions.onTokenIssued`. */
|
|
44
|
+
onTokenIssued?: OnTokenIssued;
|
|
42
45
|
resolveTenant: (req: Request) => Promise<Result<TenantId, AuthError>>;
|
|
43
46
|
success: (input: SuccessMapInput) => Promise<SubjectClaim>;
|
|
44
47
|
/** See `IdPOptions.onLogout` — upstream Single Logout host hook. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/http/context.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/http/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../../src/http/handlers/token.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAKvD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,QAAQ,OAC5B,WAAW,KAAG,OAAO,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../../src/http/handlers/token.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAKvD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,QAAQ,OAC5B,WAAW,KAAG,OAAO,CAAC,QAAQ,CAAC,CA0OjD"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -20,7 +20,7 @@ export type { AuthMethod, AuthMethodFactory, CachePolicy, ClientFn, MethodContex
|
|
|
20
20
|
export type { AuthorizationRequest, AuthorizationState, } from "./types/authorization";
|
|
21
21
|
export type { AccessTokenClaims, AddressClaim, CodePayload, IdTokenClaims, RefreshTokenPayload, ScopedProfileClaims, TokenResponse, } from "./types/token";
|
|
22
22
|
export type { SubjectClaim, SubjectPayload, SubjectSchema, } from "./types/subject";
|
|
23
|
-
export type { ExchangeAudience, IdP, IdPOptions, LogoutEventInput, LogoutHookResult, PersistUpstreamTokens, RegisterClient, RegisterClientRequest, RegisterClientResponse, RenderPicker, SuccessMapInput, } from "./types/idp";
|
|
23
|
+
export type { ExchangeAudience, IdP, IdPOptions, LogoutEventInput, LogoutHookResult, OnTokenIssued, PersistUpstreamTokens, RegisterClient, RegisterClientRequest, RegisterClientResponse, RenderPicker, SuccessMapInput, } from "./types/idp";
|
|
24
24
|
export type { PickerContext, PickerMethod } from "./types/picker";
|
|
25
25
|
export type { AuditEvent, AuditLog } from "./ports/audit-log";
|
|
26
26
|
export type { ConfigStore } from "./ports/config-store";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -87,6 +87,62 @@ export type LogoutEventInput = {
|
|
|
87
87
|
export type LogoutHookResult = {
|
|
88
88
|
revokeSubject?: string;
|
|
89
89
|
} | void;
|
|
90
|
+
/**
|
|
91
|
+
* Fired when tokens are minted, naming the derived subject id.
|
|
92
|
+
*
|
|
93
|
+
* This is the only way a host can learn `subjectId` — the value the
|
|
94
|
+
* library signs as `sub`, and the key `TokenStore.revokeBySubject` and
|
|
95
|
+
* `revokeAllForSubject` take. It is derived inside the library from the
|
|
96
|
+
* claim and the receiving client's `sectorIdentifier`, so without this
|
|
97
|
+
* hook a host holds a revocation primitive it can never call, and
|
|
98
|
+
* `onLogout`'s `revokeSubject` has no map to resolve against.
|
|
99
|
+
*
|
|
100
|
+
* That matters because refresh rotation never re-consults the host:
|
|
101
|
+
* `refreshTokens` mints from the claim captured on the stored payload.
|
|
102
|
+
* Revoking the chain is the only way to stop an offboarded user's tokens
|
|
103
|
+
* from being renewed indefinitely.
|
|
104
|
+
*
|
|
105
|
+
* **A principal maps to many subject ids, not one.** Record them; do not
|
|
106
|
+
* overwrite. Two reasons, both silent if you assume otherwise:
|
|
107
|
+
*
|
|
108
|
+
* - **Pairwise** — with `ClientConfig.sectorIdentifier` set, derivation
|
|
109
|
+
* mixes the sector in (OIDC Core §8.1), so the same person has a
|
|
110
|
+
* distinct `sub` per sector. Revoking one leaves the others minting.
|
|
111
|
+
* - **Claim contents** — derivation hashes `claim.properties`. If your
|
|
112
|
+
* `success()` returns anything mutable (an email, a role), the subject
|
|
113
|
+
* id changes when that value changes, and chains issued under the old
|
|
114
|
+
* one survive. Returning a single immutable id is the way to avoid
|
|
115
|
+
* this; OIDC Core §2 wants `sub` never reassigned.
|
|
116
|
+
*
|
|
117
|
+
* Runs **before** the refresh token is persisted, so throwing aborts
|
|
118
|
+
* issuance with `server_error` and leaves no chain behind. That is
|
|
119
|
+
* deliberate: recording the mapping after the token is durable would let
|
|
120
|
+
* a hook failure produce exactly the unrevokable token this exists to
|
|
121
|
+
* prevent. Like `success` and `persistUpstreamTokens`, and unlike
|
|
122
|
+
* `AuditLog`, a failure here stops the grant.
|
|
123
|
+
*/
|
|
124
|
+
export type OnTokenIssued = (input: {
|
|
125
|
+
tenant: TenantContext;
|
|
126
|
+
/** Client the tokens were minted for. */
|
|
127
|
+
clientId: string;
|
|
128
|
+
/**
|
|
129
|
+
* The `sub` of the issued access token — the key `revokeBySubject` and
|
|
130
|
+
* `revokeAllForSubject` take.
|
|
131
|
+
*/
|
|
132
|
+
subjectId: string;
|
|
133
|
+
/**
|
|
134
|
+
* The claim your `success()` (or token-exchange audience mapping)
|
|
135
|
+
* returned, already validated against `subjects`. Use it to attribute
|
|
136
|
+
* `subjectId` to one of your own principals.
|
|
137
|
+
*/
|
|
138
|
+
claim: SubjectClaim;
|
|
139
|
+
/**
|
|
140
|
+
* Refresh-token family, for `TokenStore.revokeFamily`. Absent when the
|
|
141
|
+
* grant issued no refresh token (`client_credentials`, RFC 6749
|
|
142
|
+
* §4.4.3), because then there is no chain to revoke.
|
|
143
|
+
*/
|
|
144
|
+
family?: string;
|
|
145
|
+
}) => Promise<void> | void;
|
|
90
146
|
/**
|
|
91
147
|
* Optional hook called at `/token` time, after PKCE has succeeded and
|
|
92
148
|
* after the `success` callback has produced a `SubjectClaim`, but
|
|
@@ -324,6 +380,22 @@ export type IdPOptions = {
|
|
|
324
380
|
* `PersistUpstreamTokens` type doc.
|
|
325
381
|
*/
|
|
326
382
|
persistUpstreamTokens?: PersistUpstreamTokens;
|
|
383
|
+
/**
|
|
384
|
+
* Optional hook fired as tokens are minted, carrying the derived
|
|
385
|
+
* `subjectId` alongside the claim it came from.
|
|
386
|
+
*
|
|
387
|
+
* Supply this if you need to revoke a user's tokens later — on
|
|
388
|
+
* offboarding, deactivation, or a membership change. `subjectId` is
|
|
389
|
+
* computed inside the library and appears nowhere else, so without
|
|
390
|
+
* this hook `TokenStore.revokeBySubject` / `revokeAllForSubject` are
|
|
391
|
+
* uncallable and `onLogout`'s `revokeSubject` has nothing to resolve
|
|
392
|
+
* against. See {@link OnTokenIssued} — in particular, one principal
|
|
393
|
+
* has many subject ids and they must be accumulated, not overwritten.
|
|
394
|
+
*
|
|
395
|
+
* Throwing aborts the grant; it runs before the refresh token is
|
|
396
|
+
* persisted so no unrecorded chain can survive a failure.
|
|
397
|
+
*/
|
|
398
|
+
onTokenIssued?: OnTokenIssued;
|
|
327
399
|
/**
|
|
328
400
|
* Optional RFC 8693 token-exchange hook. If absent, exchange
|
|
329
401
|
* requests at `/token` return `unsupported_grant_type`. See the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"idp.d.ts","sourceRoot":"","sources":["../../../src/types/idp.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"idp.d.ts","sourceRoot":"","sources":["../../../src/types/idp.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -22,7 +22,11 @@ import type { ConfigStore } from "../ports/config-store"
|
|
|
22
22
|
import type { KeyStore } from "../ports/key-store"
|
|
23
23
|
import type { TokenStore } from "../ports/token-store"
|
|
24
24
|
import { authError, type AuthError } from "../types/error"
|
|
25
|
-
import type {
|
|
25
|
+
import type {
|
|
26
|
+
OnTokenIssued,
|
|
27
|
+
PersistUpstreamTokens,
|
|
28
|
+
SuccessMapInput,
|
|
29
|
+
} from "../types/idp"
|
|
26
30
|
import type { Result } from "../types/result"
|
|
27
31
|
import { err, isErr, ok } from "../types/result"
|
|
28
32
|
import type { SubjectClaim, SubjectSchema } from "../types/subject"
|
|
@@ -57,6 +61,8 @@ export type ClientCredentialsDeps = {
|
|
|
57
61
|
persistUpstreamTokens?: PersistUpstreamTokens
|
|
58
62
|
issuerUrl: string
|
|
59
63
|
clock: () => number
|
|
64
|
+
/** See `IdPOptions.onTokenIssued`. Threaded to `mintTokens`. */
|
|
65
|
+
onTokenIssued?: OnTokenIssued
|
|
60
66
|
newRefreshFamily?: () => string
|
|
61
67
|
/** See `IdPOptions.customScopeClaims`. Forwarded to `mintTokens`. */
|
|
62
68
|
customScopeClaims?: Record<string, ReadonlyArray<string>>
|
package/src/domain/refresh.ts
CHANGED
|
@@ -17,6 +17,7 @@ import type { ConfigStore } from "../ports/config-store"
|
|
|
17
17
|
import type { KeyStore } from "../ports/key-store"
|
|
18
18
|
import type { TokenStore } from "../ports/token-store"
|
|
19
19
|
import { authError, type AuthError } from "../types/error"
|
|
20
|
+
import type { OnTokenIssued } from "../types/idp"
|
|
20
21
|
import type { Result } from "../types/result"
|
|
21
22
|
import { err, isErr } from "../types/result"
|
|
22
23
|
import type { TenantContext } from "../types/tenant"
|
|
@@ -50,6 +51,8 @@ export type RefreshTokensDeps = {
|
|
|
50
51
|
auditLog?: AuditLog
|
|
51
52
|
issuerUrl: string
|
|
52
53
|
clock: () => number
|
|
54
|
+
/** See `IdPOptions.onTokenIssued`. Threaded to `mintTokens`. */
|
|
55
|
+
onTokenIssued?: OnTokenIssued
|
|
53
56
|
/** Reuse-detection window (ms). Default 60 s. */
|
|
54
57
|
reuseWindowMs?: number
|
|
55
58
|
newRefreshToken?: () => string
|
|
@@ -36,7 +36,7 @@ import type { ConfigStore } from "../ports/config-store"
|
|
|
36
36
|
import type { KeyStore } from "../ports/key-store"
|
|
37
37
|
import type { TokenStore } from "../ports/token-store"
|
|
38
38
|
import { authError, type AuthError } from "../types/error"
|
|
39
|
-
import type { ExchangeAudience } from "../types/idp"
|
|
39
|
+
import type { ExchangeAudience, OnTokenIssued } from "../types/idp"
|
|
40
40
|
import type { Result } from "../types/result"
|
|
41
41
|
import { err, isErr, ok } from "../types/result"
|
|
42
42
|
import type { SubjectClaim } from "../types/subject"
|
|
@@ -73,6 +73,8 @@ export type ExchangeTokenDeps = {
|
|
|
73
73
|
exchangeAudience?: ExchangeAudience
|
|
74
74
|
issuerUrl: string
|
|
75
75
|
clock: () => number
|
|
76
|
+
/** See `IdPOptions.onTokenIssued`. Threaded to `mintTokens`. */
|
|
77
|
+
onTokenIssued?: OnTokenIssued
|
|
76
78
|
newRefreshFamily?: () => string
|
|
77
79
|
/** See `IdPOptions.customScopeClaims`. Forwarded to `mintTokens`. */
|
|
78
80
|
customScopeClaims?: Record<string, ReadonlyArray<string>>
|
package/src/domain/token.ts
CHANGED
|
@@ -24,7 +24,11 @@ import type { TokenStore } from "../ports/token-store"
|
|
|
24
24
|
import type { ConfigStore } from "../ports/config-store"
|
|
25
25
|
import type { AuthError } from "../types/error"
|
|
26
26
|
import { authError } from "../types/error"
|
|
27
|
-
import type {
|
|
27
|
+
import type {
|
|
28
|
+
OnTokenIssued,
|
|
29
|
+
PersistUpstreamTokens,
|
|
30
|
+
SuccessMapInput,
|
|
31
|
+
} from "../types/idp"
|
|
28
32
|
import type { Result } from "../types/result"
|
|
29
33
|
import { err, isErr, ok } from "../types/result"
|
|
30
34
|
import type { SubjectClaim, SubjectSchema } from "../types/subject"
|
|
@@ -114,6 +118,8 @@ export type ExchangeCodeDeps = {
|
|
|
114
118
|
persistUpstreamTokens?: PersistUpstreamTokens
|
|
115
119
|
issuerUrl: string
|
|
116
120
|
clock: () => number
|
|
121
|
+
/** See `IdPOptions.onTokenIssued`. Threaded to `mintTokens`. */
|
|
122
|
+
onTokenIssued?: OnTokenIssued
|
|
117
123
|
newRefreshToken?: () => string
|
|
118
124
|
/** Test override. */
|
|
119
125
|
newRefreshFamily?: () => string
|
|
@@ -309,6 +315,7 @@ export async function mintTokens(args: {
|
|
|
309
315
|
auditLog?: AuditLog
|
|
310
316
|
issuerUrl: string
|
|
311
317
|
clock: () => number
|
|
318
|
+
onTokenIssued?: OnTokenIssued
|
|
312
319
|
newRefreshToken?: () => string
|
|
313
320
|
/**
|
|
314
321
|
* Host-supplied vendor scope → claim-names map merged into the
|
|
@@ -338,6 +345,27 @@ export async function mintTokens(args: {
|
|
|
338
345
|
receivingClient?.sectorIdentifier,
|
|
339
346
|
)
|
|
340
347
|
|
|
348
|
+
// Hand the host the derived subject id *before* anything durable is
|
|
349
|
+
// written. `subjectId` exists nowhere else — it is signed as `sub` and
|
|
350
|
+
// is the key `revokeBySubject` takes — so a host that misses it holds a
|
|
351
|
+
// token it can never revoke. Running after `saveRefresh` and aborting
|
|
352
|
+
// on failure would leave precisely that: a live chain with no record.
|
|
353
|
+
if (deps.onTokenIssued) {
|
|
354
|
+
try {
|
|
355
|
+
await deps.onTokenIssued({
|
|
356
|
+
tenant,
|
|
357
|
+
clientId: payload.clientId,
|
|
358
|
+
subjectId,
|
|
359
|
+
claim,
|
|
360
|
+
// No refresh row is written when `skipRefresh` is set, so there
|
|
361
|
+
// is no chain for the host to revoke by family.
|
|
362
|
+
...(skipRefresh ? {} : { family }),
|
|
363
|
+
})
|
|
364
|
+
} catch (e) {
|
|
365
|
+
return err(authError.serverError("onTokenIssued hook threw", e))
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
|
|
341
369
|
const keyRes = await deps.keyStore.currentSigningKey()
|
|
342
370
|
if (isErr(keyRes)) return err(keyRes.error)
|
|
343
371
|
const signingKey = keyRes.value
|
package/src/http/context.ts
CHANGED
|
@@ -16,6 +16,7 @@ import type { SessionStore } from "../ports/session-store"
|
|
|
16
16
|
import type { TokenStore } from "../ports/token-store"
|
|
17
17
|
import type { MethodCache } from "../domain/method-cache"
|
|
18
18
|
import type { AuthError } from "../types/error"
|
|
19
|
+
import type { OnTokenIssued } from "../types/idp"
|
|
19
20
|
import type { SubjectSchema } from "../types/subject"
|
|
20
21
|
import type {
|
|
21
22
|
ExchangeAudience,
|
|
@@ -55,6 +56,8 @@ export type HttpDeps = {
|
|
|
55
56
|
callbackHostFor?: (tenantId: TenantId) => string
|
|
56
57
|
/** Host-declared subject schemas, validated at issuance. */
|
|
57
58
|
subjects: SubjectSchema
|
|
59
|
+
/** See `IdPOptions.onTokenIssued`. */
|
|
60
|
+
onTokenIssued?: OnTokenIssued
|
|
58
61
|
resolveTenant: (req: Request) => Promise<Result<TenantId, AuthError>>
|
|
59
62
|
success: (input: SuccessMapInput) => Promise<SubjectClaim>
|
|
60
63
|
/** See `IdPOptions.onLogout` — upstream Single Logout host hook. */
|
|
@@ -133,6 +133,7 @@ export function makeTokenHandler(deps: HttpDeps) {
|
|
|
133
133
|
: {}),
|
|
134
134
|
issuerUrl: c.get("issuerUrl"),
|
|
135
135
|
clock: deps.clock,
|
|
136
|
+
...(deps.onTokenIssued ? { onTokenIssued: deps.onTokenIssued } : {}),
|
|
136
137
|
...(deps.customScopeClaims !== undefined
|
|
137
138
|
? { customScopeClaims: deps.customScopeClaims }
|
|
138
139
|
: {}),
|
|
@@ -181,6 +182,7 @@ export function makeTokenHandler(deps: HttpDeps) {
|
|
|
181
182
|
: {}),
|
|
182
183
|
issuerUrl: c.get("issuerUrl"),
|
|
183
184
|
clock: deps.clock,
|
|
185
|
+
...(deps.onTokenIssued ? { onTokenIssued: deps.onTokenIssued } : {}),
|
|
184
186
|
...(deps.customScopeClaims !== undefined
|
|
185
187
|
? { customScopeClaims: deps.customScopeClaims }
|
|
186
188
|
: {}),
|
|
@@ -210,6 +212,7 @@ export function makeTokenHandler(deps: HttpDeps) {
|
|
|
210
212
|
...(deps.auditLog ? { auditLog: deps.auditLog } : {}),
|
|
211
213
|
issuerUrl: c.get("issuerUrl"),
|
|
212
214
|
clock: deps.clock,
|
|
215
|
+
...(deps.onTokenIssued ? { onTokenIssued: deps.onTokenIssued } : {}),
|
|
213
216
|
...(deps.customScopeClaims !== undefined
|
|
214
217
|
? { customScopeClaims: deps.customScopeClaims }
|
|
215
218
|
: {}),
|
|
@@ -250,6 +253,7 @@ export function makeTokenHandler(deps: HttpDeps) {
|
|
|
250
253
|
: {}),
|
|
251
254
|
issuerUrl: c.get("issuerUrl"),
|
|
252
255
|
clock: deps.clock,
|
|
256
|
+
...(deps.onTokenIssued ? { onTokenIssued: deps.onTokenIssued } : {}),
|
|
253
257
|
...(deps.customScopeClaims !== undefined
|
|
254
258
|
? { customScopeClaims: deps.customScopeClaims }
|
|
255
259
|
: {}),
|
package/src/index.ts
CHANGED
|
@@ -77,6 +77,7 @@ export type {
|
|
|
77
77
|
IdPOptions,
|
|
78
78
|
LogoutEventInput,
|
|
79
79
|
LogoutHookResult,
|
|
80
|
+
OnTokenIssued,
|
|
80
81
|
PersistUpstreamTokens,
|
|
81
82
|
RegisterClient,
|
|
82
83
|
RegisterClientRequest,
|
|
@@ -284,6 +285,7 @@ export function createIdP(opts: IdPOptions): IdP {
|
|
|
284
285
|
resolveTenant: opts.resolveTenant,
|
|
285
286
|
success: opts.success,
|
|
286
287
|
subjects: opts.subjects,
|
|
288
|
+
...(opts.onTokenIssued ? { onTokenIssued: opts.onTokenIssued } : {}),
|
|
287
289
|
...(opts.onLogout ? { onLogout: opts.onLogout } : {}),
|
|
288
290
|
...(opts.persistUpstreamTokens
|
|
289
291
|
? { persistUpstreamTokens: opts.persistUpstreamTokens }
|
package/src/types/idp.ts
CHANGED
|
@@ -96,6 +96,63 @@ export type LogoutEventInput = {
|
|
|
96
96
|
*/
|
|
97
97
|
export type LogoutHookResult = { revokeSubject?: string } | void
|
|
98
98
|
|
|
99
|
+
/**
|
|
100
|
+
* Fired when tokens are minted, naming the derived subject id.
|
|
101
|
+
*
|
|
102
|
+
* This is the only way a host can learn `subjectId` — the value the
|
|
103
|
+
* library signs as `sub`, and the key `TokenStore.revokeBySubject` and
|
|
104
|
+
* `revokeAllForSubject` take. It is derived inside the library from the
|
|
105
|
+
* claim and the receiving client's `sectorIdentifier`, so without this
|
|
106
|
+
* hook a host holds a revocation primitive it can never call, and
|
|
107
|
+
* `onLogout`'s `revokeSubject` has no map to resolve against.
|
|
108
|
+
*
|
|
109
|
+
* That matters because refresh rotation never re-consults the host:
|
|
110
|
+
* `refreshTokens` mints from the claim captured on the stored payload.
|
|
111
|
+
* Revoking the chain is the only way to stop an offboarded user's tokens
|
|
112
|
+
* from being renewed indefinitely.
|
|
113
|
+
*
|
|
114
|
+
* **A principal maps to many subject ids, not one.** Record them; do not
|
|
115
|
+
* overwrite. Two reasons, both silent if you assume otherwise:
|
|
116
|
+
*
|
|
117
|
+
* - **Pairwise** — with `ClientConfig.sectorIdentifier` set, derivation
|
|
118
|
+
* mixes the sector in (OIDC Core §8.1), so the same person has a
|
|
119
|
+
* distinct `sub` per sector. Revoking one leaves the others minting.
|
|
120
|
+
* - **Claim contents** — derivation hashes `claim.properties`. If your
|
|
121
|
+
* `success()` returns anything mutable (an email, a role), the subject
|
|
122
|
+
* id changes when that value changes, and chains issued under the old
|
|
123
|
+
* one survive. Returning a single immutable id is the way to avoid
|
|
124
|
+
* this; OIDC Core §2 wants `sub` never reassigned.
|
|
125
|
+
*
|
|
126
|
+
* Runs **before** the refresh token is persisted, so throwing aborts
|
|
127
|
+
* issuance with `server_error` and leaves no chain behind. That is
|
|
128
|
+
* deliberate: recording the mapping after the token is durable would let
|
|
129
|
+
* a hook failure produce exactly the unrevokable token this exists to
|
|
130
|
+
* prevent. Like `success` and `persistUpstreamTokens`, and unlike
|
|
131
|
+
* `AuditLog`, a failure here stops the grant.
|
|
132
|
+
*/
|
|
133
|
+
export type OnTokenIssued = (input: {
|
|
134
|
+
tenant: TenantContext
|
|
135
|
+
/** Client the tokens were minted for. */
|
|
136
|
+
clientId: string
|
|
137
|
+
/**
|
|
138
|
+
* The `sub` of the issued access token — the key `revokeBySubject` and
|
|
139
|
+
* `revokeAllForSubject` take.
|
|
140
|
+
*/
|
|
141
|
+
subjectId: string
|
|
142
|
+
/**
|
|
143
|
+
* The claim your `success()` (or token-exchange audience mapping)
|
|
144
|
+
* returned, already validated against `subjects`. Use it to attribute
|
|
145
|
+
* `subjectId` to one of your own principals.
|
|
146
|
+
*/
|
|
147
|
+
claim: SubjectClaim
|
|
148
|
+
/**
|
|
149
|
+
* Refresh-token family, for `TokenStore.revokeFamily`. Absent when the
|
|
150
|
+
* grant issued no refresh token (`client_credentials`, RFC 6749
|
|
151
|
+
* §4.4.3), because then there is no chain to revoke.
|
|
152
|
+
*/
|
|
153
|
+
family?: string
|
|
154
|
+
}) => Promise<void> | void
|
|
155
|
+
|
|
99
156
|
/**
|
|
100
157
|
* Optional hook called at `/token` time, after PKCE has succeeded and
|
|
101
158
|
* after the `success` callback has produced a `SubjectClaim`, but
|
|
@@ -356,6 +413,23 @@ export type IdPOptions = {
|
|
|
356
413
|
*/
|
|
357
414
|
persistUpstreamTokens?: PersistUpstreamTokens
|
|
358
415
|
|
|
416
|
+
/**
|
|
417
|
+
* Optional hook fired as tokens are minted, carrying the derived
|
|
418
|
+
* `subjectId` alongside the claim it came from.
|
|
419
|
+
*
|
|
420
|
+
* Supply this if you need to revoke a user's tokens later — on
|
|
421
|
+
* offboarding, deactivation, or a membership change. `subjectId` is
|
|
422
|
+
* computed inside the library and appears nowhere else, so without
|
|
423
|
+
* this hook `TokenStore.revokeBySubject` / `revokeAllForSubject` are
|
|
424
|
+
* uncallable and `onLogout`'s `revokeSubject` has nothing to resolve
|
|
425
|
+
* against. See {@link OnTokenIssued} — in particular, one principal
|
|
426
|
+
* has many subject ids and they must be accumulated, not overwritten.
|
|
427
|
+
*
|
|
428
|
+
* Throwing aborts the grant; it runs before the refresh token is
|
|
429
|
+
* persisted so no unrecorded chain can survive a failure.
|
|
430
|
+
*/
|
|
431
|
+
onTokenIssued?: OnTokenIssued
|
|
432
|
+
|
|
359
433
|
/**
|
|
360
434
|
* Optional RFC 8693 token-exchange hook. If absent, exchange
|
|
361
435
|
* requests at `/token` return `unsupported_grant_type`. See the
|