@absolutejs/auth 0.56.2 → 0.56.4

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.
Files changed (218) hide show
  1. package/dist/cli/migrate.js.map +1 -1
  2. package/dist/index.js +45 -1
  3. package/dist/index.js.map +4 -4
  4. package/dist/oidc/index.js +15 -1
  5. package/dist/oidc/index.js.map +3 -3
  6. package/dist/server.js +45 -1
  7. package/dist/server.js.map +4 -4
  8. package/package.json +1 -1
  9. package/dist/abuse/captcha.d.ts +0 -11
  10. package/dist/abuse/config.d.ts +0 -29
  11. package/dist/actions.d.ts +0 -27
  12. package/dist/adaptive/config.d.ts +0 -34
  13. package/dist/adaptive/fingerprint.d.ts +0 -2
  14. package/dist/adaptive/inMemoryStores.d.ts +0 -3
  15. package/dist/adaptive/postgresStores.d.ts +0 -245
  16. package/dist/adaptive/types.d.ts +0 -62
  17. package/dist/agents/config.d.ts +0 -44
  18. package/dist/agents/context.d.ts +0 -46
  19. package/dist/agents/idJag.d.ts +0 -49
  20. package/dist/agents/inMemoryStores.d.ts +0 -4
  21. package/dist/agents/oidcAdapter.d.ts +0 -12
  22. package/dist/agents/postgresStores.d.ts +0 -569
  23. package/dist/agents/principal.d.ts +0 -4
  24. package/dist/agents/registration.d.ts +0 -162
  25. package/dist/agents/registrationClient.d.ts +0 -50
  26. package/dist/agents/routes.d.ts +0 -321
  27. package/dist/agents/types.d.ts +0 -129
  28. package/dist/apikeys/config.d.ts +0 -64
  29. package/dist/apikeys/inMemoryStores.d.ts +0 -4
  30. package/dist/apikeys/postgresStores.d.ts +0 -359
  31. package/dist/apikeys/routes.d.ts +0 -83
  32. package/dist/apikeys/types.d.ts +0 -53
  33. package/dist/audit/config.d.ts +0 -9
  34. package/dist/audit/export.d.ts +0 -2
  35. package/dist/audit/inMemoryAuditStore.d.ts +0 -2
  36. package/dist/audit/integrity.d.ts +0 -19
  37. package/dist/audit/postgresAuditStore.d.ts +0 -116
  38. package/dist/audit/siem.d.ts +0 -11
  39. package/dist/audit/types.d.ts +0 -19
  40. package/dist/audit/wrap.d.ts +0 -9
  41. package/dist/authContext.d.ts +0 -193
  42. package/dist/authorization/config.d.ts +0 -19
  43. package/dist/authorization/protectPermission.d.ts +0 -52
  44. package/dist/compliance/cipher.d.ts +0 -11
  45. package/dist/compliance/config.d.ts +0 -18
  46. package/dist/compliance/redaction.d.ts +0 -8
  47. package/dist/compliance/routes.d.ts +0 -89
  48. package/dist/constants.d.ts +0 -10
  49. package/dist/credentials/backgroundOps.d.ts +0 -45
  50. package/dist/credentials/config.d.ts +0 -68
  51. package/dist/credentials/emailValidation.d.ts +0 -9
  52. package/dist/credentials/emailVerification.d.ts +0 -83
  53. package/dist/credentials/import.d.ts +0 -34
  54. package/dist/credentials/inMemoryCredentialStore.d.ts +0 -2
  55. package/dist/credentials/legacyHashers.d.ts +0 -3
  56. package/dist/credentials/login.d.ts +0 -76
  57. package/dist/credentials/passwordPolicy.d.ts +0 -15
  58. package/dist/credentials/passwordReset.d.ts +0 -87
  59. package/dist/credentials/postgresCredentialStore.d.ts +0 -235
  60. package/dist/credentials/register.d.ts +0 -54
  61. package/dist/credentials/routes.d.ts +0 -201
  62. package/dist/credentials/types.d.ts +0 -26
  63. package/dist/crypto.d.ts +0 -32
  64. package/dist/errors.d.ts +0 -12
  65. package/dist/federation/tokenStore.d.ts +0 -29
  66. package/dist/fga/config.d.ts +0 -53
  67. package/dist/fga/inMemoryStores.d.ts +0 -3
  68. package/dist/fga/postgresStores.d.ts +0 -116
  69. package/dist/fga/redisCheckCache.d.ts +0 -11
  70. package/dist/fga/schema.d.ts +0 -2
  71. package/dist/fga/types.d.ts +0 -28
  72. package/dist/htmx/configuredRoutes.d.ts +0 -542
  73. package/dist/htmx/renderers.d.ts +0 -8
  74. package/dist/htmx/routes.d.ts +0 -514
  75. package/dist/htmx/types.d.ts +0 -129
  76. package/dist/linkedProviders/inMemoryStores.d.ts +0 -9
  77. package/dist/linkedProviders/neonStores.d.ts +0 -484
  78. package/dist/linkedProviders/oauthAccountResolver.d.ts +0 -28
  79. package/dist/linkedProviders/oauthResolver.d.ts +0 -9
  80. package/dist/linkedProviders/resolver.d.ts +0 -22
  81. package/dist/lockout/config.d.ts +0 -17
  82. package/dist/lockout/inMemoryLockoutStore.d.ts +0 -2
  83. package/dist/lockout/postgresLockoutStore.d.ts +0 -71
  84. package/dist/lockout/redisLockoutStore.d.ts +0 -3
  85. package/dist/lockout/types.d.ts +0 -12
  86. package/dist/mfa/backupCodes.d.ts +0 -5
  87. package/dist/mfa/challenge.d.ts +0 -70
  88. package/dist/mfa/config.d.ts +0 -50
  89. package/dist/mfa/gate.d.ts +0 -2
  90. package/dist/mfa/inMemoryMfaStore.d.ts +0 -2
  91. package/dist/mfa/management.d.ts +0 -106
  92. package/dist/mfa/postgresMfaStore.d.ts +0 -206
  93. package/dist/mfa/rotation.d.ts +0 -17
  94. package/dist/mfa/routes.d.ts +0 -234
  95. package/dist/mfa/secret.d.ts +0 -2
  96. package/dist/mfa/sms.d.ts +0 -105
  97. package/dist/mfa/totp.d.ts +0 -91
  98. package/dist/mfa/types.d.ts +0 -23
  99. package/dist/migrations/generate.d.ts +0 -2
  100. package/dist/migrations/index.d.ts +0 -5
  101. package/dist/migrations/runner.d.ts +0 -13
  102. package/dist/migrations/types.d.ts +0 -14
  103. package/dist/oidc/clientAuth.d.ts +0 -19
  104. package/dist/oidc/clientIdMetadata.d.ts +0 -32
  105. package/dist/oidc/config.d.ts +0 -296
  106. package/dist/oidc/dpop.d.ts +0 -23
  107. package/dist/oidc/inMemoryStores.d.ts +0 -11
  108. package/dist/oidc/inMemoryVciStores.d.ts +0 -3
  109. package/dist/oidc/jar.d.ts +0 -14
  110. package/dist/oidc/keys.d.ts +0 -35
  111. package/dist/oidc/logout.d.ts +0 -38
  112. package/dist/oidc/mtls.d.ts +0 -11
  113. package/dist/oidc/par.d.ts +0 -28
  114. package/dist/oidc/postgresStores.d.ts +0 -1217
  115. package/dist/oidc/registration.d.ts +0 -138
  116. package/dist/oidc/routes.d.ts +0 -569
  117. package/dist/oidc/types.d.ts +0 -145
  118. package/dist/oidc/userinfo.d.ts +0 -21
  119. package/dist/oidc/vci.d.ts +0 -159
  120. package/dist/oidc/vciRoutes.d.ts +0 -92
  121. package/dist/organizations/config.d.ts +0 -46
  122. package/dist/organizations/inMemoryOrganizationStore.d.ts +0 -2
  123. package/dist/organizations/operations.d.ts +0 -39
  124. package/dist/organizations/postgresOrganizationStore.d.ts +0 -340
  125. package/dist/organizations/routes.d.ts +0 -299
  126. package/dist/organizations/types.d.ts +0 -45
  127. package/dist/passwordless/config.d.ts +0 -43
  128. package/dist/passwordless/inMemoryPasswordlessTokenStore.d.ts +0 -2
  129. package/dist/passwordless/postgresPasswordlessTokenStore.d.ts +0 -56
  130. package/dist/passwordless/routes.d.ts +0 -163
  131. package/dist/passwordless/types.d.ts +0 -9
  132. package/dist/pluginIdentity.d.ts +0 -2
  133. package/dist/portal/config.d.ts +0 -34
  134. package/dist/portal/inMemorySetupSessionStore.d.ts +0 -2
  135. package/dist/portal/operations.d.ts +0 -10
  136. package/dist/portal/postgresSetupSessionStore.d.ts +0 -116
  137. package/dist/portal/routes.d.ts +0 -160
  138. package/dist/portal/types.d.ts +0 -16
  139. package/dist/providers/clients.d.ts +0 -1818
  140. package/dist/providersFromEnv.d.ts +0 -19
  141. package/dist/roles/config.d.ts +0 -27
  142. package/dist/roles/inMemoryRoleStore.d.ts +0 -2
  143. package/dist/roles/operations.d.ts +0 -8
  144. package/dist/roles/postgresRoleStore.d.ts +0 -86
  145. package/dist/roles/resolver.d.ts +0 -17
  146. package/dist/roles/routes.d.ts +0 -106
  147. package/dist/roles/types.d.ts +0 -14
  148. package/dist/routes/authorize.d.ts +0 -102
  149. package/dist/routes/callback.d.ts +0 -64
  150. package/dist/routes/profile.d.ts +0 -70
  151. package/dist/routes/protectRoute.d.ts +0 -51
  152. package/dist/routes/refresh.d.ts +0 -74
  153. package/dist/routes/revoke.d.ts +0 -73
  154. package/dist/routes/sessions.d.ts +0 -103
  155. package/dist/routes/signout.d.ts +0 -70
  156. package/dist/routes/stepUp.d.ts +0 -48
  157. package/dist/routes/userStatus.d.ts +0 -72
  158. package/dist/scim/config.d.ts +0 -57
  159. package/dist/scim/extensions.d.ts +0 -30
  160. package/dist/scim/inMemoryScimTokenStore.d.ts +0 -2
  161. package/dist/scim/postgresScimTokenStore.d.ts +0 -86
  162. package/dist/scim/routes.d.ts +0 -366
  163. package/dist/scim/serialize.d.ts +0 -83
  164. package/dist/scim/types.d.ts +0 -54
  165. package/dist/session/access.d.ts +0 -33
  166. package/dist/session/anonymous.d.ts +0 -12
  167. package/dist/session/cleanup.d.ts +0 -45
  168. package/dist/session/impersonation.d.ts +0 -34
  169. package/dist/session/inMemoryStore.d.ts +0 -7
  170. package/dist/session/multiSession.d.ts +0 -27
  171. package/dist/session/neonStore.d.ts +0 -513
  172. package/dist/session/promote.d.ts +0 -23
  173. package/dist/session/redisStore.d.ts +0 -6
  174. package/dist/session/sessionsConfig.d.ts +0 -9
  175. package/dist/session/state.d.ts +0 -33
  176. package/dist/session/types.d.ts +0 -21
  177. package/dist/session/userSessions.d.ts +0 -19
  178. package/dist/sso/config.d.ts +0 -149
  179. package/dist/sso/discoveryRoute.d.ts +0 -63
  180. package/dist/sso/inMemorySamlServiceProviderStore.d.ts +0 -2
  181. package/dist/sso/inMemorySsoConnectionStore.d.ts +0 -2
  182. package/dist/sso/oidcRoutes.d.ts +0 -98
  183. package/dist/sso/postgresSamlServiceProviderStore.d.ts +0 -101
  184. package/dist/sso/postgresSsoConnectionStore.d.ts +0 -116
  185. package/dist/sso/samlIdpRoutes.d.ts +0 -139
  186. package/dist/sso/samlRoutes.d.ts +0 -179
  187. package/dist/sso/types.d.ts +0 -53
  188. package/dist/stores/postgres.d.ts +0 -5
  189. package/dist/stores/redis.d.ts +0 -5
  190. package/dist/telemetry/tracing.d.ts +0 -15
  191. package/dist/tenancy.d.ts +0 -9
  192. package/dist/typeGuards.d.ts +0 -6
  193. package/dist/typebox.d.ts +0 -4
  194. package/dist/types.d.ts +0 -421
  195. package/dist/utils.d.ts +0 -45
  196. package/dist/vault/config.d.ts +0 -20
  197. package/dist/vault/inMemoryVaultStore.d.ts +0 -2
  198. package/dist/vault/postgresVaultStore.d.ts +0 -86
  199. package/dist/vault/types.d.ts +0 -14
  200. package/dist/vc/inMemoryVpStores.d.ts +0 -2
  201. package/dist/vc/openid4vp.d.ts +0 -82
  202. package/dist/vc/postgresVcStores.d.ts +0 -300
  203. package/dist/vc/sdJwt.d.ts +0 -37
  204. package/dist/vc/statusList.d.ts +0 -29
  205. package/dist/vc/statusListRoutes.d.ts +0 -63
  206. package/dist/vc/vpRoutes.d.ts +0 -120
  207. package/dist/webauthn/adapter.d.ts +0 -59
  208. package/dist/webauthn/config.d.ts +0 -36
  209. package/dist/webauthn/inMemoryWebAuthnCredentialStore.d.ts +0 -2
  210. package/dist/webauthn/postgresWebAuthnCredentialStore.d.ts +0 -146
  211. package/dist/webauthn/routes.d.ts +0 -155
  212. package/dist/webauthn/types.d.ts +0 -17
  213. package/dist/webhooks/config.d.ts +0 -34
  214. package/dist/webhooks/dispatcher.d.ts +0 -3
  215. package/dist/webhooks/inMemoryStore.d.ts +0 -2
  216. package/dist/webhooks/postgresStore.d.ts +0 -116
  217. package/dist/webhooks/sign.d.ts +0 -11
  218. package/dist/webhooks/types.d.ts +0 -25
