Compare commits

...

218 Commits

Author SHA1 Message Date
argoyle 9d410abe54 Merge branch 'next-release' into 'main'
chore(release): prepare for 0.3.0

See merge request unboundsoftware/auth0mock!187
2025-12-28 20:21:31 +01:00
Unbound Release e740676de2 chore(release): prepare for 0.3.0 2025-12-28 20:21:30 +01:00
argoyle acb0568725 Merge branch 'increase-resource-limits-improve-checks' into 'main'
feat: increase resource limits and improve readiness checks

See merge request unboundsoftware/auth0mock!215
2025-12-28 15:29:58 +01:00
argoyle 6558d027ca feat: increase resource limits and improve readiness checks
Increases memory requests and limits in the Kubernetes deployment 
configuration to ensure better performance under load. Enhances 
the readiness and liveness probes by correcting the path and 
adding a liveness probe to improve service reliability. Updates 
Code by cleaning up session data after a successful token exchange 
and formats OpenID configuration response for better readability. 
Adds `.claude/` to .gitignore to prevent unwanted files from 
being tracked.
2025-12-28 15:25:52 +01:00
argoyle 17bad3a988 Merge branch 'renovate/node-24.x' into 'main'
chore(deps): update node.js to v24.12.0

See merge request unboundsoftware/auth0mock!214
2025-12-12 08:42:17 +01:00
Renovate d50387feb1 chore(deps): update node.js to v24.12.0 2025-12-11 20:03:44 +00:00
argoyle 083125a5bb Merge branch 'renovate/node-24.11.1' into 'main'
chore(deps): update node.js to aa57b08

See merge request unboundsoftware/auth0mock!213
2025-12-09 09:56:50 +01:00
Renovate 66b4fb90cd chore(deps): update node.js to aa57b08 2025-12-09 03:14:32 +00:00
argoyle 617812a044 Merge branch 'renovate/jsonwebtoken-9.x' into 'main'
fix(deps): update dependency jsonwebtoken to v9.0.3

See merge request unboundsoftware/auth0mock!212
2025-12-04 20:36:48 +01:00
Renovate cc3a402fe4 fix(deps): update dependency jsonwebtoken to v9.0.3 2025-12-04 11:02:02 +00:00
argoyle fc6882624f Merge branch 'renovate/prettier-3.x' into 'main'
chore(deps): update dependency prettier to v3.7.4

See merge request unboundsoftware/auth0mock!211
2025-12-03 06:11:44 +01:00
Renovate 3825ee0656 chore(deps): update dependency prettier to v3.7.4 2025-12-03 05:00:52 +00:00
argoyle 237fa7e381 Merge branch 'renovate/express-5.x' into 'main'
fix(deps): update dependency express to v5.2.1

See merge request unboundsoftware/auth0mock!210
2025-12-02 07:15:04 +01:00
Renovate b953439d0f fix(deps): update dependency express to v5.2.1 2025-12-01 21:01:15 +00:00
argoyle a74bd86fe2 Merge branch 'renovate/express-5.x' into 'main'
fix(deps): update dependency express to v5.2.0

See merge request unboundsoftware/auth0mock!209
2025-12-01 18:14:33 +01:00
Renovate f52ccf28bc fix(deps): update dependency express to v5.2.0 2025-12-01 17:02:42 +00:00
argoyle de61dda74e Merge branch 'renovate/prettier-3.x' into 'main'
chore(deps): update dependency prettier to v3.7.3

See merge request unboundsoftware/auth0mock!207
2025-11-30 18:48:33 +01:00
Renovate eb8bb78766 chore(deps): update dependency prettier to v3.7.3 2025-11-29 18:01:10 +00:00
argoyle f3ff720eb6 Merge branch 'renovate/prettier-3.x' into 'main'
chore(deps): update dependency prettier to v3.7.2

See merge request unboundsoftware/auth0mock!206
2025-11-29 15:02:24 +01:00
Renovate b5fde43240 chore(deps): update dependency prettier to v3.7.2 2025-11-28 21:01:53 +00:00
argoyle 3bca5a318e Merge branch 'renovate/prettier-3.x' into 'main'
chore(deps): update dependency prettier to v3.7.1

See merge request unboundsoftware/auth0mock!205
2025-11-28 08:36:32 +01:00
Renovate 22dbf00182 chore(deps): update dependency prettier to v3.7.1 2025-11-27 12:01:41 +00:00
argoyle d1af6008fd Merge branch 'renovate/prettier-3.x' into 'main'
chore(deps): update dependency prettier to v3.7.0

See merge request unboundsoftware/auth0mock!204
2025-11-27 11:38:22 +01:00
Renovate bd54fd68f8 chore(deps): update dependency prettier to v3.7.0 2025-11-27 09:02:26 +00:00
argoyle 75035ae716 Merge branch 'renovate/body-parser-2.x' into 'main'
fix(deps): update dependency body-parser to v2.2.1

See merge request unboundsoftware/auth0mock!203
2025-11-24 20:43:07 +01:00
Renovate 933dd886ff fix(deps): update dependency body-parser to v2.2.1 2025-11-24 19:03:15 +00:00
argoyle ad85ce8347 Merge branch 'renovate/node-24.11.1' into 'main'
chore(deps): update node.js to 11a2e11

See merge request unboundsoftware/auth0mock!202
2025-11-18 21:09:57 +01:00
Renovate 361a2d23bc chore(deps): update node.js to 11a2e11 2025-11-18 16:04:22 +00:00
argoyle 1b656ce2f9 Merge branch 'renovate/node-24.x' into 'main'
chore(deps): update node.js to v24.11.1

See merge request unboundsoftware/auth0mock!201
2025-11-13 08:59:56 +01:00
Renovate eba28529a6 chore(deps): update node.js to v24.11.1 2025-11-12 20:14:42 +00:00
argoyle e8155bfd0a Merge branch 'renovate/nodemon-3.x' into 'main'
fix(deps): update dependency nodemon to v3.1.11

See merge request unboundsoftware/auth0mock!200
2025-11-11 21:12:48 +01:00
Renovate 7b8dfb2cff fix(deps): update dependency nodemon to v3.1.11 2025-11-11 17:03:12 +00:00
argoyle a5f091efa6 Merge branch 'renovate/node-24.11.0' into 'main'
chore(deps): update node.js to 0601cd0

See merge request unboundsoftware/auth0mock!199
2025-11-04 14:13:50 +01:00
Renovate df48b03d01 chore(deps): update node.js to 0601cd0 2025-11-04 12:06:17 +00:00
argoyle 98e8a2abb6 Merge branch 'renovate/node-24.x' into 'main'
chore(deps): update node.js

See merge request unboundsoftware/auth0mock!198
2025-10-29 07:38:41 +01:00
Renovate 854aef9b8d chore(deps): update node.js 2025-10-28 23:11:20 +00:00
argoyle 3f2e1b588f Merge branch 'renovate/node-24.x' into 'main'
chore(deps): update node.js to v24

See merge request unboundsoftware/auth0mock!197
2025-10-28 07:12:00 +01:00
Renovate f573a3a60c chore(deps): update node.js to v24 2025-10-28 00:11:34 +00:00
argoyle ee0e44671c Merge branch 'renovate/node-22.x' into 'main'
chore(deps): update node.js to v22.21.0

See merge request unboundsoftware/auth0mock!196
2025-10-22 11:00:30 +02:00
Renovate 75e5abe166 chore(deps): update node.js to v22.21.0 2025-10-21 22:00:54 +00:00
argoyle 3c5127d3c0 Merge branch 'renovate/node-22.20.0' into 'main'
chore(deps): update node.js to 1260a4a

See merge request unboundsoftware/auth0mock!195
2025-10-21 20:11:45 +02:00
Renovate 3aef5e33fa chore(deps): update node.js to 1260a4a 2025-10-21 13:03:32 +00:00
argoyle e2b0c6422e Merge branch 'renovate/node-22.20.0' into 'main'
chore(deps): update node.js to 4b5601e

See merge request unboundsoftware/auth0mock!193
2025-10-01 19:22:37 +02:00
Renovate 7f9320dff2 chore(deps): update node.js to 4b5601e 2025-10-01 14:05:23 +00:00
argoyle bfa14ce1bd Merge branch 'renovate/node-22.x' into 'main'
chore(deps): update node.js to v22.20.0

See merge request unboundsoftware/auth0mock!192
2025-09-25 08:00:39 +02:00
Renovate 950a706bb6 chore(deps): update node.js to v22.20.0 2025-09-25 01:12:26 +00:00
argoyle 7e7828777d Merge branch 'renovate/debug-4.x' into 'main'
fix(deps): update dependency debug to v4.4.3

