@_mustachio/openauth 0.11.0 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (208) hide show
  1. package/dist/esm/adapters/d1/index.js +18 -9
  2. package/dist/esm/adapters/d1/migrations.js +7 -2
  3. package/dist/esm/adapters/d1/session-store.js +39 -0
  4. package/dist/esm/adapters/d1/session.js +2 -2
  5. package/dist/esm/adapters/durable-object/index.js +4 -0
  6. package/dist/esm/adapters/durable-object/session-store.js +42 -0
  7. package/dist/esm/adapters/dynamo/index.js +24 -7
  8. package/dist/esm/adapters/dynamo/session-store.js +49 -0
  9. package/dist/esm/adapters/kms/index.js +6 -2
  10. package/dist/esm/adapters/kv/index.js +6 -2
  11. package/dist/esm/adapters/memory/index.js +24 -7
  12. package/dist/esm/adapters/memory/session-store.js +23 -0
  13. package/dist/esm/adapters/postgres/executor.js +2 -2
  14. package/dist/esm/adapters/postgres/index.js +33 -10
  15. package/dist/esm/adapters/postgres/migrations.js +8 -2
  16. package/dist/esm/adapters/postgres/session-store.js +42 -0
  17. package/dist/esm/client.js +27 -27
  18. package/dist/esm/domain/authorize.js +2 -2
  19. package/dist/esm/domain/callback.js +121 -7
  20. package/dist/esm/domain/client-auth.js +2 -2
  21. package/dist/esm/domain/crypto.js +14 -14
  22. package/dist/esm/domain/discovery.js +2 -2
  23. package/dist/esm/domain/dpop.js +4 -4
  24. package/dist/esm/domain/id-token.js +5 -5
  25. package/dist/esm/domain/jwt.js +4 -4
  26. package/dist/esm/domain/method-dispatch.js +27 -1
  27. package/dist/esm/domain/method-route.js +80 -1
  28. package/dist/esm/domain/par.js +2 -2
  29. package/dist/esm/domain/pkce.js +2 -2
  30. package/dist/esm/domain/revoke.js +2 -2
  31. package/dist/esm/domain/scim/discovery.js +206 -0
  32. package/dist/esm/domain/scim/filter.js +177 -0
  33. package/dist/esm/domain/scim/handle.js +338 -0
  34. package/dist/esm/domain/scim/patch.js +568 -0
  35. package/dist/esm/domain/scim/resource.js +256 -0
  36. package/dist/esm/domain/state-envelope.js +2 -2
  37. package/dist/esm/domain/token.js +5 -5
  38. package/dist/esm/error.js +8 -8
  39. package/dist/esm/http/cookies.js +19 -2
  40. package/dist/esm/http/errors.js +4 -4
  41. package/dist/esm/http/handlers/authorize.js +3 -19
  42. package/dist/esm/http/handlers/callback.js +7 -1
  43. package/dist/esm/http/handlers/metadata.js +2 -2
  44. package/dist/esm/http/handlers/method-route.js +47 -2
  45. package/dist/esm/http/handlers/revocation.js +2 -2
  46. package/dist/esm/http/handlers/scim.js +59 -0
  47. package/dist/esm/http/middleware/tenant.js +31 -6
  48. package/dist/esm/http/router.js +3 -0
  49. package/dist/esm/http/schemas/authorize.js +2 -2
  50. package/dist/esm/http/schemas/revocation.js +2 -2
  51. package/dist/esm/http/schemas/token.js +7 -7
  52. package/dist/esm/index.js +34 -32
  53. package/dist/esm/methods/oauth2-factory.js +2 -2
  54. package/dist/esm/methods/password-hash.js +2 -2
  55. package/dist/esm/methods/providers/index.js +30 -14
  56. package/dist/esm/methods/saml-sp/acs.js +232 -0
  57. package/dist/esm/methods/saml-sp/attributes.js +77 -0
  58. package/dist/esm/methods/saml-sp/authnrequest.js +63 -0
  59. package/dist/esm/methods/saml-sp/cache-provider.js +33 -0
  60. package/dist/esm/methods/saml-sp/cert-rotation.js +13 -0
  61. package/dist/esm/methods/saml-sp/factory.js +81 -0
  62. package/dist/esm/methods/saml-sp/index.js +7 -0
  63. package/dist/esm/methods/saml-sp/metadata.js +71 -0
  64. package/dist/esm/methods/saml-sp/method.js +29 -0
  65. package/dist/esm/methods/saml-sp/parse-idp-metadata.js +102 -0
  66. package/dist/esm/methods/saml-sp/saml-instance.js +59 -0
  67. package/dist/esm/methods/saml-sp/slo-initiate.js +84 -0
  68. package/dist/esm/methods/saml-sp/sls.js +154 -0
  69. package/dist/esm/methods/saml-sp/types.js +0 -0
  70. package/dist/esm/ports/scim-directory.js +0 -0
  71. package/dist/esm/types/error.js +5 -0
  72. package/dist/esm/types/result.js +3 -3
  73. package/dist/esm/types/scim.js +0 -0
  74. package/dist/esm/ui/forms.js +3 -3
  75. package/dist/esm/ui/index.js +8 -5
  76. package/dist/esm/ui/picker.js +2 -2
  77. package/dist/types/adapters/d1/migrations.d.ts.map +1 -1
  78. package/dist/types/adapters/d1/session-store.d.ts +3 -0
  79. package/dist/types/adapters/d1/session-store.d.ts.map +1 -1
  80. package/dist/types/adapters/durable-object/session-store.d.ts +3 -0
  81. package/dist/types/adapters/durable-object/session-store.d.ts.map +1 -1
  82. package/dist/types/adapters/dynamo/session-store.d.ts +3 -0
  83. package/dist/types/adapters/dynamo/session-store.d.ts.map +1 -1
  84. package/dist/types/adapters/memory/session-store.d.ts +3 -0
  85. package/dist/types/adapters/memory/session-store.d.ts.map +1 -1
  86. package/dist/types/adapters/postgres/migrations.d.ts +1 -1
  87. package/dist/types/adapters/postgres/migrations.d.ts.map +1 -1
  88. package/dist/types/adapters/postgres/session-store.d.ts +3 -0
  89. package/dist/types/adapters/postgres/session-store.d.ts.map +1 -1
  90. package/dist/types/domain/callback.d.ts +16 -1
  91. package/dist/types/domain/callback.d.ts.map +1 -1
  92. package/dist/types/domain/method-dispatch.d.ts.map +1 -1
  93. package/dist/types/domain/method-route.d.ts +57 -1
  94. package/dist/types/domain/method-route.d.ts.map +1 -1
  95. package/dist/types/domain/scim/discovery.d.ts +11 -0
  96. package/dist/types/domain/scim/discovery.d.ts.map +1 -0
  97. package/dist/types/domain/scim/filter.d.ts +51 -0
  98. package/dist/types/domain/scim/filter.d.ts.map +1 -0
  99. package/dist/types/domain/scim/handle.d.ts +35 -0
  100. package/dist/types/domain/scim/handle.d.ts.map +1 -0
  101. package/dist/types/domain/scim/patch.d.ts +73 -0
  102. package/dist/types/domain/scim/patch.d.ts.map +1 -0
  103. package/dist/types/domain/scim/resource.d.ts +56 -0
  104. package/dist/types/domain/scim/resource.d.ts.map +1 -0
  105. package/dist/types/http/context.d.ts +6 -1
  106. package/dist/types/http/context.d.ts.map +1 -1
  107. package/dist/types/http/cookies.d.ts +9 -1
  108. package/dist/types/http/cookies.d.ts.map +1 -1
  109. package/dist/types/http/handlers/callback.d.ts.map +1 -1
  110. package/dist/types/http/handlers/method-route.d.ts.map +1 -1
  111. package/dist/types/http/handlers/scim.d.ts +3 -0
  112. package/dist/types/http/handlers/scim.d.ts.map +1 -0
  113. package/dist/types/http/middleware/tenant.d.ts.map +1 -1
  114. package/dist/types/http/router.d.ts.map +1 -1
  115. package/dist/types/index.d.ts +3 -1
  116. package/dist/types/index.d.ts.map +1 -1
  117. package/dist/types/methods/saml-sp/acs.d.ts +4 -0
  118. package/dist/types/methods/saml-sp/acs.d.ts.map +1 -0
  119. package/dist/types/methods/saml-sp/attributes.d.ts +45 -0
  120. package/dist/types/methods/saml-sp/attributes.d.ts.map +1 -0
  121. package/dist/types/methods/saml-sp/authnrequest.d.ts +4 -0
  122. package/dist/types/methods/saml-sp/authnrequest.d.ts.map +1 -0
  123. package/dist/types/methods/saml-sp/cache-provider.d.ts +38 -0
  124. package/dist/types/methods/saml-sp/cache-provider.d.ts.map +1 -0
  125. package/dist/types/methods/saml-sp/cert-rotation.d.ts +23 -0
  126. package/dist/types/methods/saml-sp/cert-rotation.d.ts.map +1 -0
  127. package/dist/types/methods/saml-sp/factory.d.ts +920 -0
  128. package/dist/types/methods/saml-sp/factory.d.ts.map +1 -0
  129. package/dist/types/methods/saml-sp/index.d.ts +24 -0
  130. package/dist/types/methods/saml-sp/index.d.ts.map +1 -0
  131. package/dist/types/methods/saml-sp/metadata.d.ts +50 -0
  132. package/dist/types/methods/saml-sp/metadata.d.ts.map +1 -0
  133. package/dist/types/methods/saml-sp/method.d.ts +17 -0
  134. package/dist/types/methods/saml-sp/method.d.ts.map +1 -0
  135. package/dist/types/methods/saml-sp/parse-idp-metadata.d.ts +4 -0
  136. package/dist/types/methods/saml-sp/parse-idp-metadata.d.ts.map +1 -0
  137. package/dist/types/methods/saml-sp/saml-instance.d.ts +93 -0
  138. package/dist/types/methods/saml-sp/saml-instance.d.ts.map +1 -0
  139. package/dist/types/methods/saml-sp/slo-initiate.d.ts +4 -0
  140. package/dist/types/methods/saml-sp/slo-initiate.d.ts.map +1 -0
  141. package/dist/types/methods/saml-sp/sls.d.ts +4 -0
  142. package/dist/types/methods/saml-sp/sls.d.ts.map +1 -0
  143. package/dist/types/methods/saml-sp/types.d.ts +299 -0
  144. package/dist/types/methods/saml-sp/types.d.ts.map +1 -0
  145. package/dist/types/ports/audit-log.d.ts +18 -5
  146. package/dist/types/ports/audit-log.d.ts.map +1 -1
  147. package/dist/types/ports/scim-directory.d.ts +104 -0
  148. package/dist/types/ports/scim-directory.d.ts.map +1 -0
  149. package/dist/types/ports/session-store.d.ts +23 -0
  150. package/dist/types/ports/session-store.d.ts.map +1 -1
  151. package/dist/types/types/error.d.ts +5 -0
  152. package/dist/types/types/error.d.ts.map +1 -1
  153. package/dist/types/types/idp.d.ts +83 -0
  154. package/dist/types/types/idp.d.ts.map +1 -1
  155. package/dist/types/types/method.d.ts +109 -0
  156. package/dist/types/types/method.d.ts.map +1 -1
  157. package/dist/types/types/scim.d.ts +269 -0
  158. package/dist/types/types/scim.d.ts.map +1 -0
  159. package/dist/types/types/tenant.d.ts +10 -0
  160. package/dist/types/types/tenant.d.ts.map +1 -1
  161. package/package.json +9 -1
  162. package/src/adapters/d1/migrations.ts +5 -0
  163. package/src/adapters/d1/session-store.ts +68 -0
  164. package/src/adapters/durable-object/session-store.ts +61 -0
  165. package/src/adapters/dynamo/session-store.ts +63 -0
  166. package/src/adapters/memory/session-store.ts +39 -0
  167. package/src/adapters/postgres/migrations.ts +6 -0
  168. package/src/adapters/postgres/session-store.ts +69 -0
  169. package/src/domain/callback.ts +215 -7
  170. package/src/domain/method-dispatch.ts +53 -1
  171. package/src/domain/method-route.ts +190 -1
  172. package/src/domain/scim/discovery.ts +262 -0
  173. package/src/domain/scim/filter.ts +295 -0
  174. package/src/domain/scim/handle.ts +597 -0
  175. package/src/domain/scim/patch.ts +807 -0
  176. package/src/domain/scim/resource.ts +358 -0
  177. package/src/http/context.ts +9 -0
  178. package/src/http/cookies.ts +19 -1
  179. package/src/http/handlers/authorize.ts +2 -22
  180. package/src/http/handlers/callback.ts +9 -1
  181. package/src/http/handlers/method-route.ts +72 -2
  182. package/src/http/handlers/scim.ts +107 -0
  183. package/src/http/middleware/tenant.ts +47 -1
  184. package/src/http/router.ts +9 -0
  185. package/src/index.ts +23 -0
  186. package/src/methods/saml-sp/acs.ts +449 -0
  187. package/src/methods/saml-sp/attributes.ts +146 -0
  188. package/src/methods/saml-sp/authnrequest.ts +129 -0
  189. package/src/methods/saml-sp/cache-provider.ts +76 -0
  190. package/src/methods/saml-sp/cert-rotation.ts +34 -0
  191. package/src/methods/saml-sp/factory.ts +139 -0
  192. package/src/methods/saml-sp/index.ts +34 -0
  193. package/src/methods/saml-sp/metadata.ts +215 -0
  194. package/src/methods/saml-sp/method.ts +65 -0
  195. package/src/methods/saml-sp/parse-idp-metadata.ts +158 -0
  196. package/src/methods/saml-sp/saml-instance.ts +210 -0
  197. package/src/methods/saml-sp/slo-initiate.ts +180 -0
  198. package/src/methods/saml-sp/sls.ts +307 -0
  199. package/src/methods/saml-sp/types.ts +298 -0
  200. package/src/ports/CONSISTENCY.md +52 -24
  201. package/src/ports/audit-log.ts +18 -5
  202. package/src/ports/scim-directory.ts +166 -0
  203. package/src/ports/session-store.ts +24 -0
  204. package/src/types/error.ts +11 -0
  205. package/src/types/idp.ts +86 -0
  206. package/src/types/method.ts +110 -0
  207. package/src/types/scim.ts +280 -0
  208. package/src/types/tenant.ts +10 -0
