Compare commits

...

111 Commits

Author SHA1 Message Date
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
16 changed files with 961 additions and 1140 deletions
+2 -9
View File
@@ -1,22 +1,15 @@
include:
- template: 'Workflows/MergeRequest-Pipelines.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 @@
22
+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
}
+229
View File
@@ -0,0 +1,229 @@
# Changelog
All notable changes to this project will be documented in this file.
## [0.1.3] - 2024-12-13
### 🐛 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
<!-- generated by git-cliff -->
+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 node:22@sha256:35a5dd72bcac4bce43266408b58a02be6ff0b6098ffa6f5435aeea980a8951d7
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))
+263 -96
View File
@@ -8,19 +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 = process.env.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 emailCustomClaim = process.env.EMAIL_CUSTOM_CLAIM || 'https://unbound.se/email'
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 = {}
@@ -37,61 +42,103 @@ const addCustomClaims = (email, customClaims, token) => {
...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('*', 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(addCustomClaims(session.email, session.customClaims, {
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'
})
let idToken = jwt.sign(Buffer.from(JSON.stringify(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',
picture: 'https://cdn.playbuzz.com/cdn/5458360f-32ea-460e-a707-1a2d26760558/70bda687-cb84-4756-8a44-8cf735ed87b3.jpg'
}))), 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'
})
)
debug('Signed token for ' + session.email)
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')
}
})
// This route can be used to generate a valid jwt-token.
@@ -100,9 +147,12 @@ app.get('/token/:email', (req, res) => {
debug('No user was given!')
return res.status(400).send('user is missing')
}
const token = jwt.sign({
user_id: 'auth0|' + req.params.email
}, privateKey)
const token = jwt.sign(
{
user_id: 'auth0|' + req.params.email
},
privateKey
)
debug('Signed token for ' + req.params.email)
res.json({ token })
})
@@ -127,7 +177,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) => {
@@ -138,13 +190,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>
@@ -162,13 +227,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'>
@@ -209,35 +277,96 @@ 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
@@ -257,21 +386,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.toString(),
exponent: bnToB64(exponent),
modulus: modulus.toString('base64')
}
}
module.exports = setup
+1 -1
View File
@@ -14,7 +14,7 @@ spec:
spec:
containers:
- name: auth0mock
image: registry.gitlab.com/unboundsoftware/shiny/auth0mock:${COMMIT}
image: registry.gitlab.com/unboundsoftware/auth0mock:${COMMIT}
imagePullPolicy: "IfNotPresent"
resources:
requests:
+1 -1
View File
@@ -1,4 +1,4 @@
apiVersion: networking.k8s.io/v1beta1
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: auth0-ingress
+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.18.0",
"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": "1.20.3",
"cookie-parser": "1.4.7",
"cors": "2.8.5",
"debug": "4.4.0",
"express": "4.21.2",
"https-localhost": "4.7.1",
"jsonwebtoken": "9.0.2",
"node-jose": "2.2.0",
"nodemon": "3.1.9",
"serve-favicon": "2.5.0"
},
"devDependencies": {
"prettier": "3.4.2"
}
}
+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
+362 -852
View File
File diff suppressed because it is too large Load Diff