See merge request unboundsoftware/auth0mock!190
2025-09-14 12:28:30 +02:00
Renovate 1f6c92b497 fix(deps): update dependency debug to v4.4.3 2025-09-13 18:02:31 +00:00
Renovate b6c2971563 chore(deps): update node.js to 2e68a73 2025-09-09 07:00:33 +00:00
argoyle 6d0327b01d fix: downgrade debug package to version 4.4.1
Update the `debug` dependency to version 4.4.1 in both 
`package.json` and `yarn.lock` to resolve compatibility issues 
and ensure stability in the application.
2025-09-09 08:44:28 +02:00
Renovate 46efd38035 fix(deps): update dependency debug to v4.4.2 2025-09-08 14:01:12 +00:00
Renovate bdb9fbd405 chore(deps): update node.js to v22.19.0 2025-08-29 01:11:10 +00:00
Renovate 68851ed10f chore(deps): update node.js to da46023 2025-08-13 00:01:44 +00:00
Renovate f20913a0ba chore(deps): update node.js to v22.18.0 2025-08-04 10:00:30 +00:00
Renovate 338528f219 chore(deps): update node.js to f17eb88 2025-07-22 06:00:00 +00:00
Renovate 172174bd3e chore(deps): update node.js to v22.17.1 2025-07-16 18:59:59 +00:00
Renovate e399262daa chore(deps): update node.js to 40c53e3 2025-07-07 21:57:42 +00:00
Unbound Release d2b3c8ee17 chore(release): prepare for 0.2.0 2025-06-29 14:42:56 +02:00
argoyle d146ab76d8 fix(k8s): update ingress configuration for backend service
Add pathType as Prefix to the ingress path definition. Update the 
backend service reference to use the new format with 'service' 
instead of 'serviceName' for improved clarity and adherence to 
Kubernetes API standards.
2025-06-29 12:59:59 +02:00
Renovate a986a5f261 chore(deps): update dependency prettier to v3.6.2 2025-06-27 02:57:21 +00:00
Renovate f02427b128 chore(deps): update node.js to v22.17.0 2025-06-25 16:57:13 +00:00
Renovate ecab345fc4 chore(deps): update dependency prettier to v3.6.1 2025-06-25 06:58:09 +00:00
Renovate d6c2b9dc78 chore(deps): update dependency prettier to v3.6.0 2025-06-23 02:58:15 +00:00
Renovate 217e131d0b chore(deps): update node.js to 8d23574 2025-06-11 04:05:57 +00:00
Renovate bf28e3955b fix(deps): update dependency serve-favicon to v2.5.1 2025-06-10 10:57:45 +00:00
Renovate 8648217bcc chore(deps): update node.js to v22.16.0 2025-05-22 02:58:06 +00:00
Renovate f8834133b7 chore(deps): update node.js to v22.15.1 2025-05-15 15:58:38 +00:00
Renovate 205fce3829 fix(deps): update dependency debug to v4.4.1 2025-05-13 20:58:02 +00:00
argoyle b42f77f58d feat(ci): add default CI configuration for pipelines
Add a reference to the Defaults.gitlab-ci.yml in the CI pipeline 
configuration. This integration enables standardized settings 
across projects, improving consistency and reducing setup 
time for new pipelines.
2025-05-01 09:24:15 +02:00
Renovate e25bb11dc5 chore(deps): update node.js to ab3dc40 2025-04-29 02:03:53 +00:00
Renovate 77c59422dc chore(deps): update node.js to v22.15.0 2025-04-23 14:58:15 +00:00
Renovate 96ff4d45b3 fix(deps): update dependency nodemon to v3.1.10 2025-04-23 10:03:08 +00:00
Renovate b5bf44c687 chore(deps): update node.js to 4c7ba01 2025-04-08 05:59:41 +00:00
Unbound Release e4df8438cf chore(release): prepare for 0.1.5 2025-04-03 16:39:30 +02:00
argoyle a9fe91bd84 fix: update CORS options for better compatibility
All wildcard paths now need a name.
2025-04-03 16:21:46 +02:00
Renovate b0c639b509 fix(deps): update dependency express to v5 2025-03-31 14:57:50 +00:00
Renovate 03429f2421 fix(deps): update dependency body-parser to v2 2025-03-27 01:58:14 +00:00
Renovate 7b3e192cf0 chore(deps): update node.js to fab5fee 2025-03-18 05:57:45 +00:00
Renovate 8f098d60bd chore(deps): update dependency prettier to v3.5.3 2025-03-03 01:56:56 +00:00
argoyle fa022bb9e0 ci(Dockerfile): update Node.js base image version
Replace Node.js base image with a specific amd64 version 
to ensure compatibility and stability in the build process.
2025-02-26 18:35:42 +01:00
Renovate 004cfc400a chore(deps): update node.js to 2094ac6 2025-02-25 19:57:23 +00:00
Renovate d8f853f544 chore(deps): update node.js to c3ef15a 2025-02-25 16:57:34 +00:00
Renovate 382f04534f chore(deps): update node.js to a279671 2025-02-25 07:56:58 +00:00
Renovate 57e5c08c79 chore(deps): update dependency prettier to v3.5.2 2025-02-22 04:57:16 +00:00
Renovate afbda1fe24 chore(deps): update node.js to cfef443 2025-02-13 20:00:19 +00:00
Renovate 9f043b25e6 chore(deps): update node.js to 7c6b02a 2025-02-13 18:45:39 +00:00
Renovate c18259ac3f chore(deps): update dependency prettier to v3.5.1 2025-02-13 13:58:39 +00:00
Renovate 613abecf2a chore(deps): update dependency prettier to v3.5.0 2025-02-09 11:58:02 +00:00
Renovate 3e98eee171 chore(deps): update node.js to 5145c88 2025-02-05 10:58:52 +00:00
Renovate b4f482d293 chore(deps): update node.js to 3962f5a 2025-02-05 07:57:42 +00:00
Renovate 3ae4d5abd2 chore(deps): update node.js to 469d57f 2025-02-05 04:58:03 +00:00
Renovate 83fd1153d9 chore(deps): update node.js to debe7ff 2025-02-04 10:57:58 +00:00
Unbound Release 060d9529bd chore(release): prepare for 0.1.4 2025-01-24 14:40:22 +00:00
argoyle 8dc80e28cd fix(k8s): update labels to adhere to best practices
Change labels in the deployment and service configurations from the 
custom format to the standard Kubernetes naming convention. This 
improves consistency and compatibility with Kubernetes tools and 
enhances maintainability.
2025-01-24 15:37:46 +01:00
Renovate 94514bc627 chore(deps): update node.js to ae2f3d4 2025-01-23 02:09:01 +00:00
Renovate 34897e0015 chore(deps): update node.js to fa54405 2025-01-15 20:48:01 +00:00
Renovate 86d4176015 chore(deps): update node.js to d77c645 2025-01-15 02:39:17 +00:00
Renovate 68da5aa9a1 chore(deps): update node.js to 4f7fb7f 2025-01-14 08:47:32 +00:00
Renovate f9743ca018 chore(deps): update node.js to 99981c3 2025-01-08 20:07:41 +00:00
Renovate b87a6002fd chore(deps): update node.js to 0e910f4 2024-12-25 23:01:33 +00:00
Unbound Release 36dab87552 chore(release): prepare for 0.1.3 2024-12-18 11:47:43 +00:00
Renovate f959811b68 fix(deps): update dependency nodemon to v3.1.9 2024-12-13 12:07:06 +00:00
Renovate 39588214a6 fix(deps): update dependency debug to v4.4.0 2024-12-08 11:36:49 +00:00
argoyle 8c7b44974f ci: remove Docker service from build stage configuration
Removes the Docker service definition from the build stage in the 
GitLab CI configuration. This change is made to simplify the build 
process and reduce overhead, as the Docker service is no longer 
required for the current build tasks.
2024-12-08 12:08:20 +01:00
Renovate afe64a31f9 fix(deps): update dependency express to v4.21.2 2024-12-06 08:00:14 +00:00
argoyle 45224547d6 refactor(ci): remove unused Docker variables from config
This change eliminates unnecessary Docker variable definitions from the
.gitlab-ci.yml file, simplifying the CI configuration and reducing
complexity in the build process. The removed variables were not in use
and did not contribute to the current build steps, streamlining the
configuration for better maintainability.
2024-12-06 08:56:33 +01:00
Renovate d8aa7d2a89 chore(deps): update dependency prettier to v3.4.2 2024-12-04 14:28:14 +00:00
Renovate 72f3787dc6 chore(deps): update node.js to 35a5dd7 2024-12-04 12:05:14 +00:00
Renovate 2b62a7ed77 chore(deps): update node.js to e605a19 2024-12-04 06:04:00 +00:00
Renovate 9500f5569d chore(deps): update node.js to fd453a2 2024-12-03 21:08:14 +00:00
Renovate 0a1f3eb4e4 chore(deps): update node.js to cb24453 2024-12-03 09:00:06 +00:00
Renovate 7136bda3a8 chore(deps): update dependency prettier to v3.4.1 2024-11-26 14:59:34 +00:00
Renovate 790399edca chore(deps): update dependency prettier to v3.4.0 2024-11-26 06:00:34 +00:00
Renovate 6b1ea50aac chore(deps): update node.js to 5c76d05 2024-11-13 23:57:12 +00:00
Renovate 5edd0801e4 chore(deps): update node.js to 6eb1af3 2024-11-13 14:58:50 +00:00
Renovate 5775cb6006 chore(deps): update node.js to f1f8564 2024-11-13 12:03:56 +00:00
Renovate 11ec56bae9 chore(deps): update node.js to db556c2 2024-11-13 05:58:50 +00:00
Renovate 4ae4966ce9 chore(deps): update node.js to f496dba 2024-11-12 08:58:38 +00:00
argoyle 9f40b06ce9 chore: update renovate configuration to disable auth0mock updates
Adds a package rule in the Renovate configuration to disable updates for the 
`auth0mock` package managed by Kubernetes. This change ensures that 
unwanted updates are prevented, maintaining compatibility and stability 
within the project.
2024-11-04 07:48:33 +01:00
Renovate d300500da7 fix(deps): pin dependencies 2024-11-03 16:38:15 +00:00
Renovate 82f4604e6f chore(deps): update dependency node to v22 2024-10-29 14:57:10 +00:00
Renovate 04e402cdae chore(deps): update node.js to v22 2024-10-29 00:02:34 +00:00
Unbound Release e6e1b1e348 chore(release): prepare for 0.1.2 2024-10-19 11:20:55 +00:00
peter aaab5b2cd5 chore: support issuer in openid-configuration 2024-10-19 12:47:53 +02:00
peter 32af389b7b chore: update Dockerfile to remove warnings 2024-10-19 12:47:29 +02:00
Renovate f60af84b41 chore(deps): update dependency ingress to networking.k8s.io/v1 2024-10-10 13:56:44 +00:00
Renovate 9cb454c32a fix(deps): update dependency express to v4.21.1 2024-10-09 11:01:33 +00:00
Renovate 8f31c1d717 fix(deps): update dependency cookie-parser to v1.4.7 2024-10-08 20:05:45 +00:00
Unbound Release 277b64019c chore(release): prepare for 0.1.1 2024-10-05 19:19:03 +00:00
argoyle 66f83fa70d ci: add release flow 2024-10-05 21:15:49 +02:00
Renovate 01ccab5024 fix(deps): update dependency nodemon to v3.1.7 2024-09-20 17:21:17 +00:00
Renovate 656b10bab9 fix(deps): update dependency nodemon to v3.1.6 2024-09-19 11:00:48 +00:00
Renovate 366113bbf5 fix(deps): update dependency nodemon to v3.1.5 2024-09-17 16:56:03 +00:00
Renovate dde5e91968 fix(deps): update dependency express to v4.21.0 2024-09-11 22:56:16 +00:00
Renovate 21ccdc6809 fix(deps): update dependency express to v4.20.0 2024-09-10 14:38:40 +00:00
Renovate b6b5673ea4 fix(deps): update dependency body-parser to v1.20.3 2024-09-10 01:58:16 +00:00
Renovate b40c5b85e8 fix(deps): update dependency debug to v4.3.7 2024-09-06 02:00:16 +00:00
Renovate 295636e444 fix(deps): update dependency debug to v4.3.6 2024-07-27 10:56:03 +00:00
Renovate 5c7a189bf1 chore(deps): update dependency prettier to v3.3.3 2024-07-13 13:56:00 +00:00
Renovate 60ae679d87 fix(deps): update dependency nodemon to v3.1.4 2024-06-20 10:56:14 +00:00
Renovate bc1dcdc8b4 chore(deps): update dependency prettier to v3.3.2 2024-06-11 07:55:52 +00:00
Renovate 81673c01eb chore(deps): update dependency prettier to v3.3.1 2024-06-05 10:56:12 +00:00
Renovate 0e883190d5 fix(deps): update dependency nodemon to v3.1.3 2024-06-03 16:54:41 +00:00
Renovate bb29d2f2ad chore(deps): update dependency prettier to v3.3.0 2024-06-02 10:25:51 +00:00
Renovate 55374c395d fix(deps): update dependency debug to v4.3.5 2024-05-31 13:54:39 +00:00
Renovate 8d94a8f8af fix(deps): update dependency nodemon to v3.1.2 2024-05-29 10:55:49 +00:00
Renovate 3478ad0e5b fix(deps): update dependency nodemon to v3.1.1 2024-05-25 10:56:38 +00:00
argoyle b9a1c0b285 feat: replace keystore handling with node-jose 2024-04-08 13:10:20 +02:00
Renovate 3382e03305 fix(deps): update dependency express to v4.19.2 2024-03-25 14:55:16 +00:00
Renovate f97c03772b fix(deps): update dependency express to v4.19.1 2024-03-20 23:55:11 +00:00
argoyle 488d3a8b7f feat: support patching of user info 2024-03-11 16:38:52 +01:00
Renovate a42c8c3251 fix(deps): update dependency express to v4.18.3 2024-02-29 11:54:02 +00:00
Renovate 411dd3d222 chore(deps): update dependency node to v20 2024-02-23 22:55:39 +00:00
Renovate acbea4996f Add renovate.json 2024-02-23 22:59:42 +01:00
argoyle e0df0465aa chore(deps): bump nodemon from 3.0.3 to 3.1.0
Bumps [nodemon](https://github.com/remy/nodemon) from 3.0.3 to 3.1.0.
- [Release notes](https://github.com/remy/nodemon/releases)
- [Commits](https://github.com/remy/nodemon/compare/v3.0.3...v3.1.0)
2024-02-23 06:53:00 +00:00
argoyle e7c4bfcdb7 chore(deps-dev): bump prettier from 3.2.4 to 3.2.5
Bumps [prettier](https://github.com/prettier/prettier) from 3.2.4 to 3.2.5.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/3.2.4...3.2.5)
2024-02-04 06:52:38 +00:00
argoyle 041b66a54e chore(deps-dev): bump prettier from 3.2.3 to 3.2.4
Bumps [prettier](https://github.com/prettier/prettier) from 3.2.3 to 3.2.4.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/3.2.3...3.2.4)
2024-01-18 06:52:57 +00:00
argoyle ce5467682e chore(deps-dev): bump prettier from 3.2.2 to 3.2.3
Bumps [prettier](https://github.com/prettier/prettier) from 3.2.2 to 3.2.3.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/3.2.2...3.2.3)
2024-01-17 10:12:35 +00:00
argoyle 860b658fd8 chore(deps): bump nodemon from 3.0.2 to 3.0.3
Bumps [nodemon](https://github.com/remy/nodemon) from 3.0.2 to 3.0.3.
- [Release notes](https://github.com/remy/nodemon/releases)
- [Commits](https://github.com/remy/nodemon/compare/v3.0.2...v3.0.3)
2024-01-17 06:53:12 +00:00
argoyle 5e0922d84f chore(deps-dev): bump prettier from 3.2.1 to 3.2.2
Bumps [prettier](https://github.com/prettier/prettier) from 3.2.1 to 3.2.2.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/3.2.1...3.2.2)
2024-01-14 06:52:40 +00:00
argoyle ce35c1eb50 chore(deps-dev): bump prettier from 3.1.1 to 3.2.1
Bumps [prettier](https://github.com/prettier/prettier) from 3.1.1 to 3.2.1.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/3.1.1...3.2.1)
2024-01-13 06:52:53 +00:00
argoyle 44047f88e4 chore(deps-dev): bump prettier from 3.1.0 to 3.1.1
Bumps [prettier](https://github.com/prettier/prettier) from 3.1.0 to 3.1.1.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/3.1.0...3.1.1)
2023-12-11 06:52:49 +00:00
argoyle a9633e9079 chore(deps): bump nodemon from 3.0.1 to 3.0.2
Bumps [nodemon](https://github.com/remy/nodemon) from 3.0.1 to 3.0.2.
- [Release notes](https://github.com/remy/nodemon/releases)
- [Commits](https://github.com/remy/nodemon/compare/v3.0.1...v3.0.2)
2023-12-02 06:52:34 +00:00
argoyle ef9654adfa chore(deps-dev): bump prettier from 3.0.3 to 3.1.0
Bumps [prettier](https://github.com/prettier/prettier) from 3.0.3 to 3.1.0.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/3.0.3...3.1.0)
2023-11-13 06:52:57 +00:00
argoyle e99a340485 chore(deps): bump jsonwebtoken from 9.0.1 to 9.0.2
Bumps [jsonwebtoken](https://github.com/auth0/node-jsonwebtoken) from 9.0.1 to 9.0.2.
- [Changelog](https://github.com/auth0/node-jsonwebtoken/blob/master/CHANGELOG.md)
- [Commits](https://github.com/auth0/node-jsonwebtoken/compare/v9.0.1...v9.0.2)
2023-08-31 06:53:06 +00:00
argoyle d362203165 chore(deps-dev): bump prettier from 3.0.2 to 3.0.3
Bumps [prettier](https://github.com/prettier/prettier) from 3.0.2 to 3.0.3.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/3.0.2...3.0.3)
2023-08-30 06:52:46 +00:00
argoyle afa1893f1a chore(deps-dev): bump prettier from 3.0.1 to 3.0.2
Bumps [prettier](https://github.com/prettier/prettier) from 3.0.1 to 3.0.2.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/3.0.1...3.0.2)
2023-08-16 06:52:54 +00:00
argoyle 791a29d5b8 chore(deps-dev): bump prettier from 3.0.0 to 3.0.1
Bumps [prettier](https://github.com/prettier/prettier) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/3.0.0...3.0.1)
2023-08-03 06:52:38 +00:00
argoyle d34a738b71 chore(deps): bump nodemon from 3.0.0 to 3.0.1
Bumps [nodemon](https://github.com/remy/nodemon) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/remy/nodemon/releases)
- [Commits](https://github.com/remy/nodemon/compare/v3.0.0...v3.0.1)
2023-07-10 06:52:57 +00:00
argoyle 6e0bb8e1ca chore(deps): bump nodemon from 2.0.22 to 3.0.0
Bumps [nodemon](https://github.com/remy/nodemon) from 2.0.22 to 3.0.0.
- [Release notes](https://github.com/remy/nodemon/releases)
- [Commits](https://github.com/remy/nodemon/compare/v2.0.22...v3.0.0)
2023-07-09 06:52:41 +00:00
argoyle c29f8be74c chore(deps-dev): bump prettier from 2.8.8 to 3.0.0
Bumps [prettier](https://github.com/prettier/prettier) from 2.8.8 to 3.0.0.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/2.8.8...3.0.0)
2023-07-06 08:57:27 +00:00
argoyle 349989bb67 chore(deps): bump jsonwebtoken from 9.0.0 to 9.0.1
Bumps [jsonwebtoken](https://github.com/auth0/node-jsonwebtoken) from 9.0.0 to 9.0.1.
- [Changelog](https://github.com/auth0/node-jsonwebtoken/blob/master/CHANGELOG.md)
- [Commits](https://github.com/auth0/node-jsonwebtoken/commits)
2023-07-06 06:52:31 +00:00
peter d940a04d05 feat: initial users store 2023-06-01 15:00:26 +02:00
peter 192929229f fix: return empty array 2023-05-31 23:24:38 +02:00
peter 397d60361e feat: remember created users 2023-05-31 20:30:37 +02:00
argoyle bb8deb221e feat: add name and email to id token 2023-05-02 12:12:43 +02:00
argoyle a465ae543a chore(deps): bump node from 18 to 20
Bumps node from 18 to 20.
2023-04-24 07:01:58 +00:00
argoyle 8aad0d6308 chore(deps-dev): bump prettier from 2.8.7 to 2.8.8
Bumps [prettier](https://github.com/prettier/prettier) from 2.8.7 to 2.8.8.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/2.8.7...2.8.8)
2023-04-24 06:52:34 +00:00
argoyle 0166537d2f chore(deps-dev): bump prettier from 2.8.6 to 2.8.7
Bumps [prettier](https://github.com/prettier/prettier) from 2.8.6 to 2.8.7.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/2.8.6...2.8.7)
2023-03-27 14:04:03 +00:00
argoyle 9f6e63ea50 chore(deps): bump nodemon from 2.0.21 to 2.0.22
Bumps [nodemon](https://github.com/remy/nodemon) from 2.0.21 to 2.0.22.
- [Release notes](https://github.com/remy/nodemon/releases)
- [Commits](https://github.com/remy/nodemon/compare/v2.0.21...v2.0.22)
2023-03-23 06:52:58 +00:00
argoyle a30cb4b08c chore(deps-dev): bump prettier from 2.8.5 to 2.8.6
Bumps [prettier](https://github.com/prettier/prettier) from 2.8.5 to 2.8.6.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/2.8.5...2.8.6)
2023-03-22 06:52:36 +00:00
argoyle abbc55ea6e chore(deps-dev): bump prettier from 2.8.4 to 2.8.5
Bumps [prettier](https://github.com/prettier/prettier) from 2.8.4 to 2.8.5.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/2.8.4...2.8.5)
2023-03-20 06:52:25 +00:00
argoyle 779d78cdc6 fix: remove session on logout 2023-03-10 15:10:36 +01:00
argoyle cf958ffa85 fix: handle response mode query 2023-03-10 13:50:38 +01:00
argoyle eb579289f0 chore: format code and add prettier 2023-03-10 13:49:33 +01:00
argoyle d1ff4ec278 chore(deps): bump nodemon from 2.0.20 to 2.0.21
Bumps [nodemon](https://github.com/remy/nodemon) from 2.0.20 to 2.0.21.
- [Release notes](https://github.com/remy/nodemon/releases)
- [Commits](https://github.com/remy/nodemon/compare/v2.0.20...v2.0.21)
2023-03-03 06:52:26 +00:00
argoyle 14c2c8f366 chore(deps): bump body-parser from 1.20.1 to 1.20.2
Bumps [body-parser](https://github.com/expressjs/body-parser) from 1.20.1 to 1.20.2.
- [Release notes](https://github.com/expressjs/body-parser/releases)
- [Changelog](https://github.com/expressjs/body-parser/blob/master/HISTORY.md)
- [Commits](https://github.com/expressjs/body-parser/compare/1.20.1...1.20.2)
2023-02-22 06:52:15 +00:00
argoyle 7177ba9516 ci: change Dependabot rebase strategy 2023-02-09 08:09:57 +01:00
argoyle 652483e2de ci: use Docker DinD version from variable 2023-02-09 08:09:35 +01:00
argoyle 4e43361217 fix: update image name to correct location 2022-12-28 20:02:21 +01:00
argoyle 6dda660e78 chore(deps): bump jsonwebtoken from 8.5.1 to 9.0.0
Bumps [jsonwebtoken](https://github.com/auth0/node-jsonwebtoken) from 8.5.1 to 9.0.0.
- [Release notes](https://github.com/auth0/node-jsonwebtoken/releases)
- [Changelog](https://github.com/auth0/node-jsonwebtoken/blob/master/CHANGELOG.md)
- [Commits](https://github.com/auth0/node-jsonwebtoken/compare/v8.5.1...v9.0.0)
2022-12-22 06:52:39 +00:00
argoyle 534772b315 chore(deps): bump express from 4.18.1 to 4.18.2
Bumps [express](https://github.com/expressjs/express) from 4.18.1 to 4.18.2.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.18.1...4.18.2)
2022-10-09 06:52:35 +00:00
argoyle 3bdfe7bf0e chore(deps): bump body-parser from 1.20.0 to 1.20.1
Bumps [body-parser](https://github.com/expressjs/body-parser) from 1.20.0 to 1.20.1.
- [Release notes](https://github.com/expressjs/body-parser/releases)
- [Changelog](https://github.com/expressjs/body-parser/blob/master/HISTORY.md)
- [Commits](https://github.com/expressjs/body-parser/compare/1.20.0...1.20.1)
2022-10-07 06:52:24 +00:00
argoyle edba76d0ab chore(deps): bump nodemon from 2.0.19 to 2.0.20
Bumps [nodemon](https://github.com/remy/nodemon) from 2.0.19 to 2.0.20.
- [Release notes](https://github.com/remy/nodemon/releases)
- [Commits](https://github.com/remy/nodemon/compare/v2.0.19...v2.0.20)
2022-09-17 06:52:27 +00:00
argoyle 5289b4fa23 chore(deps): bump nodemon from 2.0.18 to 2.0.19
Bumps [nodemon](https://github.com/remy/nodemon) from 2.0.18 to 2.0.19.
- [Release notes](https://github.com/remy/nodemon/releases)
- [Commits](https://github.com/remy/nodemon/compare/v2.0.18...v2.0.19)
2022-07-06 06:52:23 +00:00
argoyle eef7168f37 chore(deps): bump nodemon from 2.0.16 to 2.0.18
Bumps [nodemon](https://github.com/remy/nodemon) from 2.0.16 to 2.0.18.
- [Release notes](https://github.com/remy/nodemon/releases)
- [Commits](https://github.com/remy/nodemon/compare/v2.0.16...v2.0.18)
2022-06-24 06:52:29 +00:00
argoyle 596967ff72 Merge branch 'dependabot-npm_and_yarn-normalize-url-4.5.1' into 'main'
chore(deps): [security] bump normalize-url from 4.5.0 to 4.5.1

See merge request unboundsoftware/auth0mock!41
2022-05-02 07:01:46 +00:00
argoyle 5f2385a92f chore(deps): [security] bump normalize-url from 4.5.0 to 4.5.1
Bumps [normalize-url](https://github.com/sindresorhus/normalize-url) from 4.5.0 to 4.5.1. **This update includes a security fix.**
- [Release notes](https://github.com/sindresorhus/normalize-url/releases)
- [Commits](https://github.com/sindresorhus/normalize-url/commits)
2022-05-02 07:00:02 +00:00
argoyle a5653c8ea6 Merge branch 'dependabot-npm_and_yarn-ini-1.3.8' into 'main'
chore(deps): [security] bump ini from 1.3.5 to 1.3.8

See merge request unboundsoftware/auth0mock!39
2022-05-02 06:59:59 +00:00
argoyle 75ec899c99 chore(deps): [security] bump ini from 1.3.5 to 1.3.8
Bumps [ini](https://github.com/npm/ini) from 1.3.5 to 1.3.8. **This update includes a security fix.**
- [Release notes](https://github.com/npm/ini/releases)
- [Changelog](https://github.com/npm/ini/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/ini/compare/v1.3.5...v1.3.8)
2022-05-02 06:58:19 +00:00
argoyle cb31381be2 Merge branch 'dependabot-npm_and_yarn-minimist-1.2.6' into 'main'
chore(deps): [security] bump minimist from 1.2.0 to 1.2.6

See merge request unboundsoftware/auth0mock!40
2022-05-02 06:58:17 +00:00
argoyle 9ee344311a chore(deps): [security] bump minimist from 1.2.0 to 1.2.6
Bumps [minimist](https://github.com/substack/minimist) from 1.2.0 to 1.2.6. **This update includes security fixes.**
- [Release notes](https://github.com/substack/minimist/releases)
- [Commits](https://github.com/substack/minimist/compare/1.2.0...1.2.6)
2022-05-02 06:56:54 +00:00
argoyle d7e3b10e80 Merge branch 'dependabot-npm_and_yarn-ansi-regex-4.1.1' into 'main'
chore(deps): [security] bump ansi-regex from 4.1.0 to 4.1.1

See merge request unboundsoftware/auth0mock!38
2022-05-02 06:56:51 +00:00
argoyle 7b306dd500 chore(deps): [security] bump ansi-regex from 4.1.0 to 4.1.1
Bumps [ansi-regex](https://github.com/chalk/ansi-regex) from 4.1.0 to 4.1.1. **This update includes a security fix.**
- [Release notes](https://github.com/chalk/ansi-regex/releases)
- [Commits](https://github.com/chalk/ansi-regex/compare/v4.1.0...v4.1.1)
2022-05-02 06:52:21 +00:00
argoyle 22d096a2be Merge branch 'dependabot-npm_and_yarn-nodemon-2.0.16' into 'main'
chore(deps): bump nodemon from 2.0.15 to 2.0.16

See merge request unboundsoftware/auth0mock!37
2022-05-01 17:27:31 +00:00
argoyle 858cb96e10 chore(deps): bump nodemon from 2.0.15 to 2.0.16
Bumps [nodemon](https://github.com/remy/nodemon) from 2.0.15 to 2.0.16.
- [Release notes](https://github.com/remy/nodemon/releases)
- [Commits](https://github.com/remy/nodemon/compare/v2.0.15...v2.0.16)
2022-05-01 17:26:04 +00:00
argoyle e8dd55208c Merge branch 'dependabot-npm_and_yarn-express-4.18.1' into 'main'
chore(deps): bump express from 4.18.0 to 4.18.1

See merge request unboundsoftware/auth0mock!36
2022-05-01 17:25:57 +00:00
argoyle dbf5206c1b chore(deps): bump express from 4.18.0 to 4.18.1
Bumps [express](https://github.com/expressjs/express) from 4.18.0 to 4.18.1.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.18.0...4.18.1)
2022-04-30 06:52:18 +00:00
argoyle 4229508bba feat: add support for client id and secret tokens 2022-04-28 09:38:05 +02:00
argoyle b4d5dbe9e3 feat: add dummy-implementation of management API 2022-04-26 16:54:03 +02:00
argoyle b476cf0e36 fix: use correct return-variable 2022-04-26 15:37:19 +02:00
argoyle 37ac46759d fix: make sure thumbPrint is a string 2022-04-26 15:22:53 +02:00
argoyle 424e500d6b chore: format code 2022-04-26 15:22:39 +02:00
argoyle 9539d9b38d Merge branch 'dependabot-npm_and_yarn-express-4.18.0' into 'main'
Chore(deps): bump express from 4.17.3 to 4.18.0

See merge request unboundsoftware/auth0mock!35
2022-04-26 11:01:52 +00:00
argoyle a9ea2dace4 fix: add custom claims to both id and access token 2022-04-26 11:49:19 +02:00
argoyle aad18ad000 feat: add email custom claim 2022-04-26 11:08:19 +02:00
argoyle b009965908 feat: add env-property for default issuer 2022-04-26 09:55:56 +02:00
argoyle 68d3f0df82 Chore(deps): bump express from 4.17.3 to 4.18.0
Bumps [express](https://github.com/expressjs/express) from 4.17.3 to 4.18.0.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.17.3...4.18.0)
2022-04-26 06:52:17 +00:00
19 changed files with 1409 additions and 1242 deletions
+1
View File
@@ -1,2 +1,3 @@
node_modules/
.idea/
.claude/
+4 -9
View File
@@ -1,22 +1,17 @@
include:
- template: 'Workflows/MergeRequest-Pipelines.gitlab-ci.yml'
- project: unboundsoftware/ci-templates
file: Defaults.gitlab-ci.yml
- project: unboundsoftware/ci-templates
file: Release.gitlab-ci.yml
stages:
- build
variables:
DOCKER_HOST: tcp://docker:2376
DOCKER_TLS_CERTDIR: "/certs"
DOCKER_TLS_VERIFY: 1
DOCKER_CERT_PATH: "$DOCKER_TLS_CERTDIR/client"
DOCKER_DRIVER: overlay2
image: buildtool/build-tools:${BUILDTOOLS_VERSION}
build:
stage: build
services:
- docker:dind
script:
- build
- push
-17
View File
@@ -1,17 +0,0 @@
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
version: 2
updates:
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "daily"
open-pull-requests-limit: 20
- package-ecosystem: "docker"
directory: "/"
schedule:
interval: "daily"
open-pull-requests-limit: 20
+1
View File
@@ -0,0 +1 @@
24
+2
View File
@@ -0,0 +1,2 @@
*.yaml
*.yml
+9
View File
@@ -0,0 +1,9 @@
{
"semi": false,
"singleQuote": true,
"trailingComma": "none",
"arrowParens": "always",
"quoteProps": "as-needed",
"bracketSpacing": true,
"bracketSameLine": false
}
+1
View File
@@ -0,0 +1 @@
{"version":"0.3.0"}
+248
View File
@@ -0,0 +1,248 @@
## [0.3.0] - 2025-12-28
### 🚀 Features
- Increase resource limits and improve readiness checks
### 🐛 Bug Fixes
- *(deps)* Update dependency debug to v4.4.2
- Downgrade debug package to version 4.4.1
- *(deps)* Update dependency debug to v4.4.3
- *(deps)* Update dependency nodemon to v3.1.11
- *(deps)* Update dependency body-parser to v2.2.1
- *(deps)* Update dependency express to v5.2.0
- *(deps)* Update dependency express to v5.2.1
- *(deps)* Update dependency jsonwebtoken to v9.0.3
## [0.2.0] - 2025-06-29
### 🚀 Features
- *(ci)* Add default CI configuration for pipelines
### 🐛 Bug Fixes
- *(deps)* Update dependency nodemon to v3.1.10
- *(deps)* Update dependency debug to v4.4.1
- *(deps)* Update dependency serve-favicon to v2.5.1
- *(k8s)* Update ingress configuration for backend service
## [0.1.5] - 2025-04-03
### 🐛 Bug Fixes
- *(deps)* Update dependency body-parser to v2
- *(deps)* Update dependency express to v5
- Update CORS options for better compatibility
### ⚙️ Miscellaneous Tasks
- *(Dockerfile)* Update Node.js base image version
## [0.1.4] - 2025-01-24
### 🐛 Bug Fixes
- *(k8s)* Update labels to adhere to best practices
## [0.1.3] - 2024-12-18
### 🐛 Bug Fixes
- *(deps)* Pin dependencies
- *(deps)* Update dependency express to v4.21.2
- *(deps)* Update dependency debug to v4.4.0
- *(deps)* Update dependency nodemon to v3.1.9
### 🚜 Refactor
- *(ci)* Remove unused Docker variables from config
### ⚙️ Miscellaneous Tasks
- Update renovate configuration to disable auth0mock updates
- Remove Docker service from build stage configuration
## [0.1.2] - 2024-10-19
### 🐛 Bug Fixes
- *(deps)* Update dependency cookie-parser to v1.4.7
- *(deps)* Update dependency express to v4.21.1
### ⚙️ Miscellaneous Tasks
- Update Dockerfile to remove warnings
- Support issuer in openid-configuration
## [0.1.1] - 2024-10-05
### 🐛 Bug Fixes
- *(deps)* Update dependency nodemon to v3.1.1
- *(deps)* Update dependency nodemon to v3.1.2
- *(deps)* Update dependency debug to v4.3.5
- *(deps)* Update dependency nodemon to v3.1.3
- *(deps)* Update dependency nodemon to v3.1.4
- *(deps)* Update dependency debug to v4.3.6
- *(deps)* Update dependency debug to v4.3.7
- *(deps)* Update dependency body-parser to v1.20.3
- *(deps)* Update dependency express to v4.20.0
- *(deps)* Update dependency express to v4.21.0
- *(deps)* Update dependency nodemon to v3.1.5
- *(deps)* Update dependency nodemon to v3.1.6
- *(deps)* Update dependency nodemon to v3.1.7
### ⚙️ Miscellaneous Tasks
- Add release flow
## [0.1.0] - 2024-04-08
### 🚀 Features
- Replace keystore handling with node-jose
### 🐛 Bug Fixes
- *(deps)* Update dependency express to v4.19.1
- *(deps)* Update dependency express to v4.19.2
## [0.0.17] - 2024-03-11
### 🚀 Features
- Support patching of user info
### 🐛 Bug Fixes
- *(deps)* Update dependency express to v4.18.3
## [0.0.16] - 2023-06-01
### 🚀 Features
- Initial users store
## [0.0.15] - 2023-05-31
### 🐛 Bug Fixes
- Return empty array
## [0.0.14] - 2023-05-31
### 🚀 Features
- Remember created users
## [0.0.13] - 2023-05-02
### 🚀 Features
- Add name and email to id token
## [0.0.12] - 2023-03-10
### 🐛 Bug Fixes
- Remove session on logout
## [0.0.11] - 2023-03-10
### 🐛 Bug Fixes
- Update image name to correct location
- Handle response mode query
### ⚙️ Miscellaneous Tasks
- Use Docker DinD version from variable
- Change Dependabot rebase strategy
- Format code and add prettier
## [0.0.9] - 2022-04-28
### 🚀 Features
- Add support for client id and secret tokens
## [0.0.8] - 2022-04-26
### 🚀 Features
- Add dummy-implementation of management API
## [0.0.7] - 2022-04-26
### 🐛 Bug Fixes
- Use correct return-variable
## [0.0.6] - 2022-04-26
### 🐛 Bug Fixes
- Make sure thumbPrint is a string
### 💼 Other
- *(deps)* Bump express from 4.17.3 to 4.18.0
### ⚙️ Miscellaneous Tasks
- Format code
## [0.0.5] - 2022-04-26
### 🐛 Bug Fixes
- Add custom claims to both id and access token
## [0.0.4] - 2022-04-26
### 🚀 Features
- Add email custom claim
## [0.0.3] - 2022-04-26
### 🚀 Features
- Add env-property for default issuer
## [0.0.2] - 2022-04-25
### 💼 Other
- *(deps)* Bump node from 17 to 18
### ⚙️ Miscellaneous Tasks
- Change admin-handling
## [0.0.1] - 2022-04-19
### 🚀 Features
- Initial commit
- Updated to be compatible with Auth0 SPA which uses the 'Authorization Code Grant using Proof Key for Code Exchange (PKCE)' flow
- Add ENV-property for setting admin-role
### 🐛 Bug Fixes
- Use correct envs
- Use commit rather than latest
- Package.json & yarn.lock to reduce vulnerabilities
- Package.json & yarn.lock to reduce vulnerabilities
- Pipeline
### 💼 Other
- *(deps)* Bump nodemon from 2.0.14 to 2.0.15
- *(deps)* Bump cookie-parser from 1.4.5 to 1.4.6
- *(deps)* Bump debug from 4.3.2 to 4.3.3
- *(deps)* Bump body-parser from 1.19.0 to 1.19.1
- *(deps)* Bump express from 4.17.1 to 4.17.2
- *(deps)* Bump node-forge from 0.10.0 to 1.0.0
- *(deps)* Bump node-forge from 1.0.0 to 1.1.0
- *(deps)* Bump node-forge from 1.1.0 to 1.2.0
- *(deps)* Bump node-forge from 1.2.0 to 1.2.1
- *(deps)* Bump body-parser from 1.19.1 to 1.19.2
- *(deps)* Bump https-localhost from 4.7.0 to 4.7.1
- *(deps)* Bump express from 4.17.2 to 4.17.3
- *(deps)* Bump debug from 4.3.3 to 4.3.4
- *(deps)* Bump node-forge from 1.2.1 to 1.3.0
- *(deps)* Bump node-forge from 1.3.0 to 1.3.1
- *(deps)* Bump body-parser from 1.19.2 to 1.20.0
### ⚙️ Miscellaneous Tasks
- Add triggering of acctest
- Add artifacts
- Update to latest build-tools
- Update to latest build-tools
- Add ingress
- Add CI workflows
- Use buildtools version from env
- Add dependabot config
- Remove dependabot-standalone
- Cleanup and remove acctest triggering
+83
View File
@@ -0,0 +1,83 @@
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Project Overview
auth0mock is a Node.js/Express application that simulates an Auth0 authentication server for local development. It provides OAuth 2.0 and OpenID Connect (OIDC) endpoints compatible with the Auth0 API, allowing developers to test authentication flows without connecting to the actual Auth0 service.
## Development Commands
```bash
# Install dependencies
yarn install
# Start production server (port 3333)
yarn start
# Development with auto-reload (nodemon)
yarn dev
# Format code
yarn lintfix
# Check formatting
yarn lint
```
## Architecture
This is a single-file Express application (`app.js`) that implements:
**Authentication Endpoints:**
- `POST /oauth/token` - Token exchange (OAuth 2.0 authorization code flow)
- `GET /authorize` - Authorization endpoint with HTML login form
- `POST /code` - Code generation for PKCE flow
**Discovery Endpoints:**
- `GET /.well-known/openid-configuration` - OIDC discovery document
- `GET /.well-known/jwks.json` - JSON Web Key Set for token verification
**Management API (Auth0-compatible):**
- `GET /api/v2/users-by-email` - Get user by email
- `POST /api/v2/users` - Create user
- `PATCH /api/v2/users/:userid` - Update user
- `POST /api/v2/tickets/password-change` - Password change ticket
**Key Implementation Details:**
- RSA 2048-bit key pair generated at startup using `node-jose`
- In-memory session and user storage (not persistent)
- PKCE support with code challenge verification
- Custom claims for admin (`https://unbound.se/admin`) and email (`https://unbound.se/email`)
## Environment Variables
| Variable | Default | Purpose |
| ------------ | -------------------------- | -------------------------------- |
| `ISSUER` | `localhost:3333` | JWT issuer claim |
| `AUDIENCE` | `https://generic-audience` | JWT audience claim |
| `USERS_FILE` | `./users.json` | Path to initial users JSON file |
| `DEBUG` | (unset) | Debug logging (`app*` to enable) |
## Initial Users
Create a `users.json` file to seed users on startup:
```json
{
"email@test.com": {
"given_name": "John",
"family_name": "Doe",
"user_id": "auth0|email@test.com",
"email": "email@test.com"
}
}
```
## Integration with Shiny
This service is used for local development and acceptance testing of the Shiny platform. The gateway and frontend services are configured to accept tokens signed by this mock server when running locally.
+6 -6
View File
@@ -1,12 +1,12 @@
FROM node:18
ENV AUDIENCE "https://shiny.unbound.se"
ENV ORIGIN_HOST "auth0mock"
ENV ORIGIN "https://auth0mock:3333"
FROM amd64/node:24.12.0@sha256:e8bb5aafe1964147c8344b1ea7698218e3675340407a07a14c49901df97455f6
ENV AUDIENCE="https://shiny.unbound.se"
ENV ORIGIN_HOST="auth0mock"
ENV ORIGIN="https://auth0mock:3333"
EXPOSE 3333
WORKDIR /app
ADD package.json yarn.lock /app/
RUN yarn install --frozen-lockfile
ADD app.js cert.js /app/
ADD *.js /app/
ADD public /app/public
RUN mkdir -p /root/.config
ENTRYPOINT yarn start
ENTRYPOINT ["yarn", "start"]
+33 -12
View File
@@ -3,47 +3,68 @@
> This server helps you to simulate auth0 server locally. So, you are able to use the `/tokeninfo` endpoint to verify your token.
## Getting Started
### Prerequisites
* Install [Node.js](http://nodejs.org)
* on OSX use [homebrew](http://brew.sh) `brew install node`
* on Windows use [chocolatey](https://chocolatey.org/) `choco install nodejs`
### Prerequisites
- Install [Node.js](http://nodejs.org)
- on OSX use [homebrew](http://brew.sh) `brew install node`
- on Windows use [chocolatey](https://chocolatey.org/) `choco install nodejs`
## Installing
* `fork` this repo
* `clone` your fork
* `npm install` to install all dependencies
- `fork` this repo
- `clone` your fork
- `npm install` to install all dependencies
## Running the app
After you have installed all dependencies you can now run the app.
Run `npm start` to start a local server.
The port will be displayed to you as `http://0.0.0.0:3333` (or if you prefer IPv6, if you're using `express` server, then it's `http://[::1]:3333/`).
## Initial users
Adding a JSON file with the following layout will populate the users store when starting:
```json
{
"email@test.com": {
"given_name": "name",
"family_name": "family",
"user_id": "id"
}
}
```
By default `./users.json` will be read but this can be overridden by setting the environment variable `USERS_FILE`.
## API Documentation
### `GET` /token/:username
Returns a token with the given user(username). This token can the be used by your application.
### `POST` /tokeninfo
Returns the data of the token like the username.
**Body**
```
{
"id_token": "your-token-kjasdf6ashasl..."
}
```
## Related Projects
* [express-typescript-boilerplate](https://github.com/w3tecch/express-typescript-boilerplate) - Boilerplate for an restful express-apllication written in TypeScript
* [express-graphql-typescript-boilerplate](https://github.com/w3tecch/express-graphql-typescript-boilerplate) - A starter kit for building amazing GraphQL API's with TypeScript and express by @w3tecch
- [express-typescript-boilerplate](https://github.com/w3tecch/express-typescript-boilerplate) - Boilerplate for an restful express-apllication written in TypeScript
- [express-graphql-typescript-boilerplate](https://github.com/w3tecch/express-graphql-typescript-boilerplate) - A starter kit for building amazing GraphQL API's with TypeScript and express by @w3tecch
## License
[MIT](/LICENSE)
---
Made with ♥ by Gery Hirschfeld ([@GeryHirschfeld1](https://twitter.com/GeryHirschfeld1))
Made with ♥ by Gery Hirschfeld ([@GeryHirschfeld1](https://twitter.com/GeryHirschfeld1))
+272 -109
View File
@@ -8,18 +8,24 @@ const Debug = require('debug')
const path = require('path')
const cors = require('cors')
const bodyParser = require('body-parser')
const jose = require('node-jose')
const favicon = require('serve-favicon')
const cert = require('./cert')
const initialUsers = require('./users')
let issuer = 'localhost:3333'
let jwksOrigin = `https://${issuer}/`
const issuer = process.env.ISSUER || 'localhost:3333'
const jwksOrigin = `https://${issuer}/`
const audience = process.env.AUDIENCE || 'https://generic-audience'
const adminCustomClaim = process.env.ADMIN_CUSTOM_CLAIM || 'https://unbound.se/admin'
const adminCustomClaim =
process.env.ADMIN_CUSTOM_CLAIM || 'https://unbound.se/admin'
const emailCustomClaim =
process.env.EMAIL_CUSTOM_CLAIM || 'https://unbound.se/email'
const debug = Debug('app')
let { privateKey, certDer, thumbprint, exponent, modulus } = cert(jwksOrigin)
const keyStore = jose.JWK.createKeyStore()
keyStore.generate('RSA', 2048, { alg: 'RS256', use: 'sig' })
// let { privateKey, certDer, thumbprint, exponent, modulus } = cert(jwksOrigin)
const users = initialUsers(process.env.USERS_FILE || './users.json')
const sessions = {}
const challenges = {}
@@ -27,77 +33,116 @@ const corsOpts = (req, cb) => {
cb(null, { origin: req.headers.origin })
}
const addCustomClaims = (email, customClaims, token) => {
const emailClaim = {}
emailClaim[emailCustomClaim] = email
return [...customClaims, emailClaim].reduce((acc, claim) => {
return {
...acc,
...claim
}
}, token)
}
const signToken = async (token) => {
const [key] = keyStore.all({ use: 'sig' })
const opt = { compact: true, jwk: key, fields: { typ: 'jwt' } }
return await jose.JWS.createSign(opt, key)
.update(JSON.stringify(token))
.final()
}
// Configure our small auth0-mock-server
app.options('*', cors(corsOpts))
app
.options('*all', cors(corsOpts))
.use(cors())
.use(bodyParser.json())
.use(bodyParser.json({ strict: false }))
.use(bodyParser.urlencoded({ extended: true }))
.use(cookieParser())
.use(express.static(`${__dirname}/public`))
.use(favicon(path.join(__dirname, 'public', 'favicon.ico')))
// This route can be used to generate a valid jwt-token.
app.post('/oauth/token', (req, res) => {
const code = req.body.code
const session = sessions[code]
app.post('/oauth/token', async (req, res) => {
const date = Math.floor(Date.now() / 1000)
if (req.body.grant_type === 'client_credentials' && req.body.client_id) {
const accessToken = await signToken({
iss: jwksOrigin,
aud: [audience],
sub: 'auth0|management',
iat: date,
exp: date + 7200,
azp: req.body.client_id
})
let date = Math.floor(Date.now() / 1000)
let accessToken = jwt.sign(Buffer.from(JSON.stringify({
iss: jwksOrigin,
aud: [audience],
sub: 'auth0|' + session.email,
iat: date,
exp: date + 7200,
azp: session.clientId
})), privateKey, {
algorithm: 'RS256',
keyid: thumbprint
})
const idToken = await signToken({
iss: jwksOrigin,
aud: req.body.client_id,
sub: 'auth0|management',
iat: date,
exp: date + 7200,
azp: req.body.client_id,
name: 'Management API'
})
const token = session.customClaims.reduce((acc, claim) => {
return {
...acc,
...claim
}
}, {
iss: jwksOrigin,
aud: session.clientId,
nonce: session.nonce,
sub: 'auth0|' + session.email,
iat: date,
exp: date + 7200,
azp: session.clientId,
name: 'Example Person',
picture: 'https://cdn.playbuzz.com/cdn/5458360f-32ea-460e-a707-1a2d26760558/70bda687-cb84-4756-8a44-8cf735ed87b3.jpg'
})
let idToken = jwt.sign(Buffer.from(JSON.stringify(token)), privateKey, {
algorithm: 'RS256',
keyid: thumbprint
})
debug('Signed token for management API')
debug('Signed token for ' + session.email)
// res.json({ token });
res.json({
access_token: accessToken,
id_token: idToken,
scope: 'openid%20profile%20email',
expires_in: 7200,
token_type: 'Bearer'
})
} else if (req.body.code) {
const code = req.body.code
const session = sessions[code]
const accessToken = await signToken(
addCustomClaims(session.email, session.customClaims, {
iss: jwksOrigin,
aud: [audience],
sub: 'auth0|' + session.email,
iat: date,
exp: date + 7200,
azp: session.clientId
})
)
res.json({
access_token: accessToken,
id_token: idToken,
scope: 'openid%20profile%20email',
expires_in: 7200,
token_type: 'Bearer'
})
})
const idToken = await signToken(
addCustomClaims(session.email, session.customClaims, {
iss: jwksOrigin,
aud: session.clientId,
nonce: session.nonce,
sub: 'auth0|' + session.email,
iat: date,
exp: date + 7200,
azp: session.clientId,
name: 'Example Person',
given_name: 'Example',
family_name: 'Person',
email: session.email,
picture:
'https://cdn.playbuzz.com/cdn/5458360f-32ea-460e-a707-1a2d26760558/70bda687-cb84-4756-8a44-8cf735ed87b3.jpg'
})
)
// This route can be used to generate a valid jwt-token.
app.get('/token/:email', (req, res) => {
if (!req.params.email) {
debug('No user was given!')
return res.status(400).send('user is missing')
debug('Signed token for ' + session.email)
// Clean up session and challenge after successful token exchange
delete sessions[code]
delete challenges[code]
res.json({
access_token: accessToken,
id_token: idToken,
scope: 'openid%20profile%20email',
expires_in: 7200,
token_type: 'Bearer'
})
} else {
res.status(401)
res.send('Missing client_id or client_secret')
}
const token = jwt.sign({
user_id: 'auth0|' + req.params.email
}, privateKey)
debug('Signed token for ' + req.params.email)
res.json({ token })
})
app.post('/code', (req, res) => {
@@ -120,7 +165,9 @@ app.post('/code', (req, res) => {
codeChallenge: req.body.codeChallenge,
customClaims: [claim]
}
res.redirect(`${req.body.redirect}?domain=${issuer}&code=${code}&state=${encodeURIComponent(state)}`)
res.redirect(
`${req.body.redirect}?code=${code}&state=${encodeURIComponent(state)}`
)
})
app.get('/authorize', (req, res) => {
@@ -131,13 +178,26 @@ app.get('/authorize', (req, res) => {
const codeChallenge = req.query.code_challenge
const prompt = req.query.prompt
const responseMode = req.query.response_mode
if (responseMode === 'query') {
const code = req.cookies['auth0']
const session = sessions[code]
if (session) {
session.nonce = nonce
session.state = state
session.codeChallenge = codeChallenge
sessions[codeChallenge] = session
res.redirect(`${redirect}?code=${codeChallenge}&state=${state}`)
return
}
}
if (prompt === 'none' && responseMode === 'web_message') {
const code = req.cookies['auth0']
const session = sessions[code]
session.nonce = nonce
session.state = state
session.codeChallenge = codeChallenge
res.send(`
if (session) {
session.nonce = nonce
session.state = state
session.codeChallenge = codeChallenge
res.send(`
<!DOCTYPE html>
<html>
<body>
@@ -155,13 +215,16 @@ app.get('/authorize', (req, res) => {
</script>
</body>
</html>`)
} else {
res.cookie('auth0', codeChallenge, {
sameSite: 'None',
secure: true,
httpOnly: true
})
res.send(`
return
}
}
res.cookie('auth0', codeChallenge, {
sameSite: 'None',
secure: true,
httpOnly: true
})
res.send(`
<html lang='en'>
<head>
<meta charset='utf-8'>
@@ -202,35 +265,97 @@ app.get('/authorize', (req, res) => {
</body>
</html>
`)
}
})
app.get('/userinfo', (req, res) => {
res.contentType('application/json').send(JSON.stringify({ picture: 'https://cdn.playbuzz.com/cdn/5458360f-32ea-460e-a707-1a2d26760558/70bda687-cb84-4756-8a44-8cf735ed87b3.jpg' }))
res.contentType('application/json').send(
JSON.stringify({
picture:
'https://cdn.playbuzz.com/cdn/5458360f-32ea-460e-a707-1a2d26760558/70bda687-cb84-4756-8a44-8cf735ed87b3.jpg'
})
)
})
app.get('/v2/logout', (req, res) => {
res.redirect(`${req.query.returnTo}?domain=${issuer}`)
const code = req.cookies['auth0']
const session = sessions[code]
if (session) {
delete sessions[code]
}
res.redirect(req.query.returnTo)
})
app.get('/.well-known/openid-configuration', (req, res) => {
debug('Fetching OpenID configuration')
res.contentType('application/json').send(
JSON.stringify({
issuer: `${jwksOrigin}`,
authorization_endpoint: `${jwksOrigin}authorize`,
token_endpoint: `${jwksOrigin}oauth/token`,
token_endpoint_auth_methods_supported: [
'client_secret_basic',
'private_key_jwt'
],
token_endpoint_auth_signing_alg_values_supported: ['RS256'],
userinfo_endpoint: `${jwksOrigin}userinfo`,
check_session_iframe: `${jwksOrigin}check_session`,
end_session_endpoint: `${jwksOrigin}end_session`,
jwks_uri: `${jwksOrigin}.well-known/jwks.json`,
registration_endpoint: `${jwksOrigin}register`,
scopes_supported: [
'openid',
'profile',
'email',
'address',
'phone',
'offline_access'
],
response_types_supported: [
'code',
'code id_token',
'id_token',
'id_token token'
],
acr_values_supported: [],
subject_types_supported: ['public', 'pairwise'],
userinfo_signing_alg_values_supported: ['RS256', 'ES256', 'HS256'],
userinfo_encryption_alg_values_supported: ['RSA-OAEP-256', 'A128KW'],
userinfo_encryption_enc_values_supported: ['A128CBC-HS256', 'A128GCM'],
id_token_signing_alg_values_supported: ['RS256', 'ES256', 'HS256'],
id_token_encryption_alg_values_supported: ['RSA-OAEP-256', 'A128KW'],
id_token_encryption_enc_values_supported: ['A128CBC-HS256', 'A128GCM'],
request_object_signing_alg_values_supported: ['none', 'RS256', 'ES256'],
display_values_supported: ['page', 'popup'],
claim_types_supported: ['normal', 'distributed'],
claims_supported: [
'sub',
'iss',
'auth_time',
'acr',
'name',
'given_name',
'family_name',
'nickname',
'profile',
'picture',
'website',
'email',
'email_verified',
'locale',
'zoneinfo',
'https://unbound.se/email',
'https://unbound.se/admin'
],
claims_parameter_supported: true,
service_documentation: 'http://auth0/',
ui_locales_supported: ['en-US']
})
)
})
app.get('/.well-known/jwks.json', (req, res) => {
res
.contentType('application/json')
.send(JSON.stringify({
keys: [
{
alg: 'RS256',
// e: 'AQAB',
e: exponent,
kid: thumbprint,
kty: 'RSA',
n: modulus,
use: 'sig',
x5c: [certDer],
x5t: thumbprint
}
]
}))
debug('Fetching JWKS')
res.contentType('application/json').send(keyStore.toJSON())
})
// This route returns the inside of a jwt-token. Your main application
@@ -250,21 +375,59 @@ app.post('/tokeninfo', (req, res) => {
}
})
app.post('/issuer', (req, res) => {
if (!req.body.issuer) {
debug('No issuer given in the body!')
return res.status(401).send('missing issuer')
app.get('/api/v2/users-by-email', (req, res) => {
const email = req.query.email
console.log('users', users)
const user = users[email]
if (user === undefined) {
res.json([])
} else {
res.json([user])
}
issuer = req.body.issuer
jwksOrigin = `https://${issuer}/`
const { privateKey: key, certDer: der, thumbPrint: thumb, exponent: exp, modulus: mod } = cert(jwksOrigin)
privateKey = key
certDer = der
thumbprint = thumb
exponent = exp
modulus = mod
debug('Issuer set to ' + req.body.issuer)
res.send('ok')
})
app.patch('/api/v2/users/:userid', (req, res) => {
const email = req.params.userid.slice(6)
console.log('patching user with id', email)
const user = users[email]
if (!user) {
res.sendStatus(404)
return
}
users[email] = {
email: email,
given_name: req.body.given_name || user.given_name,
family_name: req.body.family_name || user.family_name,
user_id: email,
picture: req.body.picture || user.picture
}
res.json({
user_id: `auth0|${email}`
})
})
app.post('/api/v2/users', (req, res) => {
const email = req.body.email
users[email] = {
email: email,
given_name: 'Given',
family_name: 'Last',
user_id: email
}
res.json({
user_id: `auth0|${email}`
})
})
app.post('/api/v2/tickets/password-change', (req, res) => {
res.json({
ticket: `https://some-url`
})
})
app.use(function (req, res, next) {
console.log('404', req.path)
res.status(404).send('error: 404 Not Found ' + req.path)
})
app.listen(3333, () => {
-132
View File
@@ -1,132 +0,0 @@
const base64url = require('base64-url');
const createHash = require('crypto').createHash;
const forge = require('node-forge');
const NodeRSA = require('node-rsa');
const PRIVATE_KEY_PEM =
'-----BEGIN RSA PRIVATE KEY-----\n' +
'MIIEpAIBAAKCAQEApoocpO3bbUF6o8eyJlQCfwLahEsunWdVF++yOEyKu4Lp1j0m\n' +
'2j/P7iHOtxBAkjdM2X2oW3qO1mR0sIFefqnm93g0q2nRuYEoS+W3o6X50wjOVm8f\n' +
'r/tLqELzy5BoET0AQl7Axp1DNsb0HNOBcoIBt+xVY4I+k6uXJJJMzbgvahAgSLZ9\n' +
'RW0Z0WT+dCHZpZUj0nLxNXIPdci65Bw6IognqXHP6AwKZXpT6jCzjzq9uyHxVcud\n' +
'qw6j0kQw48/A5A6AN5fIVy1cKnd0sKdqRX1NUqVoiOrO4jaDB1IdLD+YmRE/JjOH\n' +
'sWIMElYCPxKqnsNo6VCslGX/ziinArHhqRBrHwIDAQABAoIBAHAdmpsN5iLvafjI\n' +
'f45+EBAhg6p8Uq102zx6CakNHniN8Y5hLL7RJtJRwDBNqKrGv93LUoQDRhXfGw+Y\n' +
'iF0NVIhVTF/5pU8VPGOcCr0JB96ilwZpWRPIQW7NZAMu/GBeiMYls/IB/TXrSnv9\n' +
'h6/nBfEkEXgkPqx7YA0m0L3NuV3U1lCY/LhBJY4Xvi0uRdqu3tTHXftehuPwC4UB\n' +
'42eJTWv/qLeOlkCdUUV4f7+dNaES88Vdhj6lu/BusnNhvnwHQik4dNwzPCGeP8NV\n' +
'5gaesWiNWFZuTURGKk1B65p5LzNPjsVT50RDuW8FnSZwIvNcohrX9ILPsmg/t0Kr\n' +
'ozcOksECgYEA4XWOK4twx5RG162zveRHqU7H9RBWSz7/PzM9Eob9vx/tC/b1YqBR\n' +
'VShk23vje19eNiYWAkxcpobIP4ek/0ZT8nHkJg8wl+J/hnXADcvwv2dKnoFnm5pn\n' +
'rTBUKc8R3wrSlAV8XQAtdnxsfFa5AOQJ6WFVI9AdfH3Iw8XZk4gIIPMCgYEAvRlY\n' +
'y80HnR3kwMOqY488V1qk41dmfNqa+YDL+zkPF1HhHI9VnK5BQuI7lyKJl984KwHu\n' +
'0gbwx3Wp4XkD5JUboEpl5LnaLsjEWemjTaQWdvJHPd5wkJ0m/jRQ2YeT4g2gFu4y\n' +
'Pi/pWkrzhnzQQVAmOdAm5Kj27LtDzp0lspw3uCUCgYEAw2YdvFGSgfZZW4147QeO\n' +
'sAbON+9bysUjdMPUl10VR/LEgA0d6MdnFfX3S13Y7tDdlvJ1OrKxzcWcgaru7ism\n' +
'kEXy5KVfiRNNUNx2gb6RvWEpA6zFfc9ZMXlkSAPlyjfX/1+tw/Bmdn0pjK2gk0wP\n' +
'5wtrPameFInzWPD9O+a2nM8CgYBZ6UhgNs+M9B7FTQOiLQPa4R2PfwobCXIwef4D\n' +
'KIE1bFgl1T02r2AWZi1BUkmr7ZXuVQ/xyx0HKbopm/mu4PruvxEtrPTB0/IQcleU\n' +
'XhXUXqRjFXXePOrCaaubkqxNCn95B67aBLvmk8awxn3a4DocuQ0VIgWuT+gQwIWh\n' +
'JEgWBQKBgQDKD+2Yh1/rUzu15lbPH0JSpozUinuFjePieR/4n+5CtEUxWJ2f0WeK\n' +
's4XWWf2qgUccjpiGju2UR840mgWROoZ8BfSTd5tg1F7bo0HMgu2hu0RIRpZcRhsA\n' +
'Cd0GrJvf1t0QIdDCXAy+RpgU1SLSq4Q6Lomc0WA5C5nBw9RKEUOV9A==\n' +
'-----END RSA PRIVATE KEY-----\n';
const PUBLIC_KEY_PEM =
'-----BEGIN PUBLIC KEY-----\n' +
'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApoocpO3bbUF6o8eyJlQC\n' +
'fwLahEsunWdVF++yOEyKu4Lp1j0m2j/P7iHOtxBAkjdM2X2oW3qO1mR0sIFefqnm\n' +
'93g0q2nRuYEoS+W3o6X50wjOVm8fr/tLqELzy5BoET0AQl7Axp1DNsb0HNOBcoIB\n' +
't+xVY4I+k6uXJJJMzbgvahAgSLZ9RW0Z0WT+dCHZpZUj0nLxNXIPdci65Bw6Iogn\n' +
'qXHP6AwKZXpT6jCzjzq9uyHxVcudqw6j0kQw48/A5A6AN5fIVy1cKnd0sKdqRX1N\n' +
'UqVoiOrO4jaDB1IdLD+YmRE/JjOHsWIMElYCPxKqnsNo6VCslGX/ziinArHhqRBr\n' +
'HwIDAQAB\n' +
'-----END PUBLIC KEY-----\n';
const createCertificate = ({
publicKey,
privateKey,
jwksOrigin,
}) => {
const cert = forge.pki.createCertificate();
cert.publicKey = publicKey;
cert.serialNumber = '123';
const attrs = [
{
name: 'commonName',
value: `${jwksOrigin}`,
},
];
cert.validity.notBefore = new Date();
cert.validity.notAfter = new Date();
cert.validity.notAfter.setFullYear(cert.validity.notBefore.getFullYear() + 1);
cert.setSubject(attrs);
cert.setIssuer(attrs);
cert.sign(privateKey);
return forge.pki.certificateToPem(cert)
};
const getCertThumbprint = (certificate) => {
const shasum = createHash('sha1');
const der = Buffer.from(certificate).toString('binary');
shasum.update(der);
return shasum.digest('base64')
};
const createKeyPair = () => {
const privateKey = forge.pki.privateKeyFromPem(PRIVATE_KEY_PEM);
const publicKey = forge.pki.publicKeyFromPem(PUBLIC_KEY_PEM);
return {
privateKey,
publicKey,
}
};
const bnToB64 = (bn) => {
let hex = BigInt(bn).toString(16);
if (hex.length % 2) {
hex = '0' + hex;
}
const bin = [];
let i = 0;
let d;
let b;
while (i < hex.length) {
d = parseInt(hex.slice(i, i + 2), 16);
b = String.fromCharCode(d);
bin.push(b);
i += 2;
}
return Buffer.from(bin.join(''), 'binary').toString('base64');
};
const setup = (jwksOrigin) => {
const {privateKey, publicKey} = createKeyPair();
const certPem = createCertificate({
jwksOrigin,
privateKey,
publicKey,
});
const certDer = forge.util.encode64(
forge.asn1
.toDer(forge.pki.certificateToAsn1(forge.pki.certificateFromPem(certPem)))
.getBytes()
);
const thumbprint = base64url.encode(getCertThumbprint(certDer));
const helperKey = new NodeRSA();
helperKey.importKey(forge.pki.privateKeyToPem(privateKey));
const {n: modulus, e: exponent} = helperKey.exportKey('components');
return {
privateKey: forge.pki.privateKeyToPem(privateKey),
certDer: certDer,
thumbPrint: thumbprint,
exponent: bnToB64(exponent),
modulus: modulus.toString('base64')
}
};
module.exports = setup;
+14 -8
View File
@@ -6,21 +6,21 @@ spec:
replicas: 1
selector:
matchLabels:
app: auth0mock
app.kubernetes.io/name: auth0mock
template:
metadata:
labels:
app: auth0mock
app.kubernetes.io/name: auth0mock
spec:
containers:
- name: auth0mock
image: registry.gitlab.com/unboundsoftware/shiny/auth0mock:${COMMIT}
image: registry.gitlab.com/unboundsoftware/auth0mock:${COMMIT}
imagePullPolicy: "IfNotPresent"
resources:
requests:
memory: 200Mi
memory: 256Mi
limits:
memory: 300Mi
memory: 512Mi
ports:
- containerPort: 3333
env:
@@ -29,17 +29,23 @@ spec:
readinessProbe:
httpGet:
port: 3333
path: .well-known/jwks.json
path: /.well-known/jwks.json
livenessProbe:
httpGet:
port: 3333
path: /.well-known/jwks.json
initialDelaySeconds: 10
periodSeconds: 30
---
apiVersion: v1
kind: Service
metadata:
name: auth0mock
labels:
app: auth0mock
app.kubernetes.io/name: auth0mock
spec:
ports:
- port: 3333
selector:
app: auth0mock
app.kubernetes.io/name: auth0mock
type: ClusterIP
+6 -3
View File
@@ -1,4 +1,4 @@
apiVersion: networking.k8s.io/v1beta1
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: auth0-ingress
@@ -11,9 +11,12 @@ spec:
http:
paths:
- path: /
pathType: Prefix
backend:
serviceName: auth0mock
servicePort: 3333
service:
name: auth0mock
port:
number: 3333
tls:
- hosts:
- auth0
+17 -14
View File
@@ -6,23 +6,26 @@
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"dev": "nodemon ./app.js",
"start": "node ./app.js"
"start": "node ./app.js",
"lint:prettier": "prettier --check .",
"lint": "yarn lint:prettier",
"lintfix": "prettier --write --list-different ."
},
"author": "",
"license": "MIT",
"dependencies": {
"base64-url": "^2.3.3",
"body-parser": "^1.20.0",
"buffer": "^6.0.3",
"cookie-parser": "^1.4.6",
"cors": "^2.8.3",
"debug": "^4.3.4",
"express": "^4.17.3",
"https-localhost": "^4.7.1",
"jsonwebtoken": "^8.5.1",
"node-forge": "^1.3.1",
"node-rsa": "^1.1.1",
"nodemon": "^2.0.15",
"serve-favicon": "^2.4.2"
"body-parser": "2.2.1",
"cookie-parser": "1.4.7",
"cors": "2.8.5",
"debug": "4.4.3",
"express": "5.2.1",
"https-localhost": "4.7.1",
"jsonwebtoken": "9.0.3",
"node-jose": "2.2.0",
"nodemon": "3.1.11",
"serve-favicon": "2.5.1"
},
"devDependencies": {
"prettier": "3.7.4"
}
}
+17
View File
@@ -0,0 +1,17 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"config:recommended"
],
"packageRules": [
{
"matchManagers": [
"kubernetes"
],
"matchPackageNames": [
"registry.gitlab.com/unboundsoftware/auth0mock"
],
"enabled": false
}
]
}
+18
View File
@@ -0,0 +1,18 @@
const fs = require('fs')
const setup = (usersFile) => {
let users = {}
if (fs.existsSync(usersFile)) {
console.log(`initial users file "${usersFile}" exists, reading`)
const read = fs.readFileSync(usersFile, { encoding: 'utf8', flag: 'r' })
users = JSON.parse(read)
for (let key of Object.keys(users)) {
users[key] = { ...users[key], email: key }
}
console.log('users:', users)
} else {
console.log(`initial users file "${usersFile}" missing`)
}
return users
}
module.exports = setup
+677 -932
View File
File diff suppressed because it is too large Load Diff