@boxyhq/saml-jackson 1.33.0 → 1.33.1-beta.1

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 (288) hide show
  1. package/dist/controller/oauth/oidc-client.d.ts +3 -3
  2. package/dist/controller/oauth/oidc-client.js +2 -1
  3. package/dist/controller/oauth/oidc-client.js.map +1 -1
  4. package/dist/controller/oauth/oidc-issuer.d.ts +2 -0
  5. package/dist/controller/oauth/oidc-issuer.js +25 -0
  6. package/dist/controller/oauth/oidc-issuer.js.map +1 -0
  7. package/dist/controller/oauth.js +36 -35
  8. package/dist/controller/oauth.js.map +1 -1
  9. package/dist/controller/sso-handler.js +1 -1
  10. package/dist/controller/sso-handler.js.map +1 -1
  11. package/dist/controller/utils.d.ts +5 -3
  12. package/dist/controller/utils.js +10 -2
  13. package/dist/controller/utils.js.map +1 -1
  14. package/dist/src/controller/admin.d.ts +27 -0
  15. package/dist/src/controller/admin.js +60 -0
  16. package/dist/src/controller/admin.js.map +1 -0
  17. package/dist/src/controller/analytics.d.ts +16 -0
  18. package/dist/src/controller/analytics.js +79 -0
  19. package/dist/src/controller/analytics.js.map +1 -0
  20. package/dist/src/controller/api.d.ts +557 -0
  21. package/dist/src/controller/api.js +806 -0
  22. package/dist/src/controller/api.js.map +1 -0
  23. package/dist/src/controller/connection/oidc.d.ts +7 -0
  24. package/dist/src/controller/connection/oidc.js +181 -0
  25. package/dist/src/controller/connection/oidc.js.map +1 -0
  26. package/dist/src/controller/connection/saml.d.ts +7 -0
  27. package/dist/src/controller/connection/saml.js +250 -0
  28. package/dist/src/controller/connection/saml.js.map +1 -0
  29. package/dist/src/controller/error.d.ts +10 -0
  30. package/dist/src/controller/error.js +13 -0
  31. package/dist/src/controller/error.js.map +1 -0
  32. package/dist/src/controller/health-check.d.ts +11 -0
  33. package/dist/src/controller/health-check.js +51 -0
  34. package/dist/src/controller/health-check.js.map +1 -0
  35. package/dist/src/controller/logout.d.ts +18 -0
  36. package/dist/src/controller/logout.js +132 -0
  37. package/dist/src/controller/logout.js.map +1 -0
  38. package/dist/src/controller/oauth/allowed.d.ts +1 -0
  39. package/dist/src/controller/oauth/allowed.js +30 -0
  40. package/dist/src/controller/oauth/allowed.js.map +1 -0
  41. package/dist/src/controller/oauth/code-verifier.d.ts +1 -0
  42. package/dist/src/controller/oauth/code-verifier.js +8 -0
  43. package/dist/src/controller/oauth/code-verifier.js.map +1 -0
  44. package/dist/src/controller/oauth/oidc-client.d.ts +12 -0
  45. package/dist/src/controller/oauth/oidc-client.js +89 -0
  46. package/dist/src/controller/oauth/oidc-client.js.map +1 -0
  47. package/dist/src/controller/oauth/redirect.d.ts +1 -0
  48. package/dist/src/controller/oauth/redirect.js +13 -0
  49. package/dist/src/controller/oauth/redirect.js.map +1 -0
  50. package/dist/src/controller/oauth.d.ts +142 -0
  51. package/dist/src/controller/oauth.js +1112 -0
  52. package/dist/src/controller/oauth.js.map +1 -0
  53. package/dist/src/controller/oidc-discovery.d.ts +22 -0
  54. package/dist/src/controller/oidc-discovery.js +47 -0
  55. package/dist/src/controller/oidc-discovery.js.map +1 -0
  56. package/dist/src/controller/setup-link.d.ts +307 -0
  57. package/dist/src/controller/setup-link.js +462 -0
  58. package/dist/src/controller/setup-link.js.map +1 -0
  59. package/dist/src/controller/sp-config.d.ts +22 -0
  60. package/dist/src/controller/sp-config.js +89 -0
  61. package/dist/src/controller/sp-config.js.map +1 -0
  62. package/dist/src/controller/sso-handler.d.ts +66 -0
  63. package/dist/src/controller/sso-handler.js +306 -0
  64. package/dist/src/controller/sso-handler.js.map +1 -0
  65. package/dist/src/controller/utils.d.ts +84 -0
  66. package/dist/src/controller/utils.js +328 -0
  67. package/dist/src/controller/utils.js.map +1 -0
  68. package/dist/src/cron/lock.d.ts +18 -0
  69. package/dist/src/cron/lock.js +98 -0
  70. package/dist/src/cron/lock.js.map +1 -0
  71. package/dist/src/db/db.d.ts +5 -0
  72. package/dist/src/db/db.js +178 -0
  73. package/dist/src/db/db.js.map +1 -0
  74. package/dist/src/db/defaultDb.d.ts +2 -0
  75. package/dist/src/db/defaultDb.js +18 -0
  76. package/dist/src/db/defaultDb.js.map +1 -0
  77. package/dist/src/db/dynamoDb.d.ts +19 -0
  78. package/dist/src/db/dynamoDb.js +320 -0
  79. package/dist/src/db/dynamoDb.js.map +1 -0
  80. package/dist/src/db/encrypter.d.ts +3 -0
  81. package/dist/src/db/encrypter.js +22 -0
  82. package/dist/src/db/encrypter.js.map +1 -0
  83. package/dist/src/db/mem.d.ts +23 -0
  84. package/dist/src/db/mem.js +186 -0
  85. package/dist/src/db/mem.js.map +1 -0
  86. package/dist/src/db/mongo.d.ts +22 -0
  87. package/dist/src/db/mongo.js +177 -0
  88. package/dist/src/db/mongo.js.map +1 -0
  89. package/dist/src/db/planetscale/entity/JacksonIndex.d.ts +5 -0
  90. package/dist/src/db/planetscale/entity/JacksonIndex.js +32 -0
  91. package/dist/src/db/planetscale/entity/JacksonIndex.js.map +1 -0
  92. package/dist/src/db/planetscale/entity/JacksonStore.d.ts +9 -0
  93. package/dist/src/db/planetscale/entity/JacksonStore.js +63 -0
  94. package/dist/src/db/planetscale/entity/JacksonStore.js.map +1 -0
  95. package/dist/src/db/planetscale/entity/JacksonTTL.d.ts +4 -0
  96. package/dist/src/db/planetscale/entity/JacksonTTL.js +27 -0
  97. package/dist/src/db/planetscale/entity/JacksonTTL.js.map +1 -0
  98. package/dist/src/db/redis.d.ts +18 -0
  99. package/dist/src/db/redis.js +214 -0
  100. package/dist/src/db/redis.js.map +1 -0
  101. package/dist/src/db/sql/entity/JacksonIndex.d.ts +7 -0
  102. package/dist/src/db/sql/entity/JacksonIndex.js +39 -0
  103. package/dist/src/db/sql/entity/JacksonIndex.js.map +1 -0
  104. package/dist/src/db/sql/entity/JacksonStore.d.ts +9 -0
  105. package/dist/src/db/sql/entity/JacksonStore.js +61 -0
  106. package/dist/src/db/sql/entity/JacksonStore.js.map +1 -0
  107. package/dist/src/db/sql/entity/JacksonTTL.d.ts +4 -0
  108. package/dist/src/db/sql/entity/JacksonTTL.js +27 -0
  109. package/dist/src/db/sql/entity/JacksonTTL.js.map +1 -0
  110. package/dist/src/db/sql/mariadb/entity/JacksonIndex.d.ts +7 -0
  111. package/dist/src/db/sql/mariadb/entity/JacksonIndex.js +39 -0
  112. package/dist/src/db/sql/mariadb/entity/JacksonIndex.js.map +1 -0
  113. package/dist/src/db/sql/mariadb/entity/JacksonStore.d.ts +9 -0
  114. package/dist/src/db/sql/mariadb/entity/JacksonStore.js +63 -0
  115. package/dist/src/db/sql/mariadb/entity/JacksonStore.js.map +1 -0
  116. package/dist/src/db/sql/mariadb/entity/JacksonTTL.d.ts +4 -0
  117. package/dist/src/db/sql/mariadb/entity/JacksonTTL.js +27 -0
  118. package/dist/src/db/sql/mariadb/entity/JacksonTTL.js.map +1 -0
  119. package/dist/src/db/sql/mssql/entity/JacksonIndex.d.ts +7 -0
  120. package/dist/src/db/sql/mssql/entity/JacksonIndex.js +39 -0
  121. package/dist/src/db/sql/mssql/entity/JacksonIndex.js.map +1 -0
  122. package/dist/src/db/sql/mssql/entity/JacksonStore.d.ts +9 -0
  123. package/dist/src/db/sql/mssql/entity/JacksonStore.js +61 -0
  124. package/dist/src/db/sql/mssql/entity/JacksonStore.js.map +1 -0
  125. package/dist/src/db/sql/mssql/entity/JacksonTTL.d.ts +4 -0
  126. package/dist/src/db/sql/mssql/entity/JacksonTTL.js +27 -0
  127. package/dist/src/db/sql/mssql/entity/JacksonTTL.js.map +1 -0
  128. package/dist/src/db/sql/mssql.d.ts +1 -0
  129. package/dist/src/db/sql/mssql.js +44 -0
  130. package/dist/src/db/sql/mssql.js.map +1 -0
  131. package/dist/src/db/sql/sql.d.ts +32 -0
  132. package/dist/src/db/sql/sql.js +318 -0
  133. package/dist/src/db/sql/sql.js.map +1 -0
  134. package/dist/src/db/sql/sqlite/entity/JacksonIndex.d.ts +7 -0
  135. package/dist/src/db/sql/sqlite/entity/JacksonIndex.js +39 -0
  136. package/dist/src/db/sql/sqlite/entity/JacksonIndex.js.map +1 -0
  137. package/dist/src/db/sql/sqlite/entity/JacksonStore.d.ts +9 -0
  138. package/dist/src/db/sql/sqlite/entity/JacksonStore.js +61 -0
  139. package/dist/src/db/sql/sqlite/entity/JacksonStore.js.map +1 -0
  140. package/dist/src/db/sql/sqlite/entity/JacksonTTL.d.ts +4 -0
  141. package/dist/src/db/sql/sqlite/entity/JacksonTTL.js +27 -0
  142. package/dist/src/db/sql/sqlite/entity/JacksonTTL.js.map +1 -0
  143. package/dist/src/db/store.d.ts +5 -0
  144. package/dist/src/db/store.js +65 -0
  145. package/dist/src/db/store.js.map +1 -0
  146. package/dist/src/db/utils.d.ts +16 -0
  147. package/dist/src/db/utils.js +28 -0
  148. package/dist/src/db/utils.js.map +1 -0
  149. package/dist/src/directory-sync/batch-events/queue.d.ts +40 -0
  150. package/dist/src/directory-sync/batch-events/queue.js +225 -0
  151. package/dist/src/directory-sync/batch-events/queue.js.map +1 -0
  152. package/dist/src/directory-sync/index.d.ts +27 -0
  153. package/dist/src/directory-sync/index.js +97 -0
  154. package/dist/src/directory-sync/index.js.map +1 -0
  155. package/dist/src/directory-sync/non-scim/google/api.d.ts +36 -0
  156. package/dist/src/directory-sync/non-scim/google/api.js +143 -0
  157. package/dist/src/directory-sync/non-scim/google/api.js.map +1 -0
  158. package/dist/src/directory-sync/non-scim/google/index.d.ts +12 -0
  159. package/dist/src/directory-sync/non-scim/google/index.js +10 -0
  160. package/dist/src/directory-sync/non-scim/google/index.js.map +1 -0
  161. package/dist/src/directory-sync/non-scim/google/oauth.d.ts +27 -0
  162. package/dist/src/directory-sync/non-scim/google/oauth.js +105 -0
  163. package/dist/src/directory-sync/non-scim/google/oauth.js.map +1 -0
  164. package/dist/src/directory-sync/non-scim/index.d.ts +24 -0
  165. package/dist/src/directory-sync/non-scim/index.js +85 -0
  166. package/dist/src/directory-sync/non-scim/index.js.map +1 -0
  167. package/dist/src/directory-sync/non-scim/syncGroupMembers.d.ts +23 -0
  168. package/dist/src/directory-sync/non-scim/syncGroupMembers.js +105 -0
  169. package/dist/src/directory-sync/non-scim/syncGroupMembers.js.map +1 -0
  170. package/dist/src/directory-sync/non-scim/syncGroups.d.ts +24 -0
  171. package/dist/src/directory-sync/non-scim/syncGroups.js +120 -0
  172. package/dist/src/directory-sync/non-scim/syncGroups.js.map +1 -0
  173. package/dist/src/directory-sync/non-scim/syncUsers.d.ts +24 -0
  174. package/dist/src/directory-sync/non-scim/syncUsers.js +120 -0
  175. package/dist/src/directory-sync/non-scim/syncUsers.js.map +1 -0
  176. package/dist/src/directory-sync/non-scim/utils.d.ts +36 -0
  177. package/dist/src/directory-sync/non-scim/utils.js +109 -0
  178. package/dist/src/directory-sync/non-scim/utils.js.map +1 -0
  179. package/dist/src/directory-sync/request.d.ts +14 -0
  180. package/dist/src/directory-sync/request.js +29 -0
  181. package/dist/src/directory-sync/request.js.map +1 -0
  182. package/dist/src/directory-sync/scim/Base.d.ts +12 -0
  183. package/dist/src/directory-sync/scim/Base.js +23 -0
  184. package/dist/src/directory-sync/scim/Base.js.map +1 -0
  185. package/dist/src/directory-sync/scim/DirectoryConfig.d.ts +343 -0
  186. package/dist/src/directory-sync/scim/DirectoryConfig.js +580 -0
  187. package/dist/src/directory-sync/scim/DirectoryConfig.js.map +1 -0
  188. package/dist/src/directory-sync/scim/DirectoryGroups.d.ts +28 -0
  189. package/dist/src/directory-sync/scim/DirectoryGroups.js +252 -0
  190. package/dist/src/directory-sync/scim/DirectoryGroups.js.map +1 -0
  191. package/dist/src/directory-sync/scim/DirectoryUsers.d.ts +25 -0
  192. package/dist/src/directory-sync/scim/DirectoryUsers.js +193 -0
  193. package/dist/src/directory-sync/scim/DirectoryUsers.js.map +1 -0
  194. package/dist/src/directory-sync/scim/Groups.d.ts +166 -0
  195. package/dist/src/directory-sync/scim/Groups.js +348 -0
  196. package/dist/src/directory-sync/scim/Groups.js.map +1 -0
  197. package/dist/src/directory-sync/scim/Users.d.ts +99 -0
  198. package/dist/src/directory-sync/scim/Users.js +215 -0
  199. package/dist/src/directory-sync/scim/Users.js.map +1 -0
  200. package/dist/src/directory-sync/scim/WebhookEventsLogger.d.ts +101 -0
  201. package/dist/src/directory-sync/scim/WebhookEventsLogger.js +165 -0
  202. package/dist/src/directory-sync/scim/WebhookEventsLogger.js.map +1 -0
  203. package/dist/src/directory-sync/scim/transform.d.ts +6 -0
  204. package/dist/src/directory-sync/scim/transform.js +37 -0
  205. package/dist/src/directory-sync/scim/transform.js.map +1 -0
  206. package/dist/src/directory-sync/scim/utils.d.ts +33 -0
  207. package/dist/src/directory-sync/scim/utils.js +129 -0
  208. package/dist/src/directory-sync/scim/utils.js.map +1 -0
  209. package/dist/src/directory-sync/types.d.ts +195 -0
  210. package/dist/src/directory-sync/types.js +10 -0
  211. package/dist/src/directory-sync/types.js.map +1 -0
  212. package/dist/src/directory-sync/utils.d.ts +19 -0
  213. package/dist/src/directory-sync/utils.js +56 -0
  214. package/dist/src/directory-sync/utils.js.map +1 -0
  215. package/dist/src/ee/branding/index.d.ts +17 -0
  216. package/dist/src/ee/branding/index.js +49 -0
  217. package/dist/src/ee/branding/index.js.map +1 -0
  218. package/dist/src/ee/common/checkLicense.d.ts +3 -0
  219. package/dist/src/ee/common/checkLicense.js +23 -0
  220. package/dist/src/ee/common/checkLicense.js.map +1 -0
  221. package/dist/src/ee/identity-federation/app.d.ts +328 -0
  222. package/dist/src/ee/identity-federation/app.js +532 -0
  223. package/dist/src/ee/identity-federation/app.js.map +1 -0
  224. package/dist/src/ee/identity-federation/idp-login.d.ts +18 -0
  225. package/dist/src/ee/identity-federation/idp-login.js +98 -0
  226. package/dist/src/ee/identity-federation/idp-login.js.map +1 -0
  227. package/dist/src/ee/identity-federation/index.d.ts +15 -0
  228. package/dist/src/ee/identity-federation/index.js +43 -0
  229. package/dist/src/ee/identity-federation/index.js.map +1 -0
  230. package/dist/src/ee/identity-federation/sso.d.ts +24 -0
  231. package/dist/src/ee/identity-federation/sso.js +124 -0
  232. package/dist/src/ee/identity-federation/sso.js.map +1 -0
  233. package/dist/src/ee/identity-federation/types.d.ts +38 -0
  234. package/dist/src/ee/identity-federation/types.js +2 -0
  235. package/dist/src/ee/identity-federation/types.js.map +1 -0
  236. package/dist/src/ee/ory/ory.d.ts +18 -0
  237. package/dist/src/ee/ory/ory.js +195 -0
  238. package/dist/src/ee/ory/ory.js.map +1 -0
  239. package/dist/src/ee/product/index.d.ts +14 -0
  240. package/dist/src/ee/product/index.js +45 -0
  241. package/dist/src/ee/product/index.js.map +1 -0
  242. package/dist/src/event/axios.d.ts +2 -0
  243. package/dist/src/event/axios.js +27 -0
  244. package/dist/src/event/axios.js.map +1 -0
  245. package/dist/src/event/index.d.ts +11 -0
  246. package/dist/src/event/index.js +53 -0
  247. package/dist/src/event/index.js.map +1 -0
  248. package/dist/src/event/types.d.ts +21 -0
  249. package/dist/src/event/types.js +2 -0
  250. package/dist/src/event/types.js.map +1 -0
  251. package/dist/src/event/utils.d.ts +4 -0
  252. package/dist/src/event/utils.js +33 -0
  253. package/dist/src/event/utils.js.map +1 -0
  254. package/dist/src/event/webhook.d.ts +3 -0
  255. package/dist/src/event/webhook.js +34 -0
  256. package/dist/src/event/webhook.js.map +1 -0
  257. package/dist/src/index.d.ts +35 -0
  258. package/dist/src/index.js +161 -0
  259. package/dist/src/index.js.map +1 -0
  260. package/dist/src/loadConnection.d.ts +4 -0
  261. package/dist/src/loadConnection.js +38 -0
  262. package/dist/src/loadConnection.js.map +1 -0
  263. package/dist/src/opentelemetry/metrics.d.ts +14 -0
  264. package/dist/src/opentelemetry/metrics.js +64 -0
  265. package/dist/src/opentelemetry/metrics.js.map +1 -0
  266. package/dist/src/saml/claims.d.ts +12 -0
  267. package/dist/src/saml/claims.js +57 -0
  268. package/dist/src/saml/claims.js.map +1 -0
  269. package/dist/src/saml/lib.d.ts +8 -0
  270. package/dist/src/saml/lib.js +29 -0
  271. package/dist/src/saml/lib.js.map +1 -0
  272. package/dist/src/saml/x509.d.ts +9 -0
  273. package/dist/src/saml/x509.js +93 -0
  274. package/dist/src/saml/x509.js.map +1 -0
  275. package/dist/src/sso-traces/index.d.ts +114 -0
  276. package/dist/src/sso-traces/index.js +229 -0
  277. package/dist/src/sso-traces/index.js.map +1 -0
  278. package/dist/src/sso-traces/types.d.ts +44 -0
  279. package/dist/src/sso-traces/types.js +2 -0
  280. package/dist/src/sso-traces/types.js.map +1 -0
  281. package/dist/src/typings.d.ts +540 -0
  282. package/dist/src/typings.js +5 -0
  283. package/dist/src/typings.js.map +1 -0
  284. package/dist/typeorm.d.ts +3 -0
  285. package/dist/typeorm.js +58 -0
  286. package/dist/typeorm.js.map +1 -0
  287. package/dist/typings.d.ts +1 -1
  288. package/package.json +7 -7