package/dist/mfa/sms.d.ts DELETED
@@ -1,105 +0,0 @@
1
- import { Elysia } from 'elysia';
2
- import { type MfaRouteProps, type SmsCodeMessage } from './config';
3
- import type { MfaEnrollment, MFAStore } from './types';
4
- export declare const isE164Phone: (phone: string) => boolean;
5
- export declare const issueAndStoreSmsCode: ({ codeLength, enrollment, mfaStore, onSendSmsCode, ttlMs }: {
6
- codeLength: number;
7
- enrollment: MfaEnrollment;
8
- mfaStore: MFAStore;
9
- onSendSmsCode?: (message: SmsCodeMessage) => void | Promise<void>;
10
- ttlMs: number;
11
- }) => Promise<number | undefined>;
12
- export declare const maskPhone: (phone: string) => string;
13
- export declare const mfaSmsRoutes: <UserType>({ authSessionStore, getUserId, mfaStore, onMfaEnrolled, onSendSmsCode, smsCodeLength, smsCodeTtlMs, smsMaxAttempts, smsSetupRoute, smsVerifyRoute }: MfaRouteProps<UserType>) => Elysia<"", {
14
- decorator: {};
15
- store: {
16
- session: import("..").SessionRecord<UserType>;
17
- unregisteredSession: import("..").UnregisteredSessionRecord;
18
- };
19
- derive: {};
20
- resolve: {};
21
- }, {
22
- typebox: {};
23
- error: {};
24
- }, {
25
- schema: {};
26
- standaloneSchema: {};
27
- macro: {};
28
- macroFn: {};
29
- parser: {};
30
- response: {};
31
- }, {
32
- [x: string]: {
33
- post: {
34
- body: {
35
- phone: string;
36
- };
37
- params: {};
38
- query: unknown;
39
- headers: unknown;
40
- response: {
41
- 400: "Phone must be in E.164 format";
42
- 401: "Authentication required";
43
- 501: "SMS MFA is not configured";
44
- 200: {
45
- readonly phone: string;
46
- };
47
- 422: {
48
- type: "validation";
49
- on: string;
50
- summary?: string;
51
- message?: string;
52
- found?: unknown;
53
- property?: string;
54
- expected?: string;
55
- };
56
- };
57
- };
58
- };
59
- } & {
60
- [x: string]: {
61
- post: {
62
- body: {
63
- code: string;
64
- };
65
- params: {};
66
- query: unknown;
67
- headers: unknown;
68
- response: {
69
- 400: "No SMS enrollment in progress" | "SMS code expired" | "Invalid SMS code";
70
- 401: "Authentication required";
71
- 200: {
72
- readonly status: "enrolled";
73
- };
74
- 422: {
75
- type: "validation";
76
- on: string;
77
- summary?: string;
78
- message?: string;
79
- found?: unknown;
80
- property?: string;
81
- expected?: string;
82
- };
83
- 429: "Too many attempts";
84
- };
85
- };
86
- };
87
- }, {
88
- derive: {};
89
- resolve: {};
90
- schema: {};
91
- standaloneSchema: {};
92
- response: {};
93
- }, {
94
- derive: {};
95
- resolve: {};
96
- schema: {};
97
- standaloneSchema: {};
98
- response: {};
99
- } & {
100
- derive: {};
101
- resolve: {};
102
- schema: {};
103
- standaloneSchema: {};
104
- response: {};
105
- }>;
@@ -1,91 +0,0 @@
1
- import { Elysia } from 'elysia';
2
- import { type MfaRouteProps } from './config';
3
- export declare const mfaTotpRoutes: <UserType>({ authSessionStore, backupCodeCount, encryptionKey, getUserId, issuer, mfaStore, onMfaEnrolled, totpSetupRoute, totpVerifyRoute }: MfaRouteProps<UserType>) => Elysia<"", {
4
- decorator: {};
5
- store: {
6
- session: import("..").SessionRecord<UserType>;
7
- unregisteredSession: import("..").UnregisteredSessionRecord;
8
- };
9
- derive: {};
10
- resolve: {};
11
- }, {
12
- typebox: {};
13
- error: {};
14
- }, {
15
- schema: {};
16
- standaloneSchema: {};
17
- macro: {};
18
- macroFn: {};
19
- parser: {};
20
- response: {};
21
- }, {
22
- [x: string]: {
23
- post: {
24
- body: unknown;
25
- params: {};
26
- query: unknown;
27
- headers: unknown;
28
- response: {
29
- 401: "Authentication required";
30
- 200: {
31
- readonly secret: string;
32
- readonly uri: string;
33
- };
34
- 422: {
35
- type: "validation";
36
- on: string;
37
- summary?: string;
38
- message?: string;
39
- found?: unknown;
40
- property?: string;
41
- expected?: string;
42
- };
43
- };
44
- };
45
- };
46
- } & {
47
- [x: string]: {
48
- post: {
49
- body: {
50
- code: string;
51
- };
52
- params: {};
53
- query: unknown;
54
- headers: unknown;
55
- response: {
56
- 400: "No TOTP enrollment in progress" | "Invalid TOTP code";
57
- 401: "Authentication required";
58
- 200: {
59
- readonly backupCodes: string[];
60
- };
61
- 422: {
62
- type: "validation";
63
- on: string;
64
- summary?: string;
65
- message?: string;
66
- found?: unknown;
67
- property?: string;
68
- expected?: string;
69
- };
70
- };
71
- };
72
- };
73
- }, {
74
- derive: {};
75
- resolve: {};
76
- schema: {};
77
- standaloneSchema: {};
78
- response: {};
79
- }, {
80
- derive: {};
81
- resolve: {};
82
- schema: {};
83
- standaloneSchema: {};
84
- response: {};
85
- } & {
86
- derive: {};
87
- resolve: {};
88
- schema: {};
89
- standaloneSchema: {};
90
- response: {};
91
- }>;
@@ -1,23 +0,0 @@
1
- export type MfaFactorType = 'backup_codes' | 'sms' | 'totp';
2
- export type MfaEnrollment = {
3
- backupCodeHashes: string[];
4
- createdAt: number;
5
- lastUsedAt?: number;
6
- smsFailedAttempts?: number;
7
- smsPendingCodeHash?: string;
8
- smsPendingCodeExpiresAt?: number;
9
- smsPhone?: string;
10
- smsVerified: boolean;
11
- totpFailedAttempts?: number;
12
- totpSecretCiphertext?: string;
13
- totpVerified: boolean;
14
- updatedAt: number;
15
- userId: string;
16
- };
17
- export type MFAStore = {
18
- getEnrollment: (userId: string) => Promise<MfaEnrollment | undefined>;
19
- listEnrollments: () => Promise<MfaEnrollment[]>;
20
- removeEnrollment: (userId: string) => Promise<void>;
21
- saveEnrollment: (enrollment: MfaEnrollment) => Promise<void>;
22
- };
23
- export declare const isMfaEnrolled: (enrollment: MfaEnrollment | undefined) => boolean;
@@ -1,2 +0,0 @@
1
- import { type PgTable } from 'drizzle-orm/pg-core';
2
- export declare const tablesToInitSql: (tables: PgTable[]) => string;
@@ -1,5 +0,0 @@
1
- import type { BlockMigrations } from './types';
2
- export type BlockName = 'adaptive' | 'agents' | 'apikeys' | 'audit' | 'credentials' | 'fga' | 'linkedProviders' | 'lockout' | 'mfa' | 'oidc' | 'organizations' | 'passwordless' | 'portal' | 'roles' | 'scim' | 'sessions' | 'sso' | 'vault' | 'vc' | 'webauthn' | 'webhooks';
3
- export declare const blockMigrations: Record<BlockName, BlockMigrations>;
4
- export { runMigrations } from './runner';
5
- export type { Migration, BlockMigrations } from './types';
@@ -1,13 +0,0 @@
1
- import { type BlockName } from './index';
2
- export type RunMigrationsOptions = {
3
- databaseUrl: string;
4
- /** Subset of blocks to apply. Omit to apply every block the package ships. */
5
- blocks?: BlockName[];
6
- /** Optional logger; defaults to console.log. Pass `() => undefined` for silent mode. */
7
- log?: (message: string) => void;
8
- };
9
- export type MigrationRunResult = {
10
- applied: string[];
11
- skipped: string[];
12
- };
13
- export declare const runMigrations: ({ blocks, databaseUrl, log }: RunMigrationsOptions) => Promise<MigrationRunResult>;
@@ -1,14 +0,0 @@
1
- export type Migration = {
2
- /** Stable identifier — stored in `auth_migrations` to track applied state. Must be
3
- * monotonically ordered within a block (e.g. `0001_init`, `0002_add_foo_column`). */
4
- id: string;
5
- /** Idempotent SQL. Use `CREATE TABLE IF NOT EXISTS` so re-running is a no-op even if
6
- * the consumer wired the tables by hand before adopting the migration runner. */
7
- sql: string;
8
- };
9
- export type BlockMigrations = {
10
- /** Block name as used in the CLI's `--blocks` flag and in `runMigrations({ blocks })`.
11
- * Convention: same string as the `src/<block>/` directory. */
12
- block: string;
13
- migrations: Migration[];
14
- };
@@ -1,19 +0,0 @@
1
- import type { ClientAssertionJtiStore, OAuthClient } from './types';
2
- export declare const CLIENT_ASSERTION_TYPE = "urn:ietf:params:oauth:client-assertion-type:jwt-bearer";
3
- export declare const verifyClientAssertion: ({ assertion, expectedAudience, jtiStore, resolveClient }: {
4
- assertion: string;
5
- expectedAudience: string;
6
- jtiStore?: ClientAssertionJtiStore;
7
- resolveClient: (clientId: string) => Promise<OAuthClient | undefined>;
8
- }) => Promise<OAuthClient | undefined>;
9
- export declare const verifyJwtSignedByClient: ({ jwt, client }: {
10
- client: OAuthClient;
11
- jwt: string;
12
- }) => Promise<{
13
- header: {
14
- [k: string]: any;
15
- };
16
- payload: {
17
- [k: string]: any;
18
- };
19
- } | undefined>;
@@ -1,32 +0,0 @@
1
- import type { OAuthClient } from './types';
2
- export type ClientIdMetadataDocument = {
3
- client_id: string;
4
- client_name?: string;
5
- redirect_uris: string[];
6
- grant_types?: string[];
7
- response_types?: string[];
8
- token_endpoint_auth_method?: 'none' | 'private_key_jwt' | 'self_signed_tls_client_auth';
9
- application_type?: 'native' | 'web';
10
- client_uri?: string;
11
- logo_uri?: string;
12
- policy_uri?: string;
13
- tos_uri?: string;
14
- jwks_uri?: string;
15
- jwks?: {
16
- keys: JsonWebKey[];
17
- };
18
- scope?: string;
19
- };
20
- export declare const validateClientIdMetadataDocument: (document: ClientIdMetadataDocument, expectedClientId: string) => string[];
21
- export declare const clientIdMetadataToOAuthClient: (document: ClientIdMetadataDocument) => OAuthClient;
22
- /** Resolve an HTTPS URL client_id into OAuth client metadata without prior
23
- registration. Network access is injected so callers can enforce DNS/IP/redirect
24
- policy with @absolutejs/egress. Redirects are forbidden and documents are capped
25
- at 5 KiB per the IETF Client ID Metadata Document security guidance. */
26
- export declare const createClientIdMetadataResolver: ({ fetch: fetcher, allow, cacheTtlMs, maxBytes, now }: {
27
- fetch: (input: string | URL, init?: RequestInit) => Promise<Response>;
28
- allow?: (clientId: string) => boolean | Promise<boolean>;
29
- cacheTtlMs?: number;
30
- maxBytes?: number;
31
- now?: () => number;
32
- }) => (clientId: string) => Promise<OAuthClient | undefined>;
@@ -1,296 +0,0 @@
1
- import type { RouteString } from '../types';
2
- import { type SigningKey } from './keys';
3
- import type { OnClientRegistered, OnClientRegistration } from './registration';
4
- import type { VciConfig } from './vci';
5
- import type { AuthorizationCodeStore, BackchannelAuthStore, ClientAssertionJtiStore, ClientRegistrationTokenStore, DeviceAuthorizationStore, InitialAccessTokenStore, LogoutDeliveryStore, OAuthClient, OAuthClientStore, OidcRefreshTokenStore, PushedAuthorizationRequestStore } from './types';
6
- export declare const DEFAULT_OIDC_ROUTE: RouteString;
7
- export type PublicTokenGrantResult = {
8
- body: Record<string, unknown>;
9
- status: number;
10
- };
11
- export type OidcProviderConfig<UserType> = {
12
- /** Additional non-conflicting RFC 8414 metadata. Reserved core OAuth keys
13
- * cannot be replaced. Used by profiles such as open agent registration. */
14
- additionalDiscoveryMetadata?: Record<string, unknown>;
15
- /** Public extension grants whose bearer material is carried in their body
16
- * (for example an agent claim_token). They run before OAuth client auth. */
17
- publicTokenGrantTypes?: string[];
18
- handlePublicTokenGrant?: (context: {
19
- body: Record<string, string | undefined>;
20
- request: Request;
21
- }) => Promise<PublicTokenGrantResult | undefined>;
22
- accessTokenTtlMs?: number | ((context: {
23
- scopes: string[];
24
- }) => number);
25
- acrValuesSupported?: string[];
26
- authorizationCodeStore: AuthorizationCodeStore;
27
- clientAssertionJtiStore?: ClientAssertionJtiStore;
28
- clientRegistrationTokenStore?: ClientRegistrationTokenStore;
29
- clientStore: OAuthClientStore;
30
- resolveClientIdMetadata?: (clientId: string) => Promise<OAuthClient | undefined>;
31
- deviceAuthorizationStore?: DeviceAuthorizationStore;
32
- deviceCodeTtlMs?: number;
33
- devicePollIntervalSeconds?: number;
34
- backchannelAuthStore?: BackchannelAuthStore;
35
- backchannelAuthTtlMs?: number;
36
- backchannelPollIntervalSeconds?: number;
37
- resolveBackchannelUser?: (hint: {
38
- client: OAuthClient;
39
- loginHint: string;
40
- }) => Promise<{
41
- sub: string;
42
- } | undefined>;
43
- onBackchannelAuthRequest?: (context: {
44
- authReqId: string;
45
- bindingMessage: string | undefined;
46
- clientId: string;
47
- scopes: string[];
48
- userSub: string;
49
- }) => Promise<void> | void;
50
- getAccessTokenClaims?: (context: {
51
- audience?: string;
52
- clientId: string;
53
- scopes: string[];
54
- sub: string;
55
- }) => Record<string, unknown> | Promise<Record<string, unknown>>;
56
- getClaims?: (user: UserType) => Record<string, unknown>;
57
- consentUrl?: string;
58
- needsConsent?: (context: {
59
- client: {
60
- clientId: string;
61
- name: string;
62
- };
63
- requestedScopes: string[];
64
- user: UserType;
65
- }) => boolean | Promise<boolean>;
66
- getGrantedScopes?: (context: {
67
- client: {
68
- clientId: string;
69
- name: string;
70
- };
71
- requestedScopes: string[];
72
- user: UserType;
73
- }) => string[] | undefined | Promise<string[] | undefined>;
74
- getUserId: (user: UserType) => string;
75
- getUserInfo?: (sub: string) => Promise<Record<string, unknown> | undefined>;
76
- idTokenTtlMs?: number;
77
- issuer: string;
78
- dpopNonce?: {
79
- secret: string;
80
- };
81
- extractTlsClientCert?: (headers: Headers) => Promise<Uint8Array | undefined> | Uint8Array | undefined;
82
- getAcr?: (context: {
83
- scopes: string[];
84
- user: UserType;
85
- }) => string | undefined;
86
- initialAccessTokenStore?: InitialAccessTokenStore;
87
- loginUrl?: string;
88
- logoutDeliveryStore?: LogoutDeliveryStore;
89
- oidcRoute?: RouteString;
90
- onClientRegistration?: OnClientRegistration;
91
- /** Fires after RFC 7591 registration has been persisted and has a generated client id. */
92
- onClientRegistered?: OnClientRegistered;
93
- /** Fires after the authenticated user approves an RFC 8628 device request. */
94
- onDeviceAuthorizationApproved?: (context: {
95
- clientId: string;
96
- scopes: string[];
97
- userSub: string;
98
- }) => void | Promise<void>;
99
- pushedAuthorizationRequestStore?: PushedAuthorizationRequestStore;
100
- pushedAuthorizationRequestTtlMs?: number;
101
- refreshTokenStore: OidcRefreshTokenStore;
102
- refreshTokenTtlMs?: number;
103
- signingKey: SigningKey;
104
- strictFapi?: boolean;
105
- vciConfig?: VciConfig;
106
- };
107
- export type TokenExchangeResult = {
108
- error: 'invalid_grant' | 'invalid_scope';
109
- ok: false;
110
- } | {
111
- accessToken: string;
112
- expiresIn: number;
113
- ok: true;
114
- scope: string;
115
- };
116
- export declare const exchangeToken: <UserType>({ actorClientId, audience, config, dpopJkt, now, requestedScopes, subjectToken }: {
117
- actorClientId: string;
118
- audience?: string;
119
- config: OidcProviderConfig<UserType>;
120
- dpopJkt?: string;
121
- now?: number;
122
- requestedScopes?: string[];
123
- subjectToken: string;
124
- }) => Promise<TokenExchangeResult>;
125
- export declare const issueTokenSet: <UserType>({ acr, audience, claims, clientCertThumbprint, clientId, config, dpopJkt, nonce, now, scopes, sub }: {
126
- acr?: string;
127
- audience?: string;
128
- claims?: Record<string, unknown>;
129
- clientCertThumbprint?: string;
130
- clientId: string;
131
- config: OidcProviderConfig<UserType>;
132
- dpopJkt?: string;
133
- nonce?: string;
134
- now?: number;
135
- scopes: string[];
136
- sub: string;
137
- }) => Promise<{
138
- access_token: string;
139
- expires_in: number;
140
- id_token: string;
141
- refresh_token: string;
142
- scope: string;
143
- token_type: "Bearer" | "DPoP";
144
- }>;
145
- export declare const mcpProtectedResourceMetadata: ({ issuer, resource, scopes }: {
146
- issuer: string;
147
- resource: string;
148
- scopes?: string[];
149
- }) => {
150
- authorization_servers: string[];
151
- resource: string;
152
- scopes_supported: string[];
153
- };
154
- export declare const verifyPkce: (codeVerifier: string, codeChallenge: string) => Promise<boolean>;
155
- export type TokenIntrospection = {
156
- active: false;
157
- } | {
158
- active: true;
159
- client_id: string;
160
- exp: number;
161
- iat: number;
162
- scope: string;
163
- sub: string;
164
- token_type: 'access_token' | 'refresh_token';
165
- };
166
- export type TokenTypeHint = 'access_token' | 'refresh_token';
167
- export declare const introspectToken: <UserType>({ config, hint, now, token }: {
168
- config: OidcProviderConfig<UserType>;
169
- hint?: TokenTypeHint;
170
- now?: number;
171
- token: string;
172
- }) => Promise<{
173
- active: false;
174
- } | {
175
- active: true;
176
- client_id: string;
177
- exp: number;
178
- iat: number;
179
- scope: string;
180
- sub: string;
181
- token_type: "access_token";
182
- } | {
183
- active: true;
184
- client_id: string;
185
- exp: number;
186
- iat: number;
187
- scope: string;
188
- sub: string;
189
- token_type: "refresh_token";
190
- }>;
191
- export declare const revokeRefreshToken: <UserType>(config: OidcProviderConfig<UserType>, token: string) => Promise<boolean>;
192
- export type DeviceAuthorizationResponse = {
193
- device_code: string;
194
- expires_in: number;
195
- interval: number;
196
- user_code: string;
197
- verification_uri: string;
198
- verification_uri_complete: string;
199
- };
200
- export declare const issueDeviceAuthorization: <UserType>({ clientId, config, now, requestedScopes }: {
201
- clientId: string;
202
- config: OidcProviderConfig<UserType>;
203
- now?: number;
204
- requestedScopes: string[];
205
- }) => Promise<DeviceAuthorizationResponse>;
206
- export type DeviceDecisionResult = {
207
- error: 'already_decided' | 'expired_token' | 'invalid_user_code' | 'not_configured';
208
- ok: false;
209
- } | {
210
- ok: true;
211
- };
212
- export declare const approveDeviceAuthorization: <UserType>({ config, userCode, userSub }: {
213
- config: OidcProviderConfig<UserType>;
214
- userCode: string;
215
- userSub: string;
216
- }) => Promise<DeviceDecisionResult>;
217
- export declare const denyDeviceAuthorization: <UserType>({ config, userCode }: {
218
- config: OidcProviderConfig<UserType>;
219
- userCode: string;
220
- }) => Promise<DeviceDecisionResult>;
221
- export type DeviceCodeExchangeError = 'access_denied' | 'authorization_pending' | 'expired_token' | 'invalid_grant' | 'slow_down';
222
- export type DeviceCodeExchangeResult = {
223
- access_token: string;
224
- expires_in: number;
225
- id_token: string;
226
- ok: true;
227
- refresh_token: string;
228
- scope: string;
229
- token_type: 'Bearer' | 'DPoP';
230
- } | {
231
- error: DeviceCodeExchangeError;
232
- ok: false;
233
- };
234
- export declare const exchangeDeviceCode: <UserType>({ clientId, config, deviceCode, dpopJkt, now }: {
235
- clientId: string;
236
- config: OidcProviderConfig<UserType>;
237
- deviceCode: string;
238
- dpopJkt?: string;
239
- now?: number;
240
- }) => Promise<DeviceCodeExchangeResult>;
241
- export declare const CIBA_GRANT_TYPE = "urn:openid:params:grant-type:ciba";
242
- export type BackchannelAuthResponse = {
243
- auth_req_id: string;
244
- expires_in: number;
245
- interval: number;
246
- };
247
- export type BackchannelAuthError = 'expired_login_hint_token' | 'invalid_client' | 'invalid_request' | 'unknown_user_id';
248
- export declare const issueBackchannelAuth: <UserType>({ clientId, config, loginHint, bindingMessage, now, requestedScopes }: {
249
- clientId: string;
250
- config: OidcProviderConfig<UserType>;
251
- loginHint: string;
252
- bindingMessage?: string;
253
- now?: number;
254
- requestedScopes: string[];
255
- }) => Promise<{
256
- error: BackchannelAuthError;
257
- ok: false;
258
- } | ({
259
- ok: true;
260
- } & BackchannelAuthResponse)>;
261
- export type BackchannelDecisionResult = {
262
- error: 'already_decided' | 'expired_token' | 'invalid_auth_req_id' | 'not_configured';
263
- ok: false;
264
- } | {
265
- ok: true;
266
- };
267
- export declare const approveBackchannelAuth: <UserType>({ authReqId, config, userSub }: {
268
- authReqId: string;
269
- config: OidcProviderConfig<UserType>;
270
- userSub?: string;
271
- }) => Promise<BackchannelDecisionResult>;
272
- export declare const denyBackchannelAuth: <UserType>({ authReqId, config }: {
273
- authReqId: string;
274
- config: OidcProviderConfig<UserType>;
275
- }) => Promise<BackchannelDecisionResult>;
276
- export type BackchannelExchangeError = 'access_denied' | 'authorization_pending' | 'expired_token' | 'invalid_grant' | 'slow_down';
277
- export type BackchannelExchangeResult = {
278
- access_token: string;
279
- expires_in: number;
280
- id_token: string;
281
- ok: true;
282
- refresh_token: string;
283
- scope: string;
284
- token_type: 'Bearer' | 'DPoP';
285
- } | {
286
- error: BackchannelExchangeError;
287
- ok: false;
288
- };
289
- export declare const exchangeBackchannelAuth: <UserType>({ authReqId, clientCertThumbprint, clientId, config, dpopJkt, now }: {
290
- authReqId: string;
291
- clientCertThumbprint?: string;
292
- clientId: string;
293
- config: OidcProviderConfig<UserType>;
294
- dpopJkt?: string;
295
- now?: number;
296
- }) => Promise<BackchannelExchangeResult>;
@@ -1,23 +0,0 @@
1
- export declare const extractDpopNonceClaim: (proof: string) => string | undefined;
2
- export declare const mintDpopNonce: ({ now, secret }: {
3
- now?: number;
4
- secret: string;
5
- }) => Promise<string>;
6
- export declare const verifyDpopNonce: ({ now, nonce, secret }: {
7
- nonce: string;
8
- now?: number;
9
- secret: string;
10
- }) => Promise<boolean>;
11
- export type DpopResult = {
12
- jkt: string;
13
- jti?: string;
14
- };
15
- export declare const verifyDpopProof: ({ accessToken, htm, htu, isUsedJti, maxAgeMs, now, proof }: {
16
- accessToken?: string;
17
- htm: string;
18
- htu: string;
19
- isUsedJti?: (jti: string) => boolean | Promise<boolean>;
20
- maxAgeMs?: number;
21
- now?: number;
22
- proof: string | undefined;
23
- }) => Promise<DpopResult | undefined>;
@@ -1,11 +0,0 @@
1
- import type { AuthorizationCodeStore, BackchannelAuthStore, ClientAssertionJtiStore, ClientRegistrationTokenStore, DeviceAuthorizationStore, InitialAccessTokenStore, LogoutDeliveryStore, OAuthClient, OAuthClientStore, OidcRefreshTokenStore, PushedAuthorizationRequestStore } from './types';
2
- export declare const createInMemoryAuthorizationCodeStore: () => AuthorizationCodeStore;
3
- export declare const createInMemoryBackchannelAuthStore: () => BackchannelAuthStore;
4
- export declare const createInMemoryClientAssertionJtiStore: () => ClientAssertionJtiStore;
5
- export declare const createInMemoryClientRegistrationTokenStore: () => ClientRegistrationTokenStore;
6
- export declare const createInMemoryDeviceAuthorizationStore: () => DeviceAuthorizationStore;
7
- export declare const createInMemoryInitialAccessTokenStore: (initialHashes?: string[]) => InitialAccessTokenStore;
8
- export declare const createInMemoryLogoutDeliveryStore: () => LogoutDeliveryStore;
9
- export declare const createInMemoryOAuthClientStore: (clients: OAuthClient[]) => OAuthClientStore;
10
- export declare const createInMemoryOidcRefreshTokenStore: () => OidcRefreshTokenStore;
11
- export declare const createInMemoryPushedAuthorizationRequestStore: () => PushedAuthorizationRequestStore;
@@ -1,3 +0,0 @@
1
- import type { CredentialNonceStore, CredentialOfferStore } from './vci';
2
- export declare const createInMemoryCredentialNonceStore: () => CredentialNonceStore;
3
- export declare const createInMemoryCredentialOfferStore: () => CredentialOfferStore;
@@ -1,14 +0,0 @@
1
- import type { OAuthClient } from './types';
2
- export type JarParseResult = {
3
- error: 'invalid_request_object';
4
- ok: false;
5
- } | {
6
- ok: true;
7
- params: Record<string, string>;
8
- };
9
- export declare const parseSignedRequestObject: ({ client, expectedIssuer, jwt, now }: {
10
- client: OAuthClient;
11
- expectedIssuer: string;
12
- jwt: string;
13
- now?: number;
14
- }) => Promise<JarParseResult>;