@_mustachio/openauth 0.10.0 → 0.11.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/adapters/memory/session-store.js +22 -0
- package/dist/esm/adapters/memory/token-store.js +13 -0
- package/dist/esm/client.js +9 -2
- package/dist/esm/domain/authorize.js +5 -0
- package/dist/esm/domain/callback.js +3 -0
- package/dist/esm/domain/discovery.js +44 -2
- package/dist/esm/domain/dpop.js +122 -0
- package/dist/esm/domain/id-token.js +94 -0
- package/dist/esm/domain/introspect.js +5 -1
- package/dist/esm/domain/jwt.js +28 -0
- package/dist/esm/domain/logout.js +75 -0
- package/dist/esm/domain/method-route.js +3 -0
- package/dist/esm/domain/par.js +51 -0
- package/dist/esm/domain/refresh.js +12 -1
- package/dist/esm/domain/register.js +74 -0
- package/dist/esm/domain/token-exchange.js +1 -0
- package/dist/esm/domain/token.js +48 -7
- package/dist/esm/domain/userinfo.js +38 -3
- package/dist/esm/http/handlers/authorize.js +90 -3
- package/dist/esm/http/handlers/end-session.js +64 -0
- package/dist/esm/http/handlers/metadata.js +5 -2
- package/dist/esm/http/handlers/par.js +53 -0
- package/dist/esm/http/handlers/register.js +46 -0
- package/dist/esm/http/handlers/token.js +36 -6
- package/dist/esm/http/handlers/userinfo.js +35 -29
- package/dist/esm/http/router.js +10 -0
- package/dist/esm/http/schemas/authorize.js +7 -1
- package/dist/esm/http/schemas/end-session.js +13 -0
- package/dist/esm/http/schemas/par.js +9 -0
- package/dist/esm/http/schemas/register.js +16 -0
- package/dist/esm/index.js +7 -2
- package/dist/esm/types/error.js +5 -0
- package/dist/types/adapters/memory/session-store.d.ts +3 -1
- package/dist/types/adapters/memory/session-store.d.ts.map +1 -1
- package/dist/types/adapters/memory/token-store.d.ts +1 -0
- package/dist/types/adapters/memory/token-store.d.ts.map +1 -1
- package/dist/types/client.d.ts +19 -0
- package/dist/types/client.d.ts.map +1 -1
- package/dist/types/domain/authorize.d.ts.map +1 -1
- package/dist/types/domain/client-credentials.d.ts +2 -0
- package/dist/types/domain/client-credentials.d.ts.map +1 -1
- package/dist/types/domain/discovery.d.ts +37 -0
- package/dist/types/domain/discovery.d.ts.map +1 -1
- package/dist/types/domain/dpop.d.ts +61 -0
- package/dist/types/domain/dpop.d.ts.map +1 -0
- package/dist/types/domain/id-token.d.ts +83 -0
- package/dist/types/domain/id-token.d.ts.map +1 -0
- package/dist/types/domain/introspect.d.ts +8 -0
- package/dist/types/domain/introspect.d.ts.map +1 -1
- package/dist/types/domain/jwt.d.ts +27 -1
- package/dist/types/domain/jwt.d.ts.map +1 -1
- package/dist/types/domain/logout.d.ts +69 -0
- package/dist/types/domain/logout.d.ts.map +1 -0
- package/dist/types/domain/par.d.ts +62 -0
- package/dist/types/domain/par.d.ts.map +1 -0
- package/dist/types/domain/refresh.d.ts +9 -0
- package/dist/types/domain/refresh.d.ts.map +1 -1
- package/dist/types/domain/register.d.ts +33 -0
- package/dist/types/domain/register.d.ts.map +1 -0
- package/dist/types/domain/token-exchange.d.ts +2 -0
- package/dist/types/domain/token-exchange.d.ts.map +1 -1
- package/dist/types/domain/token.d.ts +41 -1
- package/dist/types/domain/token.d.ts.map +1 -1
- package/dist/types/domain/userinfo.d.ts +44 -5
- package/dist/types/domain/userinfo.d.ts.map +1 -1
- package/dist/types/http/context.d.ts +4 -1
- package/dist/types/http/context.d.ts.map +1 -1
- package/dist/types/http/handlers/authorize.d.ts.map +1 -1
- package/dist/types/http/handlers/end-session.d.ts +3 -0
- package/dist/types/http/handlers/end-session.d.ts.map +1 -0
- package/dist/types/http/handlers/metadata.d.ts +1 -1
- package/dist/types/http/handlers/metadata.d.ts.map +1 -1
- package/dist/types/http/handlers/par.d.ts +3 -0
- package/dist/types/http/handlers/par.d.ts.map +1 -0
- package/dist/types/http/handlers/register.d.ts +3 -0
- package/dist/types/http/handlers/register.d.ts.map +1 -0
- package/dist/types/http/handlers/token.d.ts.map +1 -1
- package/dist/types/http/handlers/userinfo.d.ts.map +1 -1
- package/dist/types/http/router.d.ts.map +1 -1
- package/dist/types/http/schemas/authorize.d.ts +40 -0
- package/dist/types/http/schemas/authorize.d.ts.map +1 -1
- package/dist/types/http/schemas/end-session.d.ts +31 -0
- package/dist/types/http/schemas/end-session.d.ts.map +1 -0
- package/dist/types/http/schemas/par.d.ts +20 -0
- package/dist/types/http/schemas/par.d.ts.map +1 -0
- package/dist/types/http/schemas/register.d.ts +42 -0
- package/dist/types/http/schemas/register.d.ts.map +1 -0
- package/dist/types/index.d.ts +3 -3
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/ports/audit-log.d.ts +27 -0
- package/dist/types/ports/audit-log.d.ts.map +1 -1
- package/dist/types/ports/session-store.d.ts +27 -0
- package/dist/types/ports/session-store.d.ts.map +1 -1
- package/dist/types/ports/token-store.d.ts +12 -0
- package/dist/types/ports/token-store.d.ts.map +1 -1
- package/dist/types/types/authorization.d.ts +23 -0
- package/dist/types/types/authorization.d.ts.map +1 -1
- package/dist/types/types/error.d.ts +9 -0
- package/dist/types/types/error.d.ts.map +1 -1
- package/dist/types/types/flow.d.ts +10 -0
- package/dist/types/types/flow.d.ts.map +1 -1
- package/dist/types/types/idp.d.ts +91 -1
- package/dist/types/types/idp.d.ts.map +1 -1
- package/dist/types/types/tenant.d.ts +37 -0
- package/dist/types/types/tenant.d.ts.map +1 -1
- package/dist/types/types/token.d.ts +128 -0
- package/dist/types/types/token.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/adapters/memory/session-store.ts +44 -1
- package/src/adapters/memory/token-store.ts +16 -0
- package/src/client.ts +32 -0
- package/src/domain/authorize.ts +9 -0
- package/src/domain/callback.ts +5 -0
- package/src/domain/client-credentials.ts +2 -0
- package/src/domain/discovery.ts +80 -2
- package/src/domain/dpop.ts +293 -0
- package/src/domain/id-token.ts +213 -0
- package/src/domain/introspect.ts +10 -0
- package/src/domain/jwt.ts +80 -1
- package/src/domain/logout.ts +180 -0
- package/src/domain/method-route.ts +5 -0
- package/src/domain/par.ts +141 -0
- package/src/domain/refresh.ts +41 -0
- package/src/domain/register.ts +168 -0
- package/src/domain/token-exchange.ts +11 -0
- package/src/domain/token.ts +134 -8
- package/src/domain/userinfo.ts +121 -6
- package/src/http/context.ts +4 -0
- package/src/http/handlers/authorize.ts +144 -3
- package/src/http/handlers/end-session.ts +106 -0
- package/src/http/handlers/metadata.ts +7 -2
- package/src/http/handlers/par.ts +84 -0
- package/src/http/handlers/register.ts +70 -0
- package/src/http/handlers/token.ts +56 -0
- package/src/http/handlers/userinfo.ts +62 -38
- package/src/http/router.ts +19 -0
- package/src/http/schemas/authorize.ts +27 -0
- package/src/http/schemas/end-session.ts +23 -0
- package/src/http/schemas/par.ts +23 -0
- package/src/http/schemas/register.ts +29 -0
- package/src/index.ts +18 -1
- package/src/ports/CONSISTENCY.md +52 -21
- package/src/ports/audit-log.ts +29 -0
- package/src/ports/session-store.ts +33 -0
- package/src/ports/token-store.ts +13 -0
- package/src/types/authorization.ts +25 -0
- package/src/types/error.ts +23 -0
- package/src/types/flow.ts +10 -0
- package/src/types/idp.ts +96 -0
- package/src/types/tenant.ts +37 -0
- package/src/types/token.ts +135 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"par.d.ts","sourceRoot":"","sources":["../../../../src/http/handlers/par.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAIvD,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,OAC1B,WAAW,KAAG,OAAO,CAAC,QAAQ,CAAC,CA+DjD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../../src/http/handlers/register.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAIvD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,OAC/B,WAAW,KAAG,OAAO,CAAC,QAAQ,CAAC,CAkDjD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../../src/http/handlers/token.ts"],"names":[],"mappings":"
|
|
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,CAoOjD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"userinfo.d.ts","sourceRoot":"","sources":["../../../../src/http/handlers/userinfo.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"userinfo.d.ts","sourceRoot":"","sources":["../../../../src/http/handlers/userinfo.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAEvD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,OAC/B,WAAW,KAAG,OAAO,CAAC,QAAQ,CAAC,CAgDjD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../../src/http/router.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../../src/http/router.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAc3B,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAElD,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,CAmDzD"}
|
|
@@ -8,6 +8,12 @@
|
|
|
8
8
|
* requirement, etc.).
|
|
9
9
|
*/
|
|
10
10
|
import { z } from "zod";
|
|
11
|
+
/**
|
|
12
|
+
* Standard `/authorize` query schema. Used both for direct calls and as
|
|
13
|
+
* the validation target after a PAR record is rehydrated — the PAR'd
|
|
14
|
+
* params are passed through this same parser so semantic checks stay in
|
|
15
|
+
* a single place.
|
|
16
|
+
*/
|
|
11
17
|
export declare const authorizeQuerySchema: z.ZodObject<{
|
|
12
18
|
response_type: z.ZodString;
|
|
13
19
|
client_id: z.ZodString;
|
|
@@ -21,6 +27,12 @@ export declare const authorizeQuerySchema: z.ZodObject<{
|
|
|
21
27
|
prompt: z.ZodOptional<z.ZodEffects<z.ZodString, string[], string>>;
|
|
22
28
|
ui_locales: z.ZodOptional<z.ZodEffects<z.ZodString, string[], string>>;
|
|
23
29
|
nonce: z.ZodOptional<z.ZodString>;
|
|
30
|
+
/**
|
|
31
|
+
* OIDC Core §5.5 — JSON-encoded claims request. Parsing + structural
|
|
32
|
+
* validation happens in the domain layer; here we just accept any
|
|
33
|
+
* non-empty string and let the handler parse + reject malformed.
|
|
34
|
+
*/
|
|
35
|
+
claims: z.ZodOptional<z.ZodString>;
|
|
24
36
|
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
25
37
|
response_type: z.ZodString;
|
|
26
38
|
client_id: z.ZodString;
|
|
@@ -34,6 +46,12 @@ export declare const authorizeQuerySchema: z.ZodObject<{
|
|
|
34
46
|
prompt: z.ZodOptional<z.ZodEffects<z.ZodString, string[], string>>;
|
|
35
47
|
ui_locales: z.ZodOptional<z.ZodEffects<z.ZodString, string[], string>>;
|
|
36
48
|
nonce: z.ZodOptional<z.ZodString>;
|
|
49
|
+
/**
|
|
50
|
+
* OIDC Core §5.5 — JSON-encoded claims request. Parsing + structural
|
|
51
|
+
* validation happens in the domain layer; here we just accept any
|
|
52
|
+
* non-empty string and let the handler parse + reject malformed.
|
|
53
|
+
*/
|
|
54
|
+
claims: z.ZodOptional<z.ZodString>;
|
|
37
55
|
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
38
56
|
response_type: z.ZodString;
|
|
39
57
|
client_id: z.ZodString;
|
|
@@ -47,6 +65,28 @@ export declare const authorizeQuerySchema: z.ZodObject<{
|
|
|
47
65
|
prompt: z.ZodOptional<z.ZodEffects<z.ZodString, string[], string>>;
|
|
48
66
|
ui_locales: z.ZodOptional<z.ZodEffects<z.ZodString, string[], string>>;
|
|
49
67
|
nonce: z.ZodOptional<z.ZodString>;
|
|
68
|
+
/**
|
|
69
|
+
* OIDC Core §5.5 — JSON-encoded claims request. Parsing + structural
|
|
70
|
+
* validation happens in the domain layer; here we just accept any
|
|
71
|
+
* non-empty string and let the handler parse + reject malformed.
|
|
72
|
+
*/
|
|
73
|
+
claims: z.ZodOptional<z.ZodString>;
|
|
74
|
+
}, z.ZodTypeAny, "passthrough">>;
|
|
75
|
+
/**
|
|
76
|
+
* RFC 9126 §4: when `request_uri` is presented, the user-agent's
|
|
77
|
+
* `/authorize` URL is allowed to carry only `client_id` and
|
|
78
|
+
* `request_uri`; the rest of the parameter set must come from the
|
|
79
|
+
* stored PAR record.
|
|
80
|
+
*/
|
|
81
|
+
export declare const authorizeRequestUriQuerySchema: z.ZodObject<{
|
|
82
|
+
client_id: z.ZodString;
|
|
83
|
+
request_uri: z.ZodString;
|
|
84
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
85
|
+
client_id: z.ZodString;
|
|
86
|
+
request_uri: z.ZodString;
|
|
87
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
88
|
+
client_id: z.ZodString;
|
|
89
|
+
request_uri: z.ZodString;
|
|
50
90
|
}, z.ZodTypeAny, "passthrough">>;
|
|
51
91
|
export type AuthorizeQuery = z.infer<typeof authorizeQuerySchema>;
|
|
52
92
|
//# sourceMappingURL=authorize.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authorize.d.ts","sourceRoot":"","sources":["../../../../src/http/schemas/authorize.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAyBvB,eAAO,MAAM,oBAAoB
|
|
1
|
+
{"version":3,"file":"authorize.d.ts","sourceRoot":"","sources":["../../../../src/http/schemas/authorize.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAyBvB;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;IAoB7B;;;;OAIG;;;;;;;;;;;;;;;IAJH;;;;OAIG;;;;;;;;;;;;;;;IAJH;;;;OAIG;;gCAGS,CAAA;AAEhB;;;;;GAKG;AACH,eAAO,MAAM,8BAA8B;;;;;;;;;gCAO3B,CAAA;AAEhB,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAA"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zod schema for `/end_session` (OIDC RP-Initiated Logout 1.0 §2).
|
|
3
|
+
*
|
|
4
|
+
* Every parameter is optional per spec. The domain layer enforces the
|
|
5
|
+
* "needs identifying client to honor post_logout_redirect_uri" rule.
|
|
6
|
+
*/
|
|
7
|
+
import { z } from "zod";
|
|
8
|
+
export declare const endSessionParamsSchema: z.ZodObject<{
|
|
9
|
+
id_token_hint: z.ZodOptional<z.ZodString>;
|
|
10
|
+
client_id: z.ZodOptional<z.ZodString>;
|
|
11
|
+
post_logout_redirect_uri: z.ZodOptional<z.ZodString>;
|
|
12
|
+
state: z.ZodOptional<z.ZodString>;
|
|
13
|
+
logout_hint: z.ZodOptional<z.ZodString>;
|
|
14
|
+
ui_locales: z.ZodOptional<z.ZodString>;
|
|
15
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
16
|
+
id_token_hint: z.ZodOptional<z.ZodString>;
|
|
17
|
+
client_id: z.ZodOptional<z.ZodString>;
|
|
18
|
+
post_logout_redirect_uri: z.ZodOptional<z.ZodString>;
|
|
19
|
+
state: z.ZodOptional<z.ZodString>;
|
|
20
|
+
logout_hint: z.ZodOptional<z.ZodString>;
|
|
21
|
+
ui_locales: z.ZodOptional<z.ZodString>;
|
|
22
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
23
|
+
id_token_hint: z.ZodOptional<z.ZodString>;
|
|
24
|
+
client_id: z.ZodOptional<z.ZodString>;
|
|
25
|
+
post_logout_redirect_uri: z.ZodOptional<z.ZodString>;
|
|
26
|
+
state: z.ZodOptional<z.ZodString>;
|
|
27
|
+
logout_hint: z.ZodOptional<z.ZodString>;
|
|
28
|
+
ui_locales: z.ZodOptional<z.ZodString>;
|
|
29
|
+
}, z.ZodTypeAny, "passthrough">>;
|
|
30
|
+
export type EndSessionParams = z.infer<typeof endSessionParamsSchema>;
|
|
31
|
+
//# sourceMappingURL=end-session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"end-session.d.ts","sourceRoot":"","sources":["../../../../src/http/schemas/end-session.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;gCAYnB,CAAA;AAEhB,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zod schema for the `POST /par` body (RFC 9126 §2).
|
|
3
|
+
*
|
|
4
|
+
* The shape is identical to `/authorize` query parameters; we just need
|
|
5
|
+
* `client_id` to identify the authenticating client. `client_secret` is
|
|
6
|
+
* accepted in-body for `client_secret_post` auth.
|
|
7
|
+
*/
|
|
8
|
+
import { z } from "zod";
|
|
9
|
+
export declare const parBodySchema: z.ZodObject<{
|
|
10
|
+
client_id: z.ZodString;
|
|
11
|
+
client_secret: z.ZodOptional<z.ZodString>;
|
|
12
|
+
}, "strip", z.ZodString, z.objectOutputType<{
|
|
13
|
+
client_id: z.ZodString;
|
|
14
|
+
client_secret: z.ZodOptional<z.ZodString>;
|
|
15
|
+
}, z.ZodString, "strip">, z.objectInputType<{
|
|
16
|
+
client_id: z.ZodString;
|
|
17
|
+
client_secret: z.ZodOptional<z.ZodString>;
|
|
18
|
+
}, z.ZodString, "strip">>;
|
|
19
|
+
export type ParBody = z.infer<typeof parBodySchema>;
|
|
20
|
+
//# sourceMappingURL=par.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"par.d.ts","sourceRoot":"","sources":["../../../../src/http/schemas/par.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,aAAa;;;;;;;;;yBAWH,CAAA;AAEvB,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAA"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zod schema for `POST /register` (RFC 7591 §2).
|
|
3
|
+
*
|
|
4
|
+
* The body is `application/json`. We surface invalid structure as
|
|
5
|
+
* `invalid_request` rather than the spec's `invalid_client_metadata` /
|
|
6
|
+
* `invalid_redirect_uri` codes — the library collapses all wire-format
|
|
7
|
+
* problems to the OAuth-2.0 `invalid_request` family for consistency.
|
|
8
|
+
*/
|
|
9
|
+
import { z } from "zod";
|
|
10
|
+
export declare const registerBodySchema: z.ZodObject<{
|
|
11
|
+
client_name: z.ZodOptional<z.ZodString>;
|
|
12
|
+
redirect_uris: z.ZodArray<z.ZodString, "many">;
|
|
13
|
+
grant_types: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
14
|
+
response_types: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
15
|
+
token_endpoint_auth_method: z.ZodOptional<z.ZodEnum<["none", "client_secret_basic", "client_secret_post"]>>;
|
|
16
|
+
scope: z.ZodOptional<z.ZodString>;
|
|
17
|
+
post_logout_redirect_uris: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
18
|
+
sector_identifier_uri: z.ZodOptional<z.ZodString>;
|
|
19
|
+
contacts: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
20
|
+
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
21
|
+
client_name: z.ZodOptional<z.ZodString>;
|
|
22
|
+
redirect_uris: z.ZodArray<z.ZodString, "many">;
|
|
23
|
+
grant_types: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
24
|
+
response_types: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
25
|
+
token_endpoint_auth_method: z.ZodOptional<z.ZodEnum<["none", "client_secret_basic", "client_secret_post"]>>;
|
|
26
|
+
scope: z.ZodOptional<z.ZodString>;
|
|
27
|
+
post_logout_redirect_uris: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
28
|
+
sector_identifier_uri: z.ZodOptional<z.ZodString>;
|
|
29
|
+
contacts: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
30
|
+
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
31
|
+
client_name: z.ZodOptional<z.ZodString>;
|
|
32
|
+
redirect_uris: z.ZodArray<z.ZodString, "many">;
|
|
33
|
+
grant_types: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
34
|
+
response_types: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
35
|
+
token_endpoint_auth_method: z.ZodOptional<z.ZodEnum<["none", "client_secret_basic", "client_secret_post"]>>;
|
|
36
|
+
scope: z.ZodOptional<z.ZodString>;
|
|
37
|
+
post_logout_redirect_uris: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
38
|
+
sector_identifier_uri: z.ZodOptional<z.ZodString>;
|
|
39
|
+
contacts: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
40
|
+
}, z.ZodTypeAny, "passthrough">>;
|
|
41
|
+
export type RegisterBody = z.infer<typeof registerBodySchema>;
|
|
42
|
+
//# sourceMappingURL=register.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../../src/http/schemas/register.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAgBf,CAAA;AAEhB,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -18,15 +18,15 @@ export { asTenantId } from "./types/tenant";
|
|
|
18
18
|
export type { FlowRecord } from "./types/flow";
|
|
19
19
|
export type { AuthMethod, AuthMethodFactory, CachePolicy, ClientFn, MethodContext, MethodDispatchData, MethodHandler, MethodResult, SetCookie, } from "./types/method";
|
|
20
20
|
export type { AuthorizationRequest, AuthorizationState, } from "./types/authorization";
|
|
21
|
-
export type { AccessTokenClaims, CodePayload, RefreshTokenPayload, TokenResponse, } from "./types/token";
|
|
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, FailureEvent, IdP, IdPOptions, PersistUpstreamTokens, RenderPicker, SuccessEvent, SuccessMapInput, } from "./types/idp";
|
|
23
|
+
export type { ExchangeAudience, FailureEvent, IdP, IdPOptions, PersistUpstreamTokens, RegisterClient, RegisterClientRequest, RegisterClientResponse, RenderPicker, SuccessEvent, 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";
|
|
27
27
|
export type { EncryptionKey, KeyStore, KeyWrapper, SigningKey, } from "./ports/key-store";
|
|
28
28
|
export type { MethodStore } from "./ports/method-store";
|
|
29
|
-
export type { SessionRecord, SessionStore } from "./ports/session-store";
|
|
29
|
+
export type { ParRecord, SessionRecord, SessionStore, } from "./ports/session-store";
|
|
30
30
|
export type { TokenStore } from "./ports/token-store";
|
|
31
31
|
/**
|
|
32
32
|
* Host-callable primitive for "log me out of all devices" UX. Wraps
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,YAAY,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAA;AAErD,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAEzC,YAAY,EACV,YAAY,EACZ,wBAAwB,EACxB,SAAS,EACT,YAAY,EACZ,UAAU,EACV,kBAAkB,EAClB,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,cAAc,EACd,WAAW,GACZ,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAE3C,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAE9C,YAAY,EACV,UAAU,EACV,iBAAiB,EACjB,WAAW,EACX,QAAQ,EACR,aAAa,EACb,kBAAkB,EAClB,aAAa,EACb,YAAY,EACZ,SAAS,GACV,MAAM,gBAAgB,CAAA;AAEvB,YAAY,EACV,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,uBAAuB,CAAA;AAE9B,YAAY,EACV,iBAAiB,EACjB,WAAW,EACX,mBAAmB,EACnB,aAAa,GACd,MAAM,eAAe,CAAA;AAEtB,YAAY,EACV,YAAY,EACZ,cAAc,EACd,aAAa,GACd,MAAM,iBAAiB,CAAA;AAExB,YAAY,EACV,gBAAgB,EAChB,YAAY,EACZ,GAAG,EACH,UAAU,EACV,qBAAqB,EACrB,YAAY,EACZ,YAAY,EACZ,eAAe,GAChB,MAAM,aAAa,CAAA;AAEpB,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAEjE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC7D,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AACvD,YAAY,EACV,aAAa,EACb,QAAQ,EACR,UAAU,EACV,UAAU,GACX,MAAM,mBAAmB,CAAA;AAC1B,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AACvD,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -49,6 +49,10 @@ export type AuditEvent = {
|
|
|
49
49
|
subjectId: string;
|
|
50
50
|
/** Hash of the issued refresh token id — never the token itself. */
|
|
51
51
|
refreshTokenIdHash?: string;
|
|
52
|
+
/** OIDC Core §2 — set when the response carried an `id_token`. */
|
|
53
|
+
idTokenIssued?: boolean;
|
|
54
|
+
/** RFC 9449 — set when the access token is DPoP-bound. */
|
|
55
|
+
dpopBound?: boolean;
|
|
52
56
|
} | {
|
|
53
57
|
kind: "token_refreshed";
|
|
54
58
|
tenantId: TenantId;
|
|
@@ -77,6 +81,29 @@ export type AuditEvent = {
|
|
|
77
81
|
tenantId: TenantId;
|
|
78
82
|
clientId: string;
|
|
79
83
|
family: string;
|
|
84
|
+
} | {
|
|
85
|
+
/**
|
|
86
|
+
* Emitted by `/end_session` (OIDC RP-Initiated Logout 1.0 §2) after
|
|
87
|
+
* processing the logout request — regardless of whether a
|
|
88
|
+
* `post_logout_redirect_uri` was supplied. `subjectId` is present
|
|
89
|
+
* when the request carried an `id_token_hint` that successfully
|
|
90
|
+
* verified; absent otherwise.
|
|
91
|
+
*/
|
|
92
|
+
kind: "session_logout";
|
|
93
|
+
tenantId: TenantId;
|
|
94
|
+
clientId?: string;
|
|
95
|
+
subjectId?: string;
|
|
96
|
+
} | {
|
|
97
|
+
/**
|
|
98
|
+
* Emitted when a DPoP proof's `jti` is presented within the replay
|
|
99
|
+
* window (RFC 9449 §11.1). The request was rejected with
|
|
100
|
+
* `invalid_dpop_proof`. Operators / SIEM use this to spot
|
|
101
|
+
* stolen-key replay attempts.
|
|
102
|
+
*/
|
|
103
|
+
kind: "dpop_replay_detected";
|
|
104
|
+
tenantId: TenantId | null;
|
|
105
|
+
/** First-half of the offending jti so logs can correlate without storing it. */
|
|
106
|
+
jtiPrefix: string;
|
|
80
107
|
} | {
|
|
81
108
|
kind: "flow_replay_attempt";
|
|
82
109
|
tenantId: TenantId | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit-log.d.ts","sourceRoot":"","sources":["../../../src/ports/audit-log.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAE/C;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAClB;IACE,IAAI,EAAE,mBAAmB,CAAA;IACzB,QAAQ,EAAE,QAAQ,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;CACf,GACD;IACE,IAAI,EAAE,qBAAqB,CAAA;IAC3B,QAAQ,EAAE,QAAQ,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;CAClB,GACD;IACE,IAAI,EAAE,kBAAkB,CAAA;IACxB,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAA;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;CACf,GACD;IACE,IAAI,EAAE,cAAc,CAAA;IACpB,QAAQ,EAAE,QAAQ,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,oEAAoE;IACpE,kBAAkB,CAAC,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"audit-log.d.ts","sourceRoot":"","sources":["../../../src/ports/audit-log.ts"],"names":[],"mappings":"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"}
|
|
@@ -67,6 +67,33 @@ export type SessionStore = {
|
|
|
67
67
|
createSession?(sessionId: string, payload: SessionRecord, ttl: number): Promise<Result<void>>;
|
|
68
68
|
readSession?(sessionId: string): Promise<Result<SessionRecord>>;
|
|
69
69
|
revokeSession?(sessionId: string): Promise<Result<void>>;
|
|
70
|
+
/**
|
|
71
|
+
* Optional: Pushed Authorization Request (RFC 9126) storage. Persists the
|
|
72
|
+
* pre-parsed `/authorize` parameters under an opaque `request_uri` for
|
|
73
|
+
* one-shot retrieval at `/authorize` time. Strong consistency + atomic
|
|
74
|
+
* delete-on-read — same semantics as `saveFlow` / `consumeFlow`.
|
|
75
|
+
*
|
|
76
|
+
* Adapters without these methods cannot satisfy `/par`; the framework's
|
|
77
|
+
* `/par` handler returns `invalid_request` when called against such a
|
|
78
|
+
* store. Implement both methods together (the framework only exposes
|
|
79
|
+
* the endpoint when both are present).
|
|
80
|
+
*/
|
|
81
|
+
savePar?(requestUri: string, payload: ParRecord, ttl: number): Promise<Result<void>>;
|
|
82
|
+
consumePar?(requestUri: string): Promise<Result<ParRecord>>;
|
|
83
|
+
};
|
|
84
|
+
/**
|
|
85
|
+
* Stored PAR payload. The `params` blob is the raw form/query record from
|
|
86
|
+
* `POST /par`, kept verbatim so the `/authorize` rehydrate path can feed
|
|
87
|
+
* it through the same Zod parser the direct path uses.
|
|
88
|
+
*/
|
|
89
|
+
export type ParRecord = {
|
|
90
|
+
requestUri: string;
|
|
91
|
+
/** Raw key/value record as posted to `/par` (excluding auth fields). */
|
|
92
|
+
params: Record<string, string>;
|
|
93
|
+
clientId: string;
|
|
94
|
+
/** Wall-clock issuance + absolute expiry (ms). */
|
|
95
|
+
issuedAt: number;
|
|
96
|
+
expiresAt: number;
|
|
70
97
|
};
|
|
71
98
|
/** Optional long-lived session payload (used by `createSession` family). */
|
|
72
99
|
export type SessionRecord = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-store.d.ts","sourceRoot":"","sources":["../../../src/ports/session-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAE7C,MAAM,MAAM,YAAY,GAAG;IACzB;;;;;OAKG;IACH,QAAQ,CACN,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,UAAU,EACnB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;IAExB;;;;;;;;OAQG;IACH,qBAAqB,CACnB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;IAExB;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAA;IAErD;;;;;;;;;;;OAWG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAA;IAExD;;;;OAIG;IACH,aAAa,CAAC,CACZ,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,aAAa,EACtB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;IACxB,WAAW,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAA;IAC/D,aAAa,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"session-store.d.ts","sourceRoot":"","sources":["../../../src/ports/session-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAE7C,MAAM,MAAM,YAAY,GAAG;IACzB;;;;;OAKG;IACH,QAAQ,CACN,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,UAAU,EACnB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;IAExB;;;;;;;;OAQG;IACH,qBAAqB,CACnB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;IAExB;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAA;IAErD;;;;;;;;;;;OAWG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAA;IAExD;;;;OAIG;IACH,aAAa,CAAC,CACZ,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,aAAa,EACtB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;IACxB,WAAW,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAA;IAC/D,aAAa,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;IAExD;;;;;;;;;;OAUG;IACH,OAAO,CAAC,CACN,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,SAAS,EAClB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;IACxB,UAAU,CAAC,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAA;CAC5D,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,wEAAwE;IACxE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAChB,kDAAkD;IAClD,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,4EAA4E;AAC5E,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,mDAAmD;IACnD,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,kFAAkF;IAClF,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACnC,CAAA"}
|
|
@@ -89,5 +89,17 @@ export type TokenStore = {
|
|
|
89
89
|
* preferred; documented eventual lag acceptable.
|
|
90
90
|
*/
|
|
91
91
|
revokeBySubject(tenantId: TenantId, subjectId: string): Promise<Result<void>>;
|
|
92
|
+
/**
|
|
93
|
+
* Optional: DPoP proof replay protection (RFC 9449 §11.1). Atomically
|
|
94
|
+
* record the proof's `jti` and reject if it's been seen within the TTL
|
|
95
|
+
* window. Returns `invalid_grant` (with `reuseSignal` omitted) when a
|
|
96
|
+
* `jti` is already present.
|
|
97
|
+
*
|
|
98
|
+
* Adapters without this method cannot satisfy DPoP at the token /
|
|
99
|
+
* userinfo endpoints; the framework's DPoP verifier returns
|
|
100
|
+
* `invalid_dpop_proof` when called against such a store. Memory adapter
|
|
101
|
+
* implements; production adapters follow in subsequent commits.
|
|
102
|
+
*/
|
|
103
|
+
recordDpopJti?(jti: string, ttlMs: number): Promise<Result<void>>;
|
|
92
104
|
};
|
|
93
105
|
//# sourceMappingURL=token-store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-store.d.ts","sourceRoot":"","sources":["../../../src/ports/token-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AACzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAE/C,MAAM,MAAM,UAAU,GAAG;IACvB;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;IAE9E;;;;;;OAMG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;IAElD;;;OAGG;IACH,WAAW,CACT,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;IAExB;;;;;;;;;;;;;;;;;;OAkBG;IACH,cAAc,CACZ,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,GACnC,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAA;IAEvC;;;;;;;;;;;;;OAaG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAA;IAElE;;;;OAIG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;IAEnD;;;OAGG;IACH,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"token-store.d.ts","sourceRoot":"","sources":["../../../src/ports/token-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AACzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAE/C,MAAM,MAAM,UAAU,GAAG;IACvB;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;IAE9E;;;;;;OAMG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;IAElD;;;OAGG;IACH,WAAW,CACT,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;IAExB;;;;;;;;;;;;;;;;;;OAkBG;IACH,cAAc,CACZ,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,GACnC,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAA;IAEvC;;;;;;;;;;;;;OAaG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAA;IAElE;;;;OAIG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;IAEnD;;;OAGG;IACH,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;IAE7E;;;;;;;;;;OAUG;IACH,aAAa,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;CAClE,CAAA"}
|
|
@@ -36,6 +36,29 @@ export type AuthorizationRequest = {
|
|
|
36
36
|
uiLocales?: string[];
|
|
37
37
|
/** Standard OIDC. */
|
|
38
38
|
nonce?: string;
|
|
39
|
+
/**
|
|
40
|
+
* OIDC Core §5.5 — RP-requested claims, parsed from the `claims`
|
|
41
|
+
* parameter's JSON value. The library currently honors claim **names**
|
|
42
|
+
* (additive, bypasses scope gating) but does not enforce the
|
|
43
|
+
* `essential` / `value` / `values` qualifiers.
|
|
44
|
+
*/
|
|
45
|
+
claimsRequest?: ClaimsRequest;
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* OIDC Core §5.5 `claims` parameter. Each section maps claim name to an
|
|
49
|
+
* optional qualifier object (`{essential, value, values}`) or `null`
|
|
50
|
+
* meaning "just request the claim without qualifiers".
|
|
51
|
+
*/
|
|
52
|
+
export type ClaimsRequest = {
|
|
53
|
+
/** Claims to include in the `/userinfo` response. */
|
|
54
|
+
userinfo?: Record<string, ClaimRequestEntry | null>;
|
|
55
|
+
/** Claims to include in the `id_token`. */
|
|
56
|
+
id_token?: Record<string, ClaimRequestEntry | null>;
|
|
57
|
+
};
|
|
58
|
+
export type ClaimRequestEntry = {
|
|
59
|
+
essential?: boolean;
|
|
60
|
+
value?: unknown;
|
|
61
|
+
values?: unknown[];
|
|
39
62
|
};
|
|
40
63
|
/**
|
|
41
64
|
* In-memory authorization state produced by `domain/authorize.startAuthorize`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authorization.d.ts","sourceRoot":"","sources":["../../../src/types/authorization.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAExC;;;;;;GAMG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,QAAQ,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,8BAA8B;IAC9B,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,6EAA6E;IAC7E,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,mFAAmF;IACnF,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,qBAAqB;IACrB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,qBAAqB;IACrB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,qBAAqB;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"authorization.d.ts","sourceRoot":"","sources":["../../../src/types/authorization.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAExC;;;;;;GAMG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,QAAQ,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,8BAA8B;IAC9B,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,6EAA6E;IAC7E,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,mFAAmF;IACnF,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,qBAAqB;IACrB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,qBAAqB;IACrB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,qBAAqB;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;;;OAKG;IACH,aAAa,CAAC,EAAE,aAAa,CAAA;CAC9B,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAC,CAAA;IACnD,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAC,CAAA;CACpD,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,MAAM,CAAC,EAAE,OAAO,EAAE,CAAA;CACnB,CAAA;AAED;;;;;GAKG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,QAAQ,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA"}
|
|
@@ -64,6 +64,12 @@ export type AuthError = {
|
|
|
64
64
|
code: "internal_error";
|
|
65
65
|
description: string;
|
|
66
66
|
cause?: unknown;
|
|
67
|
+
} | {
|
|
68
|
+
code: "invalid_dpop_proof";
|
|
69
|
+
description: string;
|
|
70
|
+
replaySignal?: {
|
|
71
|
+
jti: string;
|
|
72
|
+
};
|
|
67
73
|
};
|
|
68
74
|
export type AuthErrorCode = AuthError["code"];
|
|
69
75
|
/** Narrow constructor helpers — keep call sites short and types tight. */
|
|
@@ -88,5 +94,8 @@ export declare const authError: {
|
|
|
88
94
|
}) => AuthError;
|
|
89
95
|
invalidTarget: (description: string) => AuthError;
|
|
90
96
|
internalError: (description: string, cause?: unknown) => AuthError;
|
|
97
|
+
invalidDpopProof: (description: string, replaySignal?: {
|
|
98
|
+
jti: string;
|
|
99
|
+
}) => AuthError;
|
|
91
100
|
};
|
|
92
101
|
//# sourceMappingURL=error.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../../src/types/error.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,MAAM,SAAS,GACjB;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAChE;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE;AACjD;;;;;;GAMG;GACD;IACE,IAAI,EAAE,eAAe,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE;QACZ,MAAM,EAAE,MAAM,CAAA;QACd,QAAQ,EAAE,MAAM,CAAA;QAChB,SAAS,EAAE,MAAM,CAAA;KAClB,CAAA;CACF,GACD;IAAE,IAAI,EAAE,qBAAqB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACpD;IAAE,IAAI,EAAE,wBAAwB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACvD;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAI9C;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC9D;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAGnE;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAG/C;IACE,IAAI,EAAE,kBAAkB,CAAA;IACxB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,GAID;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../../src/types/error.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,MAAM,SAAS,GACjB;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAChE;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE;AACjD;;;;;;GAMG;GACD;IACE,IAAI,EAAE,eAAe,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE;QACZ,MAAM,EAAE,MAAM,CAAA;QACd,QAAQ,EAAE,MAAM,CAAA;QAChB,SAAS,EAAE,MAAM,CAAA;KAClB,CAAA;CACF,GACD;IAAE,IAAI,EAAE,qBAAqB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACpD;IAAE,IAAI,EAAE,wBAAwB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACvD;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAI9C;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC9D;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAGnE;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAG/C;IACE,IAAI,EAAE,kBAAkB,CAAA;IACxB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,GAID;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAWhE;IACE,IAAI,EAAE,oBAAoB,CAAA;IAC1B,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;CAC/B,CAAA;AAEL,MAAM,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,CAAA;AAE7C,0EAA0E;AAC1E,eAAO,MAAM,SAAS;kCACU,MAAM,UAAU,MAAM,KAAG,SAAS;iCAKnC,MAAM,KAAG,SAAS;gCAKhC,MAAM,gBACL;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,KACpE,SAAS;sCAKsB,MAAM,KAAG,SAAS;wCAIhB,MAAM,KAAG,SAAS;gCAI1B,MAAM,KAAG,SAAS;gCAIlB,MAAM,KAAG,SAAS;gCAIlB,MAAM,KAAG,SAAS;+BAInB,MAAM,UAAU,OAAO,KAAG,SAAS;kCAKhC,MAAM,YAAY,MAAM,KAAG,SAAS;kCAMnD,MAAM,QACb;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,KAC/C,SAAS;iCAMiB,MAAM,KAAG,SAAS;iCAIlB,MAAM,UAAU,OAAO,KAAG,SAAS;oCAMjD,MAAM,iBACJ;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,KAC7B,SAAS;CAKb,CAAA"}
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
* needed at `/token` into the auth-code payload; `methodState` is
|
|
20
20
|
* dropped.
|
|
21
21
|
*/
|
|
22
|
+
import type { ClaimsRequest } from "./authorization";
|
|
22
23
|
import type { TenantId } from "./tenant";
|
|
23
24
|
export type FlowRecord = {
|
|
24
25
|
flowId: string;
|
|
@@ -53,6 +54,15 @@ export type FlowRecord = {
|
|
|
53
54
|
* `appState`. Compared at callback against the consumed record.
|
|
54
55
|
*/
|
|
55
56
|
nonce: string;
|
|
57
|
+
/**
|
|
58
|
+
* Relying party's OIDC `nonce` parameter (OIDC Core §3.1.2.1). Distinct
|
|
59
|
+
* from `nonce` (which is the framework's CSRF nonce for state-MAC
|
|
60
|
+
* binding). When present, must be echoed in the issued `id_token`
|
|
61
|
+
* (OIDC Core §2). Snapshotted into `CodePayload.appNonce` at success.
|
|
62
|
+
*/
|
|
63
|
+
appNonce?: string;
|
|
64
|
+
/** OIDC Core §5.5 — RP-requested claims, parsed at `/authorize`. */
|
|
65
|
+
claimsRequest?: ClaimsRequest;
|
|
56
66
|
/**
|
|
57
67
|
* Relying-party → IdP PKCE. The RP generates the verifier and sends the
|
|
58
68
|
* challenge to `/authorize`. Verified at `/token`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flow.d.ts","sourceRoot":"","sources":["../../../src/types/flow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAExC,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,QAAQ,CAAA;IAElB,+EAA+E;IAC/E,QAAQ,EAAE,MAAM,CAAA;IAChB,2DAA2D;IAC3D,UAAU,EAAE,MAAM,CAAA;IAElB,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAA;IAChB,2CAA2C;IAC3C,cAAc,EAAE,MAAM,CAAA;IACtB,yEAAyE;IACzE,YAAY,EAAE,MAAM,CAAA;IACpB,yCAAyC;IACzC,YAAY,EAAE,MAAM,CAAA;IACpB,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,wCAAwC;IACxC,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB;;;OAGG;IACH,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAA;IACb;;;;OAIG;IACH,UAAU,CAAC,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IAElD;;;;;;;;;;OAUG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;IAErB,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAEjC,SAAS,EAAE,MAAM,CAAA;IACjB;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA"}
|
|
1
|
+
{"version":3,"file":"flow.d.ts","sourceRoot":"","sources":["../../../src/types/flow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAExC,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,QAAQ,CAAA;IAElB,+EAA+E;IAC/E,QAAQ,EAAE,MAAM,CAAA;IAChB,2DAA2D;IAC3D,UAAU,EAAE,MAAM,CAAA;IAElB,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAA;IAChB,2CAA2C;IAC3C,cAAc,EAAE,MAAM,CAAA;IACtB,yEAAyE;IACzE,YAAY,EAAE,MAAM,CAAA;IACpB,yCAAyC;IACzC,YAAY,EAAE,MAAM,CAAA;IACpB,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,wCAAwC;IACxC,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB;;;OAGG;IACH,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAA;IACb;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,oEAAoE;IACpE,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B;;;;OAIG;IACH,UAAU,CAAC,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IAElD;;;;;;;;;;OAUG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;IAErB,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAEjC,SAAS,EAAE,MAAM,CAAA;IACjB;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA"}
|
|
@@ -13,7 +13,7 @@ import type { AuthError } from "./error";
|
|
|
13
13
|
import type { AnyAuthMethodFactory } from "./method";
|
|
14
14
|
import type { Result } from "./result";
|
|
15
15
|
import type { SubjectClaim, SubjectSchema } from "./subject";
|
|
16
|
-
import type { StateKeyRing, TenantContext, TenantId, ThemeConfig } from "./tenant";
|
|
16
|
+
import type { ClientConfig, StateKeyRing, TenantContext, TenantId, ThemeConfig } from "./tenant";
|
|
17
17
|
import type { PickerContext, PickerMethod } from "./picker";
|
|
18
18
|
/**
|
|
19
19
|
* Input handed to the user's `success` callback. The framework provides
|
|
@@ -104,6 +104,66 @@ export type ExchangeAudience = (currentClaim: SubjectClaim, request: {
|
|
|
104
104
|
/** Tenant the subject_token came from. */
|
|
105
105
|
fromTenantId: string;
|
|
106
106
|
}) => Promise<SubjectClaim | AuthError>;
|
|
107
|
+
/**
|
|
108
|
+
* RFC 7591 Dynamic Client Registration request body, normalized to the
|
|
109
|
+
* library's type system. The framework's `/register` handler parses the
|
|
110
|
+
* raw JSON, validates structure, then calls the host's `registerClient`
|
|
111
|
+
* hook with this shape. The host owns persistence — writing through its
|
|
112
|
+
* own `ConfigStore` — and returns the final `ClientConfig`.
|
|
113
|
+
*/
|
|
114
|
+
export type RegisterClientRequest = {
|
|
115
|
+
client_name?: string;
|
|
116
|
+
redirect_uris: string[];
|
|
117
|
+
/** RFC 7591 §2 — defaults to `["authorization_code"]`. */
|
|
118
|
+
grant_types?: string[];
|
|
119
|
+
/** RFC 7591 §2 — defaults to `["code"]`. */
|
|
120
|
+
response_types?: string[];
|
|
121
|
+
/** RFC 7591 §2 — `"none"` = public client, otherwise confidential. */
|
|
122
|
+
token_endpoint_auth_method?: "none" | "client_secret_basic" | "client_secret_post";
|
|
123
|
+
scope?: string;
|
|
124
|
+
/** OIDC RP-Initiated Logout 1.0 §2. */
|
|
125
|
+
post_logout_redirect_uris?: string[];
|
|
126
|
+
/** OIDC Core §8.1. */
|
|
127
|
+
sector_identifier_uri?: string;
|
|
128
|
+
/** Free-form metadata the host may interpret. */
|
|
129
|
+
contacts?: string[];
|
|
130
|
+
};
|
|
131
|
+
/**
|
|
132
|
+
* RFC 7591 §3.2.1 response body. Returned verbatim from `/register` when
|
|
133
|
+
* the host hook produces a `ClientConfig`. `client_secret` is included
|
|
134
|
+
* only for confidential clients; public clients omit it.
|
|
135
|
+
*/
|
|
136
|
+
export type RegisterClientResponse = {
|
|
137
|
+
client_id: string;
|
|
138
|
+
client_secret?: string;
|
|
139
|
+
client_id_issued_at: number;
|
|
140
|
+
client_secret_expires_at?: number;
|
|
141
|
+
redirect_uris: string[];
|
|
142
|
+
grant_types?: string[];
|
|
143
|
+
response_types?: string[];
|
|
144
|
+
token_endpoint_auth_method?: string;
|
|
145
|
+
client_name?: string;
|
|
146
|
+
};
|
|
147
|
+
/**
|
|
148
|
+
* Optional Dynamic Client Registration hook. Hosts that want to expose
|
|
149
|
+
* RFC 7591 client provisioning supply this; the framework validates the
|
|
150
|
+
* wire format, then defers persistence to the host. If absent, the
|
|
151
|
+
* `/register` endpoint returns `invalid_request` so RPs receive a clear
|
|
152
|
+
* "not enabled" signal rather than a 404.
|
|
153
|
+
*
|
|
154
|
+
* The hook receives the parsed request, the resolved tenant, and the
|
|
155
|
+
* plaintext client secret (if any) the framework minted — hosts hash it
|
|
156
|
+
* with `hashClientSecret` before storing on `ClientConfig.secretHash`,
|
|
157
|
+
* then return the final `ClientConfig` along with the secret in the
|
|
158
|
+
* `RegisterClientResponse` so the RP can record it.
|
|
159
|
+
*/
|
|
160
|
+
export type RegisterClient = (input: {
|
|
161
|
+
tenant: TenantContext;
|
|
162
|
+
request: RegisterClientRequest;
|
|
163
|
+
}) => Promise<Result<{
|
|
164
|
+
client: ClientConfig;
|
|
165
|
+
secret?: string;
|
|
166
|
+
}, AuthError>>;
|
|
107
167
|
/**
|
|
108
168
|
* Optional override for the default provider picker shown when an
|
|
109
169
|
* `/authorize` request has multiple enabled methods and no `method_id`.
|
|
@@ -181,6 +241,12 @@ export type IdPOptions = {
|
|
|
181
241
|
* Optional override for the default provider picker. See `RenderPicker`.
|
|
182
242
|
*/
|
|
183
243
|
renderPicker?: RenderPicker;
|
|
244
|
+
/**
|
|
245
|
+
* Optional RFC 7591 Dynamic Client Registration hook. See
|
|
246
|
+
* `RegisterClient` for the contract. When absent, `/register` rejects
|
|
247
|
+
* with `invalid_request: "dynamic client registration is not enabled"`.
|
|
248
|
+
*/
|
|
249
|
+
registerClient?: RegisterClient;
|
|
184
250
|
/**
|
|
185
251
|
* Optional hook that builds the `TenantContext.request.custom` blob for
|
|
186
252
|
* each request the framework processes (the initial `/authorize`, the
|
|
@@ -199,6 +265,24 @@ export type IdPOptions = {
|
|
|
199
265
|
* between an absent hook and one that returns `{}`.
|
|
200
266
|
*/
|
|
201
267
|
buildCustomContext?: (req: Request) => Record<string, unknown> | Promise<Record<string, unknown>>;
|
|
268
|
+
/**
|
|
269
|
+
* Optional vendor scope → claim-names map. Merged on top of OIDC Core
|
|
270
|
+
* §5.4 when building the id_token + `/userinfo` response. Lets a host
|
|
271
|
+
* expose its own identity vocabulary (`tenant_id`, `org_role`, etc.)
|
|
272
|
+
* via custom scope names. The standard §5.4 mapping always wins on
|
|
273
|
+
* collision, so an entry for `email` is silently ignored.
|
|
274
|
+
*
|
|
275
|
+
* Per-client scope allowlist still applies — a client must list a
|
|
276
|
+
* custom scope in `ClientConfig.scopes` to be allowed to request it.
|
|
277
|
+
*
|
|
278
|
+
* ```ts
|
|
279
|
+
* customScopeClaims: {
|
|
280
|
+
* tenant: ["tenant_id", "tenant_role", "tenant_roles"],
|
|
281
|
+
* org: ["organization_id", "org_role"],
|
|
282
|
+
* }
|
|
283
|
+
* ```
|
|
284
|
+
*/
|
|
285
|
+
customScopeClaims?: Record<string, ReadonlyArray<string>>;
|
|
202
286
|
/**
|
|
203
287
|
* Optional override for the framework's `Set-Cookie` defaults.
|
|
204
288
|
*
|
|
@@ -230,5 +314,11 @@ export type IdP = {
|
|
|
230
314
|
discovery: (req: Request) => Promise<Response>;
|
|
231
315
|
revoke: (req: Request) => Promise<Response>;
|
|
232
316
|
introspect: (req: Request) => Promise<Response>;
|
|
317
|
+
/** OIDC RP-Initiated Logout 1.0. */
|
|
318
|
+
endSession: (req: Request) => Promise<Response>;
|
|
319
|
+
/** RFC 9126 Pushed Authorization Requests. */
|
|
320
|
+
par: (req: Request) => Promise<Response>;
|
|
321
|
+
/** RFC 7591 Dynamic Client Registration. */
|
|
322
|
+
register: (req: Request) => Promise<Response>;
|
|
233
323
|
};
|
|
234
324
|
//# sourceMappingURL=idp.d.ts.map
|