@@ -0,0 +1,920 @@
1
+ /**
2
+ * SAML SP factory — `kind: "saml-sp"`.
3
+ *
4
+ * Parallels `oauth2Factory` / `oidcFactory`: a Zod `configSchema`
5
+ * validates the tenant-supplied `SamlSpConfig` blob (Zod 3.24+ is
6
+ * Standard Schema v1 conformant, so it satisfies
7
+ * `AuthMethodFactory.configSchema` directly), and `build` delegates to
8
+ * `buildSamlSpMethod`.
9
+ *
10
+ * No `@node-saml/*` import appears here — node-saml is reached only at
11
+ * request time inside the route handlers, so importing the factory
12
+ * type surface stays cheap and the public-API leak guard stays green.
13
+ */
14
+ import { z } from "zod";
15
+ import type { AuthMethodFactory } from "../../types/method";
16
+ import type { SamlSpConfig, SamlSpProperties, SamlSpState } from "./types";
17
+ declare const samlSpConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodObject<{
18
+ idp: z.ZodObject<{
19
+ entityId: z.ZodString;
20
+ ssoUrl: z.ZodString;
21
+ sloUrl: z.ZodOptional<z.ZodString>;
22
+ nameIdFormat: z.ZodOptional<z.ZodEnum<["persistent", "transient", "emailAddress", "unspecified"]>>;
23
+ signingCerts: z.ZodArray<z.ZodObject<{
24
+ pem: z.ZodString;
25
+ notBefore: z.ZodOptional<z.ZodNumber>;
26
+ notAfter: z.ZodOptional<z.ZodNumber>;
27
+ }, "strip", z.ZodTypeAny, {
28
+ pem: string;
29
+ notBefore?: number | undefined;
30
+ notAfter?: number | undefined;
31
+ }, {
32
+ pem: string;
33
+ notBefore?: number | undefined;
34
+ notAfter?: number | undefined;
35
+ }>, "many">;
36
+ }, "strip", z.ZodTypeAny, {
37
+ entityId: string;
38
+ ssoUrl: string;
39
+ signingCerts: {
40
+ pem: string;
41
+ notBefore?: number | undefined;
42
+ notAfter?: number | undefined;
43
+ }[];
44
+ nameIdFormat?: "persistent" | "transient" | "emailAddress" | "unspecified" | undefined;
45
+ sloUrl?: string | undefined;
46
+ }, {
47
+ entityId: string;
48
+ ssoUrl: string;
49
+ signingCerts: {
50
+ pem: string;
51
+ notBefore?: number | undefined;
52
+ notAfter?: number | undefined;
53
+ }[];
54
+ nameIdFormat?: "persistent" | "transient" | "emailAddress" | "unspecified" | undefined;
55
+ sloUrl?: string | undefined;
56
+ }>;
57
+ attributeMapping: z.ZodObject<{
58
+ subject: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
59
+ source: z.ZodLiteral<"nameId">;
60
+ }, "strip", z.ZodTypeAny, {
61
+ source: "nameId";
62
+ }, {
63
+ source: "nameId";
64
+ }>, z.ZodObject<{
65
+ source: z.ZodLiteral<"attribute">;
66
+ name: z.ZodString;
67
+ format: z.ZodOptional<z.ZodString>;
68
+ }, "strip", z.ZodTypeAny, {
69
+ name: string;
70
+ source: "attribute";
71
+ format?: string | undefined;
72
+ }, {
73
+ name: string;
74
+ source: "attribute";
75
+ format?: string | undefined;
76
+ }>]>>;
77
+ email: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
78
+ source: z.ZodLiteral<"nameId">;
79
+ }, "strip", z.ZodTypeAny, {
80
+ source: "nameId";
81
+ }, {
82
+ source: "nameId";
83
+ }>, z.ZodObject<{
84
+ source: z.ZodLiteral<"attribute">;
85
+ name: z.ZodString;
86
+ format: z.ZodOptional<z.ZodString>;
87
+ }, "strip", z.ZodTypeAny, {
88
+ name: string;
89
+ source: "attribute";
90
+ format?: string | undefined;
91
+ }, {
92
+ name: string;
93
+ source: "attribute";
94
+ format?: string | undefined;
95
+ }>]>>;
96
+ emailVerified: z.ZodOptional<z.ZodObject<{
97
+ source: z.ZodLiteral<"literal">;
98
+ value: z.ZodBoolean;
99
+ }, "strip", z.ZodTypeAny, {
100
+ value: boolean;
101
+ source: "literal";
102
+ }, {
103
+ value: boolean;
104
+ source: "literal";
105
+ }>>;
106
+ name: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
107
+ source: z.ZodLiteral<"nameId">;
108
+ }, "strip", z.ZodTypeAny, {
109
+ source: "nameId";
110
+ }, {
111
+ source: "nameId";
112
+ }>, z.ZodObject<{
113
+ source: z.ZodLiteral<"attribute">;
114
+ name: z.ZodString;
115
+ format: z.ZodOptional<z.ZodString>;
116
+ }, "strip", z.ZodTypeAny, {
117
+ name: string;
118
+ source: "attribute";
119
+ format?: string | undefined;
120
+ }, {
121
+ name: string;
122
+ source: "attribute";
123
+ format?: string | undefined;
124
+ }>]>>;
125
+ groups: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
126
+ source: z.ZodLiteral<"nameId">;
127
+ }, "strip", z.ZodTypeAny, {
128
+ source: "nameId";
129
+ }, {
130
+ source: "nameId";
131
+ }>, z.ZodObject<{
132
+ source: z.ZodLiteral<"attribute">;
133
+ name: z.ZodString;
134
+ format: z.ZodOptional<z.ZodString>;
135
+ }, "strip", z.ZodTypeAny, {
136
+ name: string;
137
+ source: "attribute";
138
+ format?: string | undefined;
139
+ }, {
140
+ name: string;
141
+ source: "attribute";
142
+ format?: string | undefined;
143
+ }>]>>;
144
+ custom: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodObject<{
145
+ source: z.ZodLiteral<"nameId">;
146
+ }, "strip", z.ZodTypeAny, {
147
+ source: "nameId";
148
+ }, {
149
+ source: "nameId";
150
+ }>, z.ZodObject<{
151
+ source: z.ZodLiteral<"attribute">;
152
+ name: z.ZodString;
153
+ format: z.ZodOptional<z.ZodString>;
154
+ }, "strip", z.ZodTypeAny, {
155
+ name: string;
156
+ source: "attribute";
157
+ format?: string | undefined;
158
+ }, {
159
+ name: string;
160
+ source: "attribute";
161
+ format?: string | undefined;
162
+ }>]>>>;
163
+ }, "strip", z.ZodTypeAny, {
164
+ subject?: {
165
+ source: "nameId";
166
+ } | {
167
+ name: string;
168
+ source: "attribute";
169
+ format?: string | undefined;
170
+ } | undefined;
171
+ custom?: Record<string, {
172
+ source: "nameId";
173
+ } | {
174
+ name: string;
175
+ source: "attribute";
176
+ format?: string | undefined;
177
+ }> | undefined;
178
+ name?: {
179
+ source: "nameId";
180
+ } | {
181
+ name: string;
182
+ source: "attribute";
183
+ format?: string | undefined;
184
+ } | undefined;
185
+ email?: {
186
+ source: "nameId";
187
+ } | {
188
+ name: string;
189
+ source: "attribute";
190
+ format?: string | undefined;
191
+ } | undefined;
192
+ groups?: {
193
+ source: "nameId";
194
+ } | {
195
+ name: string;
196
+ source: "attribute";
197
+ format?: string | undefined;
198
+ } | undefined;
199
+ emailVerified?: {
200
+ value: boolean;
201
+ source: "literal";
202
+ } | undefined;
203
+ }, {
204
+ subject?: {
205
+ source: "nameId";
206
+ } | {
207
+ name: string;
208
+ source: "attribute";
209
+ format?: string | undefined;
210
+ } | undefined;
211
+ custom?: Record<string, {
212
+ source: "nameId";
213
+ } | {
214
+ name: string;
215
+ source: "attribute";
216
+ format?: string | undefined;
217
+ }> | undefined;
218
+ name?: {
219
+ source: "nameId";
220
+ } | {
221
+ name: string;
222
+ source: "attribute";
223
+ format?: string | undefined;
224
+ } | undefined;
225
+ email?: {
226
+ source: "nameId";
227
+ } | {
228
+ name: string;
229
+ source: "attribute";
230
+ format?: string | undefined;
231
+ } | undefined;
232
+ groups?: {
233
+ source: "nameId";
234
+ } | {
235
+ name: string;
236
+ source: "attribute";
237
+ format?: string | undefined;
238
+ } | undefined;
239
+ emailVerified?: {
240
+ value: boolean;
241
+ source: "literal";
242
+ } | undefined;
243
+ }>;
244
+ signAuthnRequest: z.ZodOptional<z.ZodBoolean>;
245
+ signingKey: z.ZodOptional<z.ZodObject<{
246
+ privateKeyPem: z.ZodString;
247
+ certPem: z.ZodString;
248
+ }, "strip", z.ZodTypeAny, {
249
+ privateKeyPem: string;
250
+ certPem: string;
251
+ }, {
252
+ privateKeyPem: string;
253
+ certPem: string;
254
+ }>>;
255
+ allowEncryptedAssertions: z.ZodOptional<z.ZodBoolean>;
256
+ decryptionKey: z.ZodOptional<z.ZodObject<{
257
+ privateKeyPem: z.ZodString;
258
+ certPem: z.ZodString;
259
+ }, "strip", z.ZodTypeAny, {
260
+ privateKeyPem: string;
261
+ certPem: string;
262
+ }, {
263
+ privateKeyPem: string;
264
+ certPem: string;
265
+ }>>;
266
+ idpInitiated: z.ZodOptional<z.ZodObject<{
267
+ defaultClientId: z.ZodString;
268
+ defaultRedirectUri: z.ZodString;
269
+ defaultScopes: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
270
+ }, "strip", z.ZodTypeAny, {
271
+ defaultClientId: string;
272
+ defaultRedirectUri: string;
273
+ defaultScopes?: string[] | undefined;
274
+ }, {
275
+ defaultClientId: string;
276
+ defaultRedirectUri: string;
277
+ defaultScopes?: string[] | undefined;
278
+ }>>;
279
+ clockSkewSeconds: z.ZodOptional<z.ZodNumber>;
280
+ spEntityId: z.ZodOptional<z.ZodString>;
281
+ forceAuthn: z.ZodOptional<z.ZodBoolean>;
282
+ requestedAuthnContext: z.ZodOptional<z.ZodObject<{
283
+ classRefs: z.ZodArray<z.ZodString, "many">;
284
+ comparison: z.ZodOptional<z.ZodEnum<["exact", "minimum", "maximum", "better"]>>;
285
+ }, "strip", z.ZodTypeAny, {
286
+ classRefs: string[];
287
+ comparison?: "minimum" | "exact" | "maximum" | "better" | undefined;
288
+ }, {
289
+ classRefs: string[];
290
+ comparison?: "minimum" | "exact" | "maximum" | "better" | undefined;
291
+ }>>;
292
+ requireSignedAssertion: z.ZodOptional<z.ZodBoolean>;
293
+ requireSignedResponse: z.ZodOptional<z.ZodBoolean>;
294
+ }, "strip", z.ZodTypeAny, {
295
+ idp: {
296
+ entityId: string;
297
+ ssoUrl: string;
298
+ signingCerts: {
299
+ pem: string;
300
+ notBefore?: number | undefined;
301
+ notAfter?: number | undefined;
302
+ }[];
303
+ nameIdFormat?: "persistent" | "transient" | "emailAddress" | "unspecified" | undefined;
304
+ sloUrl?: string | undefined;
305
+ };
306
+ attributeMapping: {
307
+ subject?: {
308
+ source: "nameId";
309
+ } | {
310
+ name: string;
311
+ source: "attribute";
312
+ format?: string | undefined;
313
+ } | undefined;
314
+ custom?: Record<string, {
315
+ source: "nameId";
316
+ } | {
317
+ name: string;
318
+ source: "attribute";
319
+ format?: string | undefined;
320
+ }> | undefined;
321
+ name?: {
322
+ source: "nameId";
323
+ } | {
324
+ name: string;
325
+ source: "attribute";
326
+ format?: string | undefined;
327
+ } | undefined;
328
+ email?: {
329
+ source: "nameId";
330
+ } | {
331
+ name: string;
332
+ source: "attribute";
333
+ format?: string | undefined;
334
+ } | undefined;
335
+ groups?: {
336
+ source: "nameId";
337
+ } | {
338
+ name: string;
339
+ source: "attribute";
340
+ format?: string | undefined;
341
+ } | undefined;
342
+ emailVerified?: {
343
+ value: boolean;
344
+ source: "literal";
345
+ } | undefined;
346
+ };
347
+ forceAuthn?: boolean | undefined;
348
+ spEntityId?: string | undefined;
349
+ idpInitiated?: {
350
+ defaultClientId: string;
351
+ defaultRedirectUri: string;
352
+ defaultScopes?: string[] | undefined;
353
+ } | undefined;
354
+ signAuthnRequest?: boolean | undefined;
355
+ signingKey?: {
356
+ privateKeyPem: string;
357
+ certPem: string;
358
+ } | undefined;
359
+ allowEncryptedAssertions?: boolean | undefined;
360
+ decryptionKey?: {
361
+ privateKeyPem: string;
362
+ certPem: string;
363
+ } | undefined;
364
+ clockSkewSeconds?: number | undefined;
365
+ requestedAuthnContext?: {
366
+ classRefs: string[];
367
+ comparison?: "minimum" | "exact" | "maximum" | "better" | undefined;
368
+ } | undefined;
369
+ requireSignedAssertion?: boolean | undefined;
370
+ requireSignedResponse?: boolean | undefined;
371
+ }, {
372
+ idp: {
373
+ entityId: string;
374
+ ssoUrl: string;
375
+ signingCerts: {
376
+ pem: string;
377
+ notBefore?: number | undefined;
378
+ notAfter?: number | undefined;
379
+ }[];
380
+ nameIdFormat?: "persistent" | "transient" | "emailAddress" | "unspecified" | undefined;
381
+ sloUrl?: string | undefined;
382
+ };
383
+ attributeMapping: {
384
+ subject?: {
385
+ source: "nameId";
386
+ } | {
387
+ name: string;
388
+ source: "attribute";
389
+ format?: string | undefined;
390
+ } | undefined;
391
+ custom?: Record<string, {
392
+ source: "nameId";
393
+ } | {
394
+ name: string;
395
+ source: "attribute";
396
+ format?: string | undefined;
397
+ }> | undefined;
398
+ name?: {
399
+ source: "nameId";
400
+ } | {
401
+ name: string;
402
+ source: "attribute";
403
+ format?: string | undefined;
404
+ } | undefined;
405
+ email?: {
406
+ source: "nameId";
407
+ } | {
408
+ name: string;
409
+ source: "attribute";
410
+ format?: string | undefined;
411
+ } | undefined;
412
+ groups?: {
413
+ source: "nameId";
414
+ } | {
415
+ name: string;
416
+ source: "attribute";
417
+ format?: string | undefined;
418
+ } | undefined;
419
+ emailVerified?: {
420
+ value: boolean;
421
+ source: "literal";
422
+ } | undefined;
423
+ };
424
+ forceAuthn?: boolean | undefined;
425
+ spEntityId?: string | undefined;
426
+ idpInitiated?: {
427
+ defaultClientId: string;
428
+ defaultRedirectUri: string;
429
+ defaultScopes?: string[] | undefined;
430
+ } | undefined;
431
+ signAuthnRequest?: boolean | undefined;
432
+ signingKey?: {
433
+ privateKeyPem: string;
434
+ certPem: string;
435
+ } | undefined;
436
+ allowEncryptedAssertions?: boolean | undefined;
437
+ decryptionKey?: {
438
+ privateKeyPem: string;
439
+ certPem: string;
440
+ } | undefined;
441
+ clockSkewSeconds?: number | undefined;
442
+ requestedAuthnContext?: {
443
+ classRefs: string[];
444
+ comparison?: "minimum" | "exact" | "maximum" | "better" | undefined;
445
+ } | undefined;
446
+ requireSignedAssertion?: boolean | undefined;
447
+ requireSignedResponse?: boolean | undefined;
448
+ }>, {
449
+ idp: {
450
+ entityId: string;
451
+ ssoUrl: string;
452
+ signingCerts: {
453
+ pem: string;
454
+ notBefore?: number | undefined;
455
+ notAfter?: number | undefined;
456
+ }[];
457
+ nameIdFormat?: "persistent" | "transient" | "emailAddress" | "unspecified" | undefined;
458
+ sloUrl?: string | undefined;
459
+ };
460
+ attributeMapping: {
461
+ subject?: {
462
+ source: "nameId";
463
+ } | {
464
+ name: string;
465
+ source: "attribute";
466
+ format?: string | undefined;
467
+ } | undefined;
468
+ custom?: Record<string, {
469
+ source: "nameId";
470
+ } | {
471
+ name: string;
472
+ source: "attribute";
473
+ format?: string | undefined;
474
+ }> | undefined;
475
+ name?: {
476
+ source: "nameId";
477
+ } | {
478
+ name: string;
479
+ source: "attribute";
480
+ format?: string | undefined;
481
+ } | undefined;
482
+ email?: {
483
+ source: "nameId";
484
+ } | {
485
+ name: string;
486
+ source: "attribute";
487
+ format?: string | undefined;
488
+ } | undefined;
489
+ groups?: {
490
+ source: "nameId";
491
+ } | {
492
+ name: string;
493
+ source: "attribute";
494
+ format?: string | undefined;
495
+ } | undefined;
496
+ emailVerified?: {
497
+ value: boolean;
498
+ source: "literal";
499
+ } | undefined;
500
+ };
501
+ forceAuthn?: boolean | undefined;
502
+ spEntityId?: string | undefined;
503
+ idpInitiated?: {
504
+ defaultClientId: string;
505
+ defaultRedirectUri: string;
506
+ defaultScopes?: string[] | undefined;
507
+ } | undefined;
508
+ signAuthnRequest?: boolean | undefined;
509
+ signingKey?: {
510
+ privateKeyPem: string;
511
+ certPem: string;
512
+ } | undefined;
513
+ allowEncryptedAssertions?: boolean | undefined;
514
+ decryptionKey?: {
515
+ privateKeyPem: string;
516
+ certPem: string;
517
+ } | undefined;
518
+ clockSkewSeconds?: number | undefined;
519
+ requestedAuthnContext?: {
520
+ classRefs: string[];
521
+ comparison?: "minimum" | "exact" | "maximum" | "better" | undefined;
522
+ } | undefined;
523
+ requireSignedAssertion?: boolean | undefined;
524
+ requireSignedResponse?: boolean | undefined;
525
+ }, {
526
+ idp: {
527
+ entityId: string;
528
+ ssoUrl: string;
529
+ signingCerts: {
530
+ pem: string;
531
+ notBefore?: number | undefined;
532
+ notAfter?: number | undefined;
533
+ }[];
534
+ nameIdFormat?: "persistent" | "transient" | "emailAddress" | "unspecified" | undefined;
535
+ sloUrl?: string | undefined;
536
+ };
537
+ attributeMapping: {
538
+ subject?: {
539
+ source: "nameId";
540
+ } | {
541
+ name: string;
542
+ source: "attribute";
543
+ format?: string | undefined;
544
+ } | undefined;
545
+ custom?: Record<string, {
546
+ source: "nameId";
547
+ } | {
548
+ name: string;
549
+ source: "attribute";
550
+ format?: string | undefined;
551
+ }> | undefined;
552
+ name?: {
553
+ source: "nameId";
554
+ } | {
555
+ name: string;
556
+ source: "attribute";
557
+ format?: string | undefined;
558
+ } | undefined;
559
+ email?: {
560
+ source: "nameId";
561
+ } | {
562
+ name: string;
563
+ source: "attribute";
564
+ format?: string | undefined;
565
+ } | undefined;
566
+ groups?: {
567
+ source: "nameId";
568
+ } | {
569
+ name: string;
570
+ source: "attribute";
571
+ format?: string | undefined;
572
+ } | undefined;
573
+ emailVerified?: {
574
+ value: boolean;
575
+ source: "literal";
576
+ } | undefined;
577
+ };
578
+ forceAuthn?: boolean | undefined;
579
+ spEntityId?: string | undefined;
580
+ idpInitiated?: {
581
+ defaultClientId: string;
582
+ defaultRedirectUri: string;
583
+ defaultScopes?: string[] | undefined;
584
+ } | undefined;
585
+ signAuthnRequest?: boolean | undefined;
586
+ signingKey?: {
587
+ privateKeyPem: string;
588
+ certPem: string;
589
+ } | undefined;
590
+ allowEncryptedAssertions?: boolean | undefined;
591
+ decryptionKey?: {
592
+ privateKeyPem: string;
593
+ certPem: string;
594
+ } | undefined;
595
+ clockSkewSeconds?: number | undefined;
596
+ requestedAuthnContext?: {
597
+ classRefs: string[];
598
+ comparison?: "minimum" | "exact" | "maximum" | "better" | undefined;
599
+ } | undefined;
600
+ requireSignedAssertion?: boolean | undefined;
601
+ requireSignedResponse?: boolean | undefined;
602
+ }>, {
603
+ idp: {
604
+ entityId: string;
605
+ ssoUrl: string;
606
+ signingCerts: {
607
+ pem: string;
608
+ notBefore?: number | undefined;
609
+ notAfter?: number | undefined;
610
+ }[];
611
+ nameIdFormat?: "persistent" | "transient" | "emailAddress" | "unspecified" | undefined;
612
+ sloUrl?: string | undefined;
613
+ };
614
+ attributeMapping: {
615
+ subject?: {
616
+ source: "nameId";
617
+ } | {
618
+ name: string;
619
+ source: "attribute";
620
+ format?: string | undefined;
621
+ } | undefined;
622
+ custom?: Record<string, {
623
+ source: "nameId";
624
+ } | {
625
+ name: string;
626
+ source: "attribute";
627
+ format?: string | undefined;
628
+ }> | undefined;
629
+ name?: {
630
+ source: "nameId";
631
+ } | {
632
+ name: string;
633
+ source: "attribute";
634
+ format?: string | undefined;
635
+ } | undefined;
636
+ email?: {
637
+ source: "nameId";
638
+ } | {
639
+ name: string;
640
+ source: "attribute";
641
+ format?: string | undefined;
642
+ } | undefined;
643
+ groups?: {
644
+ source: "nameId";
645
+ } | {
646
+ name: string;
647
+ source: "attribute";
648
+ format?: string | undefined;
649
+ } | undefined;
650
+ emailVerified?: {
651
+ value: boolean;
652
+ source: "literal";
653
+ } | undefined;
654
+ };
655
+ forceAuthn?: boolean | undefined;
656
+ spEntityId?: string | undefined;
657
+ idpInitiated?: {
658
+ defaultClientId: string;
659
+ defaultRedirectUri: string;
660
+ defaultScopes?: string[] | undefined;
661
+ } | undefined;
662
+ signAuthnRequest?: boolean | undefined;
663
+ signingKey?: {
664
+ privateKeyPem: string;
665
+ certPem: string;
666
+ } | undefined;
667
+ allowEncryptedAssertions?: boolean | undefined;
668
+ decryptionKey?: {
669
+ privateKeyPem: string;
670
+ certPem: string;
671
+ } | undefined;
672
+ clockSkewSeconds?: number | undefined;
673
+ requestedAuthnContext?: {
674
+ classRefs: string[];
675
+ comparison?: "minimum" | "exact" | "maximum" | "better" | undefined;
676
+ } | undefined;
677
+ requireSignedAssertion?: boolean | undefined;
678
+ requireSignedResponse?: boolean | undefined;
679
+ }, {
680
+ idp: {
681
+ entityId: string;
682
+ ssoUrl: string;
683
+ signingCerts: {
684
+ pem: string;
685
+ notBefore?: number | undefined;
686
+ notAfter?: number | undefined;
687
+ }[];
688
+ nameIdFormat?: "persistent" | "transient" | "emailAddress" | "unspecified" | undefined;
689
+ sloUrl?: string | undefined;
690
+ };
691
+ attributeMapping: {
692
+ subject?: {
693
+ source: "nameId";
694
+ } | {
695
+ name: string;
696
+ source: "attribute";
697
+ format?: string | undefined;
698
+ } | undefined;
699
+ custom?: Record<string, {
700
+ source: "nameId";
701
+ } | {
702
+ name: string;
703
+ source: "attribute";
704
+ format?: string | undefined;
705
+ }> | undefined;
706
+ name?: {
707
+ source: "nameId";
708
+ } | {
709
+ name: string;
710
+ source: "attribute";
711
+ format?: string | undefined;
712
+ } | undefined;
713
+ email?: {
714
+ source: "nameId";
715
+ } | {
716
+ name: string;
717
+ source: "attribute";
718
+ format?: string | undefined;
719
+ } | undefined;
720
+ groups?: {
721
+ source: "nameId";
722
+ } | {
723
+ name: string;
724
+ source: "attribute";
725
+ format?: string | undefined;
726
+ } | undefined;
727
+ emailVerified?: {
728
+ value: boolean;
729
+ source: "literal";
730
+ } | undefined;
731
+ };
732
+ forceAuthn?: boolean | undefined;
733
+ spEntityId?: string | undefined;
734
+ idpInitiated?: {
735
+ defaultClientId: string;
736
+ defaultRedirectUri: string;
737
+ defaultScopes?: string[] | undefined;
738
+ } | undefined;
739
+ signAuthnRequest?: boolean | undefined;
740
+ signingKey?: {
741
+ privateKeyPem: string;
742
+ certPem: string;
743
+ } | undefined;
744
+ allowEncryptedAssertions?: boolean | undefined;
745
+ decryptionKey?: {
746
+ privateKeyPem: string;
747
+ certPem: string;
748
+ } | undefined;
749
+ clockSkewSeconds?: number | undefined;
750
+ requestedAuthnContext?: {
751
+ classRefs: string[];
752
+ comparison?: "minimum" | "exact" | "maximum" | "better" | undefined;
753
+ } | undefined;
754
+ requireSignedAssertion?: boolean | undefined;
755
+ requireSignedResponse?: boolean | undefined;
756
+ }>, {
757
+ idp: {
758
+ entityId: string;
759
+ ssoUrl: string;
760
+ signingCerts: {
761
+ pem: string;
762
+ notBefore?: number | undefined;
763
+ notAfter?: number | undefined;
764
+ }[];
765
+ nameIdFormat?: "persistent" | "transient" | "emailAddress" | "unspecified" | undefined;
766
+ sloUrl?: string | undefined;
767
+ };
768
+ attributeMapping: {
769
+ subject?: {
770
+ source: "nameId";
771
+ } | {
772
+ name: string;
773
+ source: "attribute";
774
+ format?: string | undefined;
775
+ } | undefined;
776
+ custom?: Record<string, {
777
+ source: "nameId";
778
+ } | {
779
+ name: string;
780
+ source: "attribute";
781
+ format?: string | undefined;
782
+ }> | undefined;
783
+ name?: {
784
+ source: "nameId";
785
+ } | {
786
+ name: string;
787
+ source: "attribute";
788
+ format?: string | undefined;
789
+ } | undefined;
790
+ email?: {
791
+ source: "nameId";
792
+ } | {
793
+ name: string;
794
+ source: "attribute";
795
+ format?: string | undefined;
796
+ } | undefined;
797
+ groups?: {
798
+ source: "nameId";
799
+ } | {
800
+ name: string;
801
+ source: "attribute";
802
+ format?: string | undefined;
803
+ } | undefined;
804
+ emailVerified?: {
805
+ value: boolean;
806
+ source: "literal";
807
+ } | undefined;
808
+ };
809
+ forceAuthn?: boolean | undefined;
810
+ spEntityId?: string | undefined;
811
+ idpInitiated?: {
812
+ defaultClientId: string;
813
+ defaultRedirectUri: string;
814
+ defaultScopes?: string[] | undefined;
815
+ } | undefined;
816
+ signAuthnRequest?: boolean | undefined;
817
+ signingKey?: {
818
+ privateKeyPem: string;
819
+ certPem: string;
820
+ } | undefined;
821
+ allowEncryptedAssertions?: boolean | undefined;
822
+ decryptionKey?: {
823
+ privateKeyPem: string;
824
+ certPem: string;
825
+ } | undefined;
826
+ clockSkewSeconds?: number | undefined;
827
+ requestedAuthnContext?: {
828
+ classRefs: string[];
829
+ comparison?: "minimum" | "exact" | "maximum" | "better" | undefined;
830
+ } | undefined;
831
+ requireSignedAssertion?: boolean | undefined;
832
+ requireSignedResponse?: boolean | undefined;
833
+ }, {
834
+ idp: {
835
+ entityId: string;
836
+ ssoUrl: string;
837
+ signingCerts: {
838
+ pem: string;
839
+ notBefore?: number | undefined;
840
+ notAfter?: number | undefined;
841
+ }[];
842
+ nameIdFormat?: "persistent" | "transient" | "emailAddress" | "unspecified" | undefined;
843
+ sloUrl?: string | undefined;
844
+ };
845
+ attributeMapping: {
846
+ subject?: {
847
+ source: "nameId";
848
+ } | {
849
+ name: string;
850
+ source: "attribute";
851
+ format?: string | undefined;
852
+ } | undefined;
853
+ custom?: Record<string, {
854
+ source: "nameId";
855
+ } | {
856
+ name: string;
857
+ source: "attribute";
858
+ format?: string | undefined;
859
+ }> | undefined;
860
+ name?: {
861
+ source: "nameId";
862
+ } | {
863
+ name: string;
864
+ source: "attribute";
865
+ format?: string | undefined;
866
+ } | undefined;
867
+ email?: {
868
+ source: "nameId";
869
+ } | {
870
+ name: string;
871
+ source: "attribute";
872
+ format?: string | undefined;
873
+ } | undefined;
874
+ groups?: {
875
+ source: "nameId";
876
+ } | {
877
+ name: string;
878
+ source: "attribute";
879
+ format?: string | undefined;
880
+ } | undefined;
881
+ emailVerified?: {
882
+ value: boolean;
883
+ source: "literal";
884
+ } | undefined;
885
+ };
886
+ forceAuthn?: boolean | undefined;
887
+ spEntityId?: string | undefined;
888
+ idpInitiated?: {
889
+ defaultClientId: string;
890
+ defaultRedirectUri: string;
891
+ defaultScopes?: string[] | undefined;
892
+ } | undefined;
893
+ signAuthnRequest?: boolean | undefined;
894
+ signingKey?: {
895
+ privateKeyPem: string;
896
+ certPem: string;
897
+ } | undefined;
898
+ allowEncryptedAssertions?: boolean | undefined;
899
+ decryptionKey?: {
900
+ privateKeyPem: string;
901
+ certPem: string;
902
+ } | undefined;
903
+ clockSkewSeconds?: number | undefined;
904
+ requestedAuthnContext?: {
905
+ classRefs: string[];
906
+ comparison?: "minimum" | "exact" | "maximum" | "better" | undefined;
907
+ } | undefined;
908
+ requireSignedAssertion?: boolean | undefined;
909
+ requireSignedResponse?: boolean | undefined;
910
+ }>;
911
+ export type SamlSpFactoryConfig = z.infer<typeof samlSpConfigSchema>;
912
+ /**
913
+ * Generic SAML 2.0 Service Provider factory.
914
+ *
915
+ * `kind: "saml-sp"`. Use a distinct `MethodConfig.id` per upstream IdP
916
+ * to register multiple SAML connections against a single tenant.
917
+ */
918
+ export declare const samlSpFactory: AuthMethodFactory<SamlSpProperties, SamlSpState, SamlSpConfig>;
919
+ export {};
920
+ //# sourceMappingURL=factory.d.ts.map