@@ -0,0 +1,93 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import * as forge from 'node-forge';
11
+ import crypto from 'crypto';
12
+ const pki = forge.pki;
13
+ let certificateStore;
14
+ let cachedCertificate;
15
+ let jacksonOption;
16
+ export const init = (store, opts) => __awaiter(void 0, void 0, void 0, function* () {
17
+ certificateStore = store;
18
+ jacksonOption = opts;
19
+ return yield getDefaultCertificate();
20
+ });
21
+ const generateCertificate = () => {
22
+ const today = new Date();
23
+ const keys = pki.rsa.generateKeyPair(2048);
24
+ const cert = pki.createCertificate();
25
+ cert.publicKey = keys.publicKey;
26
+ cert.serialNumber = '01';
27
+ cert.validity.notBefore = new Date();
28
+ cert.validity.notAfter = new Date(today.setFullYear(today.getFullYear() + 30));
29
+ const attrs = [
30
+ {
31
+ name: 'commonName',
32
+ value: 'BoxyHQ Jackson',
33
+ },
34
+ ];
35
+ cert.setSubject(attrs);
36
+ cert.setIssuer(attrs);
37
+ cert.setExtensions([
38
+ {
39
+ name: 'basicConstraints',
40
+ cA: false,
41
+ },
42
+ {
43
+ name: 'keyUsage',
44
+ keyCertSign: false,
45
+ digitalSignature: true,
46
+ nonRepudiation: false,
47
+ keyEncipherment: false,
48
+ dataEncipherment: false,
49
+ },
50
+ ]);
51
+ // self-sign certificate
52
+ cert.sign(keys.privateKey, forge.md.sha256.create());
53
+ return {
54
+ publicKey: pki.certificateToPem(cert),
55
+ privateKey: pki.privateKeyToPem(keys.privateKey),
56
+ };
57
+ };
58
+ export const getDefaultCertificate = () => __awaiter(void 0, void 0, void 0, function* () {
59
+ var _a, _b;
60
+ if (cachedCertificate && !(yield isCertificateExpired(cachedCertificate.publicKey))) {
61
+ return cachedCertificate;
62
+ }
63
+ if (!certificateStore) {
64
+ throw new Error('Certificate store not initialized');
65
+ }
66
+ if (!jacksonOption) {
67
+ throw new Error('Jackson option not initialized');
68
+ }
69
+ // If the user has provided a certificate, use that instead of the default.
70
+ // We expect the developer to provide base64 encoded keys, so we need to decode them.
71
+ if (((_a = jacksonOption.certs) === null || _a === void 0 ? void 0 : _a.privateKey) && ((_b = jacksonOption.certs) === null || _b === void 0 ? void 0 : _b.publicKey)) {
72
+ cachedCertificate = {
73
+ publicKey: Buffer.from(jacksonOption.certs.publicKey, 'base64').toString('utf-8'),
74
+ privateKey: Buffer.from(jacksonOption.certs.privateKey, 'base64').toString('utf-8'),
75
+ };
76
+ return cachedCertificate;
77
+ }
78
+ // Otherwise, use the default certificate.
79
+ cachedCertificate = yield certificateStore.get('default');
80
+ // If certificate is expired let it drop through so it creates a new cert
81
+ if (cachedCertificate && !(yield isCertificateExpired(cachedCertificate.publicKey))) {
82
+ return cachedCertificate;
83
+ }
84
+ // If default certificate is not found or has expired, create one and store it.
85
+ cachedCertificate = generateCertificate();
86
+ yield certificateStore.put('default', cachedCertificate);
87
+ return cachedCertificate;
88
+ });
89
+ const isCertificateExpired = (publicKey) => __awaiter(void 0, void 0, void 0, function* () {
90
+ const { validTo } = new crypto.X509Certificate(publicKey);
91
+ return !(validTo != 'Bad time value' && new Date(validTo) > new Date());
92
+ });
93
+ //# sourceMappingURL=x509.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"x509.js","sourceRoot":"","sources":["../../../src/saml/x509.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,114 @@
1
+ import { GetByProductParams, Records, Storable } from '../typings';
2
+ import type { SSOTrace, Trace } from './types';
3
+ /**
4
+ * @swagger
5
+ * definitions:
6
+ * SSOTrace:
7
+ * type: object
8
+ * properties:
9
+ * traceId:
10
+ * type: string
11
+ * description: Trace ID
12
+ * error:
13
+ * type: string
14
+ * description: Error
15
+ * timestamp:
16
+ * type: string
17
+ * description: Timestamp
18
+ * context:
19
+ * type: object
20
+ * properties:
21
+ * tenant:
22
+ * type: string
23
+ * description: Tenant
24
+ * product:
25
+ * type: string
26
+ * description: Product
27
+ * clientID:
28
+ * type: string
29
+ * description: Connection client ID
30
+ * issuer:
31
+ * type: string
32
+ * description: Issuer
33
+ * relayState:
34
+ * type: string
35
+ * description: Relay state
36
+ * samlResponse:
37
+ * type: string
38
+ * description: SAML response
39
+ * isSAMLFederated:
40
+ * type: boolean
41
+ * description: Indicates if SAML is federated
42
+ * isOIDCFederated:
43
+ * type: boolean
44
+ * description: Indicates if OIDC is federated
45
+ * isIdPFlow:
46
+ * type: boolean
47
+ * description: Indicates if request is from IdP
48
+ */
49
+ declare class SSOTraces {
50
+ tracesStore: Storable;
51
+ constructor({ tracesStore }: {
52
+ tracesStore: any;
53
+ });
54
+ saveTrace(payload: SSOTrace): Promise<string | undefined>;
55
+ /**
56
+ * @swagger
57
+ * /api/v1/sso-traces:
58
+ * get:
59
+ * summary: Get trace by ID
60
+ * parameters:
61
+ * - name: id
62
+ * description: Trace ID
63
+ * in: query
64
+ * required: true
65
+ * type: string
66
+ * tags:
67
+ * - SSO Traces
68
+ * produces:
69
+ * - application/json
70
+ * responses:
71
+ * '200':
72
+ * description: Success
73
+ * schema:
74
+ * $ref: '#/definitions/SSOTrace'
75
+ */
76
+ getByTraceId(traceId: string): Promise<Trace>;
77
+ getAllTraces(pageOffset?: number, pageLimit?: number, pageToken?: string): Promise<Records<Trace>>;
78
+ /** Cleans up stale traces older than 1 week */
79
+ cleanUpStaleTraces(): Promise<void>;
80
+ /**
81
+ * @swagger
82
+ * /api/v1/sso-traces/product:
83
+ * get:
84
+ * summary: Get all traces for a product
85
+ * parameters:
86
+ * - $ref: '#/parameters/product'
87
+ * - $ref: '#/parameters/pageOffset'
88
+ * - $ref: '#/parameters/pageLimit'
89
+ * - $ref: '#/parameters/pageToken'
90
+ * tags:
91
+ * - SSO Traces
92
+ * produces:
93
+ * - application/json
94
+ * responses:
95
+ * '200':
96
+ * description: Success
97
+ * content:
98
+ * application/json:
99
+ * schema:
100
+ * type: object
101
+ * properties:
102
+ * data:
103
+ * type: array
104
+ * items:
105
+ * $ref: '#/definitions/SSOTrace'
106
+ * pageToken:
107
+ * type: string
108
+ * description: token for pagination
109
+ */
110
+ getTracesByProduct(params: GetByProductParams): Promise<Records<any>>;
111
+ deleteTracesByProduct(product: string): Promise<void>;
112
+ countByProduct(product: string): Promise<number | undefined>;
113
+ }
114
+ export default SSOTraces;
@@ -0,0 +1,229 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { generateMnemonic } from '@boxyhq/error-code-mnemonic';
11
+ import { IndexNames } from '../controller/utils';
12
+ import { keyFromParts } from '../db/utils';
13
+ import { JacksonError } from '../controller/error';
14
+ const INTERVAL_1_WEEK_MS = 7 * 24 * 60 * 60 * 1000;
15
+ const INTERVAL_1_DAY_MS = 24 * 60 * 60 * 1000;
16
+ /**
17
+ * @swagger
18
+ * definitions:
19
+ * SSOTrace:
20
+ * type: object
21
+ * properties:
22
+ * traceId:
23
+ * type: string
24
+ * description: Trace ID
25
+ * error:
26
+ * type: string
27
+ * description: Error
28
+ * timestamp:
29
+ * type: string
30
+ * description: Timestamp
31
+ * context:
32
+ * type: object
33
+ * properties:
34
+ * tenant:
35
+ * type: string
36
+ * description: Tenant
37
+ * product:
38
+ * type: string
39
+ * description: Product
40
+ * clientID:
41
+ * type: string
42
+ * description: Connection client ID
43
+ * issuer:
44
+ * type: string
45
+ * description: Issuer
46
+ * relayState:
47
+ * type: string
48
+ * description: Relay state
49
+ * samlResponse:
50
+ * type: string
51
+ * description: SAML response
52
+ * isSAMLFederated:
53
+ * type: boolean
54
+ * description: Indicates if SAML is federated
55
+ * isOIDCFederated:
56
+ * type: boolean
57
+ * description: Indicates if OIDC is federated
58
+ * isIdPFlow:
59
+ * type: boolean
60
+ * description: Indicates if request is from IdP
61
+ */
62
+ class SSOTraces {
63
+ constructor({ tracesStore }) {
64
+ this.tracesStore = tracesStore;
65
+ // Clean up stale traces at the start
66
+ this.cleanUpStaleTraces();
67
+ // Set timer to run every day
68
+ setInterval(() => __awaiter(this, void 0, void 0, function* () {
69
+ this.cleanUpStaleTraces();
70
+ }), INTERVAL_1_DAY_MS);
71
+ }
72
+ saveTrace(payload) {
73
+ return __awaiter(this, void 0, void 0, function* () {
74
+ try {
75
+ const { context } = payload;
76
+ // Friendly trace id
77
+ const traceId = yield generateMnemonic();
78
+ // If timestamp present in payload use that value, else generate the current timestamp
79
+ const timestamp = typeof payload.timestamp === 'number' ? payload.timestamp : Date.now();
80
+ const traceValue = Object.assign(Object.assign({}, payload), { traceId, timestamp });
81
+ const { tenant, product, clientID } = context;
82
+ const indices = [
83
+ {
84
+ name: IndexNames.TenantProduct,
85
+ value: keyFromParts(tenant, product),
86
+ filterLogic: ({ tenant, product }) => !!(tenant && product),
87
+ },
88
+ {
89
+ name: IndexNames.SSOClientID,
90
+ value: clientID,
91
+ filterLogic: ({ clientID }) => !!clientID,
92
+ },
93
+ {
94
+ name: IndexNames.Product,
95
+ value: product,
96
+ filterLogic: ({ product }) => !!product,
97
+ },
98
+ ]
99
+ .filter(({ filterLogic }) => filterLogic(context))
100
+ .map(({ name, value }) => ({ name, value }));
101
+ yield this.tracesStore.put(traceId, traceValue, ...indices);
102
+ return traceId;
103
+ }
104
+ catch (err) {
105
+ console.error(`Failed to save trace`, err);
106
+ }
107
+ });
108
+ }
109
+ /**
110
+ * @swagger
111
+ * /api/v1/sso-traces:
112
+ * get:
113
+ * summary: Get trace by ID
114
+ * parameters:
115
+ * - name: id
116
+ * description: Trace ID
117
+ * in: query
118
+ * required: true
119
+ * type: string
120
+ * tags:
121
+ * - SSO Traces
122
+ * produces:
123
+ * - application/json
124
+ * responses:
125
+ * '200':
126
+ * description: Success
127
+ * schema:
128
+ * $ref: '#/definitions/SSOTrace'
129
+ */
130
+ getByTraceId(traceId) {
131
+ return __awaiter(this, void 0, void 0, function* () {
132
+ return (yield this.tracesStore.get(traceId));
133
+ });
134
+ }
135
+ getAllTraces(pageOffset, pageLimit, pageToken) {
136
+ return __awaiter(this, void 0, void 0, function* () {
137
+ return yield this.tracesStore.getAll(pageOffset || 0, pageLimit || 0, pageToken);
138
+ });
139
+ }
140
+ /** Cleans up stale traces older than 1 week */
141
+ cleanUpStaleTraces() {
142
+ return __awaiter(this, void 0, void 0, function* () {
143
+ let staleTraces = [];
144
+ for (let pageOffset = 0, pageTokenMap = {};; pageOffset += 50) {
145
+ const { data: page, pageToken: nextPageToken } = yield this.getAllTraces(pageOffset, 50, pageTokenMap[pageOffset]);
146
+ pageTokenMap[pageOffset + 50] = nextPageToken;
147
+ if (page.length === 0) {
148
+ break;
149
+ }
150
+ staleTraces = staleTraces.concat(page.filter(({ timestamp }) => Date.now() - timestamp > INTERVAL_1_WEEK_MS));
151
+ }
152
+ for (let i = 0; i < staleTraces.length; i++) {
153
+ yield this.tracesStore.delete(staleTraces[i].traceId);
154
+ }
155
+ });
156
+ }
157
+ /**
158
+ * @swagger
159
+ * /api/v1/sso-traces/product:
160
+ * get:
161
+ * summary: Get all traces for a product
162
+ * parameters:
163
+ * - $ref: '#/parameters/product'
164
+ * - $ref: '#/parameters/pageOffset'
165
+ * - $ref: '#/parameters/pageLimit'
166
+ * - $ref: '#/parameters/pageToken'
167
+ * tags:
168
+ * - SSO Traces
169
+ * produces:
170
+ * - application/json
171
+ * responses:
172
+ * '200':
173
+ * description: Success
174
+ * content:
175
+ * application/json:
176
+ * schema:
177
+ * type: object
178
+ * properties:
179
+ * data:
180
+ * type: array
181
+ * items:
182
+ * $ref: '#/definitions/SSOTrace'
183
+ * pageToken:
184
+ * type: string
185
+ * description: token for pagination
186
+ */
187
+ getTracesByProduct(params) {
188
+ return __awaiter(this, void 0, void 0, function* () {
189
+ const { product, pageOffset, pageLimit, pageToken } = params;
190
+ if (!product) {
191
+ throw new JacksonError('Please provide a `product`.', 400);
192
+ }
193
+ const traces = yield this.tracesStore.getByIndex({
194
+ name: IndexNames.Product,
195
+ value: product,
196
+ }, pageOffset, pageLimit, pageToken);
197
+ return traces;
198
+ });
199
+ }
200
+ deleteTracesByProduct(product) {
201
+ return __awaiter(this, void 0, void 0, function* () {
202
+ let pageToken;
203
+ do {
204
+ const res = yield this.getTracesByProduct({
205
+ product,
206
+ pageOffset: 0,
207
+ pageLimit: 50,
208
+ });
209
+ if (!res.data || !res.data.length) {
210
+ break;
211
+ }
212
+ pageToken = res.pageToken;
213
+ // deleting traces in batches of 50
214
+ // deleting in the loop right away as we get the traces
215
+ yield this.tracesStore.deleteMany((res.data || []).map((t) => t.traceId));
216
+ } while (pageToken);
217
+ });
218
+ }
219
+ countByProduct(product) {
220
+ return __awaiter(this, void 0, void 0, function* () {
221
+ return yield this.tracesStore.getCount({
222
+ name: IndexNames.Product,
223
+ value: product,
224
+ });
225
+ });
226
+ }
227
+ }
228
+ export default SSOTraces;
229
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/sso-traces/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import { SAMLProfile } from '@boxyhq/saml20/dist/typings';
2
+ import SSOTraces from '.';
3
+ import { OIDCIdPInitiatedReq } from '../typings';
4
+ export interface Trace {
5
+ traceId: string;
6
+ timestamp: number;
7
+ error: string;
8
+ context: {
9
+ [key: string]: unknown;
10
+ };
11
+ }
12
+ export interface SSOTrace extends Omit<Trace, 'traceId' | 'timestamp'> {
13
+ timestamp?: number /** Can be passed in from outside else will be set to Date.now() */;
14
+ context: {
15
+ tenant: string;
16
+ product: string;
17
+ clientID: string;
18
+ redirectUri?: string;
19
+ requestedOIDCFlow?: boolean;
20
+ isSAMLFederated?: boolean;
21
+ isOIDCFederated?: boolean;
22
+ isIdPFlow?: boolean;
23
+ relayState?: string;
24
+ providerName?: string;
25
+ acsUrl?: string;
26
+ entityId?: string;
27
+ samlRequest?: string;
28
+ samlResponse?: string;
29
+ issuer?: string;
30
+ profile?: SAMLProfile;
31
+ error?: string;
32
+ error_description?: string;
33
+ error_uri?: string;
34
+ session_state_from_op_error?: string;
35
+ scope_from_op_error?: string;
36
+ stack?: string;
37
+ oidcTokenSet?: {
38
+ id_token?: string;
39
+ access_token?: string;
40
+ };
41
+ oidcIdPRequest?: OIDCIdPInitiatedReq;
42
+ };
43
+ }
44
+ export type SSOTracesInstance = InstanceType<typeof SSOTraces>;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/sso-traces/types.ts"],"names":[],"mappings":""}