@nocobase/plugin-idp-oauth 2.1.0-alpha.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (451) hide show
  1. package/LICENSE.txt +107 -0
  2. package/README.md +14 -0
  3. package/build.config.ts +46 -0
  4. package/client.d.ts +2 -0
  5. package/client.js +1 -0
  6. package/dist/client/ErrorPage.d.ts +11 -0
  7. package/dist/client/InteractionPage.d.ts +11 -0
  8. package/dist/client/index.d.ts +9 -0
  9. package/dist/client/index.js +10 -0
  10. package/dist/client/locale.d.ts +10 -0
  11. package/dist/client/models/index.d.ts +11 -0
  12. package/dist/client/plugin.d.ts +13 -0
  13. package/dist/externalVersion.js +18 -0
  14. package/dist/index.d.ts +10 -0
  15. package/dist/index.js +48 -0
  16. package/dist/locale/en-US.json +1 -0
  17. package/dist/locale/zh-CN.json +1 -0
  18. package/dist/node_modules/eta/LICENSE +7 -0
  19. package/dist/node_modules/eta/README.md +185 -0
  20. package/dist/node_modules/eta/dist/core.d.ts +179 -0
  21. package/dist/node_modules/eta/dist/core.d.ts.map +1 -0
  22. package/dist/node_modules/eta/dist/core.js +42 -0
  23. package/dist/node_modules/eta/dist/core.js.map +1 -0
  24. package/dist/node_modules/eta/dist/index.cjs +542 -0
  25. package/dist/node_modules/eta/dist/index.cjs.map +1 -0
  26. package/dist/node_modules/eta/dist/index.d.cts +187 -0
  27. package/dist/node_modules/eta/dist/index.d.cts.map +1 -0
  28. package/dist/node_modules/eta/dist/index.d.mts +187 -0
  29. package/dist/node_modules/eta/dist/index.d.mts.map +1 -0
  30. package/dist/node_modules/eta/dist/index.mjs +512 -0
  31. package/dist/node_modules/eta/dist/index.mjs.map +1 -0
  32. package/dist/node_modules/eta/package.json +75 -0
  33. package/dist/node_modules/jose/LICENSE.md +21 -0
  34. package/dist/node_modules/jose/README.md +153 -0
  35. package/dist/node_modules/jose/dist/types/index.d.ts +55 -0
  36. package/dist/node_modules/jose/dist/types/jwe/compact/decrypt.d.ts +31 -0
  37. package/dist/node_modules/jose/dist/types/jwe/compact/encrypt.d.ts +65 -0
  38. package/dist/node_modules/jose/dist/types/jwe/flattened/decrypt.d.ts +31 -0
  39. package/dist/node_modules/jose/dist/types/jwe/flattened/encrypt.d.ts +83 -0
  40. package/dist/node_modules/jose/dist/types/jwe/general/decrypt.d.ts +38 -0
  41. package/dist/node_modules/jose/dist/types/jwe/general/encrypt.d.ts +74 -0
  42. package/dist/node_modules/jose/dist/types/jwk/embedded.d.ts +17 -0
  43. package/dist/node_modules/jose/dist/types/jwk/thumbprint.d.ts +32 -0
  44. package/dist/node_modules/jose/dist/types/jwks/local.d.ts +29 -0
  45. package/dist/node_modules/jose/dist/types/jwks/remote.d.ts +237 -0
  46. package/dist/node_modules/jose/dist/types/jws/compact/sign.d.ts +36 -0
  47. package/dist/node_modules/jose/dist/types/jws/compact/verify.d.ts +33 -0
  48. package/dist/node_modules/jose/dist/types/jws/flattened/sign.d.ts +42 -0
  49. package/dist/node_modules/jose/dist/types/jws/flattened/verify.d.ts +33 -0
  50. package/dist/node_modules/jose/dist/types/jws/general/sign.d.ts +53 -0
  51. package/dist/node_modules/jose/dist/types/jws/general/verify.d.ts +41 -0
  52. package/dist/node_modules/jose/dist/types/jwt/decrypt.d.ts +35 -0
  53. package/dist/node_modules/jose/dist/types/jwt/encrypt.d.ts +91 -0
  54. package/dist/node_modules/jose/dist/types/jwt/sign.d.ts +43 -0
  55. package/dist/node_modules/jose/dist/types/jwt/unsecured.d.ts +43 -0
  56. package/dist/node_modules/jose/dist/types/jwt/verify.d.ts +37 -0
  57. package/dist/node_modules/jose/dist/types/key/export.d.ts +33 -0
  58. package/dist/node_modules/jose/dist/types/key/generate_key_pair.d.ts +47 -0
  59. package/dist/node_modules/jose/dist/types/key/generate_secret.d.ts +35 -0
  60. package/dist/node_modules/jose/dist/types/key/import.d.ts +83 -0
  61. package/dist/node_modules/jose/dist/types/types.d.ts +852 -0
  62. package/dist/node_modules/jose/dist/types/util/base64url.d.ts +9 -0
  63. package/dist/node_modules/jose/dist/types/util/decode_jwt.d.ts +18 -0
  64. package/dist/node_modules/jose/dist/types/util/decode_protected_header.d.ts +17 -0
  65. package/dist/node_modules/jose/dist/types/util/errors.d.ts +213 -0
  66. package/dist/node_modules/jose/dist/webapi/index.js +32 -0
  67. package/dist/node_modules/jose/dist/webapi/jwe/compact/decrypt.js +27 -0
  68. package/dist/node_modules/jose/dist/webapi/jwe/compact/encrypt.js +27 -0
  69. package/dist/node_modules/jose/dist/webapi/jwe/flattened/decrypt.js +155 -0
  70. package/dist/node_modules/jose/dist/webapi/jwe/flattened/encrypt.js +165 -0
  71. package/dist/node_modules/jose/dist/webapi/jwe/general/decrypt.js +31 -0
  72. package/dist/node_modules/jose/dist/webapi/jwe/general/encrypt.js +182 -0
  73. package/dist/node_modules/jose/dist/webapi/jwk/embedded.js +17 -0
  74. package/dist/node_modules/jose/dist/webapi/jwk/thumbprint.js +68 -0
  75. package/dist/node_modules/jose/dist/webapi/jwks/local.js +119 -0
  76. package/dist/node_modules/jose/dist/webapi/jwks/remote.js +179 -0
  77. package/dist/node_modules/jose/dist/webapi/jws/compact/sign.js +18 -0
  78. package/dist/node_modules/jose/dist/webapi/jws/compact/verify.js +21 -0
  79. package/dist/node_modules/jose/dist/webapi/jws/flattened/sign.js +89 -0
  80. package/dist/node_modules/jose/dist/webapi/jws/flattened/verify.js +110 -0
  81. package/dist/node_modules/jose/dist/webapi/jws/general/sign.js +70 -0
  82. package/dist/node_modules/jose/dist/webapi/jws/general/verify.js +24 -0
  83. package/dist/node_modules/jose/dist/webapi/jwt/decrypt.js +23 -0
  84. package/dist/node_modules/jose/dist/webapi/jwt/encrypt.js +101 -0
  85. package/dist/node_modules/jose/dist/webapi/jwt/sign.js +52 -0
  86. package/dist/node_modules/jose/dist/webapi/jwt/unsecured.js +63 -0
  87. package/dist/node_modules/jose/dist/webapi/jwt/verify.js +15 -0
  88. package/dist/node_modules/jose/dist/webapi/key/export.js +11 -0
  89. package/dist/node_modules/jose/dist/webapi/key/generate_key_pair.js +97 -0
  90. package/dist/node_modules/jose/dist/webapi/key/generate_secret.js +40 -0
  91. package/dist/node_modules/jose/dist/webapi/key/import.js +57 -0
  92. package/dist/node_modules/jose/dist/webapi/lib/aesgcmkw.js +15 -0
  93. package/dist/node_modules/jose/dist/webapi/lib/aeskw.js +25 -0
  94. package/dist/node_modules/jose/dist/webapi/lib/asn1.js +243 -0
  95. package/dist/node_modules/jose/dist/webapi/lib/base64.js +22 -0
  96. package/dist/node_modules/jose/dist/webapi/lib/buffer_utils.js +43 -0
  97. package/dist/node_modules/jose/dist/webapi/lib/check_key_type.js +122 -0
  98. package/dist/node_modules/jose/dist/webapi/lib/content_encryption.js +217 -0
  99. package/dist/node_modules/jose/dist/webapi/lib/crypto_key.js +136 -0
  100. package/dist/node_modules/jose/dist/webapi/lib/deflate.js +44 -0
  101. package/dist/node_modules/jose/dist/webapi/lib/ecdhes.js +52 -0
  102. package/dist/node_modules/jose/dist/webapi/lib/helpers.js +19 -0
  103. package/dist/node_modules/jose/dist/webapi/lib/invalid_key_input.js +27 -0
  104. package/dist/node_modules/jose/dist/webapi/lib/is_key_like.js +17 -0
  105. package/dist/node_modules/jose/dist/webapi/lib/jwk_to_key.js +107 -0
  106. package/dist/node_modules/jose/dist/webapi/lib/jwt_claims_set.js +238 -0
  107. package/dist/node_modules/jose/dist/webapi/lib/key_management.js +186 -0
  108. package/dist/node_modules/jose/dist/webapi/lib/key_to_jwk.js +31 -0
  109. package/dist/node_modules/jose/dist/webapi/lib/normalize_key.js +166 -0
  110. package/dist/node_modules/jose/dist/webapi/lib/pbes2kw.js +39 -0
  111. package/dist/node_modules/jose/dist/webapi/lib/rsaes.js +24 -0
  112. package/dist/node_modules/jose/dist/webapi/lib/signing.js +68 -0
  113. package/dist/node_modules/jose/dist/webapi/lib/type_checks.js +40 -0
  114. package/dist/node_modules/jose/dist/webapi/lib/validate_algorithms.js +10 -0
  115. package/dist/node_modules/jose/dist/webapi/lib/validate_crit.js +33 -0
  116. package/dist/node_modules/jose/dist/webapi/util/base64url.js +30 -0
  117. package/dist/node_modules/jose/dist/webapi/util/decode_jwt.js +32 -0
  118. package/dist/node_modules/jose/dist/webapi/util/decode_protected_header.js +34 -0
  119. package/dist/node_modules/jose/dist/webapi/util/errors.js +99 -0
  120. package/dist/node_modules/jose/package.json +200 -0
  121. package/dist/node_modules/light-my-request/.gitattributes +2 -0
  122. package/dist/node_modules/light-my-request/.github/dependabot.yml +13 -0
  123. package/dist/node_modules/light-my-request/.github/stale.yml +21 -0
  124. package/dist/node_modules/light-my-request/.github/workflows/benchmark.yml +30 -0
  125. package/dist/node_modules/light-my-request/.github/workflows/ci.yml +23 -0
  126. package/dist/node_modules/light-my-request/LICENSE +32 -0
  127. package/dist/node_modules/light-my-request/benchmark/benchmark.js +164 -0
  128. package/dist/node_modules/light-my-request/build/build-validation.js +100 -0
  129. package/dist/node_modules/light-my-request/eslint.config.js +9 -0
  130. package/dist/node_modules/light-my-request/index.js +2 -0
  131. package/dist/node_modules/light-my-request/lib/config-validator.js +919 -0
  132. package/dist/node_modules/light-my-request/lib/form-data.js +79 -0
  133. package/dist/node_modules/light-my-request/lib/parse-url.js +47 -0
  134. package/dist/node_modules/light-my-request/lib/request.js +290 -0
  135. package/dist/node_modules/light-my-request/lib/response.js +240 -0
  136. package/dist/node_modules/light-my-request/node_modules/process-warning/.gitattributes +2 -0
  137. package/dist/node_modules/light-my-request/node_modules/process-warning/.github/dependabot.yml +13 -0
  138. package/dist/node_modules/light-my-request/node_modules/process-warning/.github/workflows/ci.yml +24 -0
  139. package/dist/node_modules/light-my-request/node_modules/process-warning/.taprc +2 -0
  140. package/dist/node_modules/light-my-request/node_modules/process-warning/benchmarks/warn.js +25 -0
  141. package/dist/node_modules/light-my-request/node_modules/process-warning/eslint.config.js +6 -0
  142. package/dist/node_modules/light-my-request/node_modules/process-warning/examples/example.js +11 -0
  143. package/dist/node_modules/light-my-request/node_modules/process-warning/index.js +124 -0
  144. package/dist/node_modules/light-my-request/node_modules/process-warning/package.json +73 -0
  145. package/dist/node_modules/light-my-request/node_modules/process-warning/test/emit-interpolated-string.test.js +29 -0
  146. package/dist/node_modules/light-my-request/node_modules/process-warning/test/emit-once-only.test.js +28 -0
  147. package/dist/node_modules/light-my-request/node_modules/process-warning/test/emit-reset.test.js +36 -0
  148. package/dist/node_modules/light-my-request/node_modules/process-warning/test/emit-set.test.js +30 -0
  149. package/dist/node_modules/light-my-request/node_modules/process-warning/test/emit-unlimited.test.js +37 -0
  150. package/dist/node_modules/light-my-request/node_modules/process-warning/test/index.test.js +99 -0
  151. package/dist/node_modules/light-my-request/node_modules/process-warning/test/issue-88.test.js +33 -0
  152. package/dist/node_modules/light-my-request/node_modules/process-warning/test/jest.test.js +22 -0
  153. package/dist/node_modules/light-my-request/node_modules/process-warning/test/no-warnings.test.js +80 -0
  154. package/dist/node_modules/light-my-request/node_modules/process-warning/types/index.d.ts +37 -0
  155. package/dist/node_modules/light-my-request/node_modules/process-warning/types/index.test-d.ts +36 -0
  156. package/dist/node_modules/light-my-request/package.json +1 -0
  157. package/dist/node_modules/light-my-request/test/async-await.test.js +55 -0
  158. package/dist/node_modules/light-my-request/test/index.test.js +2316 -0
  159. package/dist/node_modules/light-my-request/test/request.test.js +16 -0
  160. package/dist/node_modules/light-my-request/test/response.test.js +19 -0
  161. package/dist/node_modules/light-my-request/test/stream.test.js +359 -0
  162. package/dist/node_modules/light-my-request/types/index.d.ts +128 -0
  163. package/dist/node_modules/light-my-request/types/index.test-d.ts +149 -0
  164. package/dist/node_modules/oidc-provider/LICENSE.md +21 -0
  165. package/dist/node_modules/oidc-provider/README.md +174 -0
  166. package/dist/node_modules/oidc-provider/lib/actions/authorization/assign_claims.js +28 -0
  167. package/dist/node_modules/oidc-provider/lib/actions/authorization/assign_defaults.js +17 -0
  168. package/dist/node_modules/oidc-provider/lib/actions/authorization/authenticated_client_id.js +6 -0
  169. package/dist/node_modules/oidc-provider/lib/actions/authorization/backchannel_request_remap_errors.js +17 -0
  170. package/dist/node_modules/oidc-provider/lib/actions/authorization/backchannel_request_response.js +41 -0
  171. package/dist/node_modules/oidc-provider/lib/actions/authorization/check_ciba_context.js +12 -0
  172. package/dist/node_modules/oidc-provider/lib/actions/authorization/check_claims.js +68 -0
  173. package/dist/node_modules/oidc-provider/lib/actions/authorization/check_client.js +21 -0
  174. package/dist/node_modules/oidc-provider/lib/actions/authorization/check_client_grant_type.js +21 -0
  175. package/dist/node_modules/oidc-provider/lib/actions/authorization/check_dpop_jkt.js +35 -0
  176. package/dist/node_modules/oidc-provider/lib/actions/authorization/check_extra_params.js +18 -0
  177. package/dist/node_modules/oidc-provider/lib/actions/authorization/check_id_token_hint.js +23 -0
  178. package/dist/node_modules/oidc-provider/lib/actions/authorization/check_max_age.js +25 -0
  179. package/dist/node_modules/oidc-provider/lib/actions/authorization/check_openid_scope.js +47 -0
  180. package/dist/node_modules/oidc-provider/lib/actions/authorization/check_pkce.js +41 -0
  181. package/dist/node_modules/oidc-provider/lib/actions/authorization/check_prompt.js +25 -0
  182. package/dist/node_modules/oidc-provider/lib/actions/authorization/check_redirect_uri.js +41 -0
  183. package/dist/node_modules/oidc-provider/lib/actions/authorization/check_requested_expiry.js +16 -0
  184. package/dist/node_modules/oidc-provider/lib/actions/authorization/check_response_mode.js +54 -0
  185. package/dist/node_modules/oidc-provider/lib/actions/authorization/check_response_type.js +26 -0
  186. package/dist/node_modules/oidc-provider/lib/actions/authorization/check_scope.js +53 -0
  187. package/dist/node_modules/oidc-provider/lib/actions/authorization/ciba_load_account.js +58 -0
  188. package/dist/node_modules/oidc-provider/lib/actions/authorization/ciba_required.js +13 -0
  189. package/dist/node_modules/oidc-provider/lib/actions/authorization/device_authorization_response.js +31 -0
  190. package/dist/node_modules/oidc-provider/lib/actions/authorization/device_user_flow.js +31 -0
  191. package/dist/node_modules/oidc-provider/lib/actions/authorization/device_user_flow_errors.js +37 -0
  192. package/dist/node_modules/oidc-provider/lib/actions/authorization/device_user_flow_response.js +55 -0
  193. package/dist/node_modules/oidc-provider/lib/actions/authorization/index.js +200 -0
  194. package/dist/node_modules/oidc-provider/lib/actions/authorization/interaction_emit.js +9 -0
  195. package/dist/node_modules/oidc-provider/lib/actions/authorization/interactions.js +149 -0
  196. package/dist/node_modules/oidc-provider/lib/actions/authorization/load_account.js +15 -0
  197. package/dist/node_modules/oidc-provider/lib/actions/authorization/load_grant.js +29 -0
  198. package/dist/node_modules/oidc-provider/lib/actions/authorization/load_pushed_authorization_request.js +36 -0
  199. package/dist/node_modules/oidc-provider/lib/actions/authorization/oauth_required.js +11 -0
  200. package/dist/node_modules/oidc-provider/lib/actions/authorization/oidc_required.js +27 -0
  201. package/dist/node_modules/oidc-provider/lib/actions/authorization/one_redirect_uri_clients.js +20 -0
  202. package/dist/node_modules/oidc-provider/lib/actions/authorization/process_request_object.js +214 -0
  203. package/dist/node_modules/oidc-provider/lib/actions/authorization/pushed_authorization_request_remap_errors.js +17 -0
  204. package/dist/node_modules/oidc-provider/lib/actions/authorization/pushed_authorization_request_response.js +65 -0
  205. package/dist/node_modules/oidc-provider/lib/actions/authorization/reject_registration.js +12 -0
  206. package/dist/node_modules/oidc-provider/lib/actions/authorization/reject_request_and_uri.js +12 -0
  207. package/dist/node_modules/oidc-provider/lib/actions/authorization/reject_unsupported.js +33 -0
  208. package/dist/node_modules/oidc-provider/lib/actions/authorization/respond.js +46 -0
  209. package/dist/node_modules/oidc-provider/lib/actions/authorization/resume.js +111 -0
  210. package/dist/node_modules/oidc-provider/lib/actions/authorization/strip_outside_jar_params.js +19 -0
  211. package/dist/node_modules/oidc-provider/lib/actions/authorization/unsupported_rar.js +9 -0
  212. package/dist/node_modules/oidc-provider/lib/actions/challenge.js +22 -0
  213. package/dist/node_modules/oidc-provider/lib/actions/code_verification.js +122 -0
  214. package/dist/node_modules/oidc-provider/lib/actions/discovery.js +151 -0
  215. package/dist/node_modules/oidc-provider/lib/actions/end_session.js +222 -0
  216. package/dist/node_modules/oidc-provider/lib/actions/grants/authorization_code.js +144 -0
  217. package/dist/node_modules/oidc-provider/lib/actions/grants/ciba.js +127 -0
  218. package/dist/node_modules/oidc-provider/lib/actions/grants/client_credentials.js +79 -0
  219. package/dist/node_modules/oidc-provider/lib/actions/grants/device_code.js +125 -0
  220. package/dist/node_modules/oidc-provider/lib/actions/grants/index.js +7 -0
  221. package/dist/node_modules/oidc-provider/lib/actions/grants/refresh_token.js +229 -0
  222. package/dist/node_modules/oidc-provider/lib/actions/index.js +25 -0
  223. package/dist/node_modules/oidc-provider/lib/actions/interaction.js +150 -0
  224. package/dist/node_modules/oidc-provider/lib/actions/introspection.js +164 -0
  225. package/dist/node_modules/oidc-provider/lib/actions/jwks.js +7 -0
  226. package/dist/node_modules/oidc-provider/lib/actions/registration.js +274 -0
  227. package/dist/node_modules/oidc-provider/lib/actions/revocation.js +81 -0
  228. package/dist/node_modules/oidc-provider/lib/actions/token.js +74 -0
  229. package/dist/node_modules/oidc-provider/lib/actions/userinfo.js +183 -0
  230. package/dist/node_modules/oidc-provider/lib/adapters/memory_adapter.js +95 -0
  231. package/dist/node_modules/oidc-provider/lib/consts/client_attributes.js +211 -0
  232. package/dist/node_modules/oidc-provider/lib/consts/dev_keystore.js +18 -0
  233. package/dist/node_modules/oidc-provider/lib/consts/index.js +13 -0
  234. package/dist/node_modules/oidc-provider/lib/consts/jwa.js +47 -0
  235. package/dist/node_modules/oidc-provider/lib/consts/non_rejectable_claims.js +1 -0
  236. package/dist/node_modules/oidc-provider/lib/consts/param_list.js +23 -0
  237. package/dist/node_modules/oidc-provider/lib/helpers/_/camel_case.js +1 -0
  238. package/dist/node_modules/oidc-provider/lib/helpers/_/defaults.js +28 -0
  239. package/dist/node_modules/oidc-provider/lib/helpers/_/difference.js +1 -0
  240. package/dist/node_modules/oidc-provider/lib/helpers/_/is_plain_object.js +1 -0
  241. package/dist/node_modules/oidc-provider/lib/helpers/_/map_keys.js +9 -0
  242. package/dist/node_modules/oidc-provider/lib/helpers/_/merge.js +25 -0
  243. package/dist/node_modules/oidc-provider/lib/helpers/_/omit_by.js +11 -0
  244. package/dist/node_modules/oidc-provider/lib/helpers/_/pick.js +10 -0
  245. package/dist/node_modules/oidc-provider/lib/helpers/_/pick_by.js +10 -0
  246. package/dist/node_modules/oidc-provider/lib/helpers/_/remove.js +9 -0
  247. package/dist/node_modules/oidc-provider/lib/helpers/_/set.js +18 -0
  248. package/dist/node_modules/oidc-provider/lib/helpers/_/snake_case.js +1 -0
  249. package/dist/node_modules/oidc-provider/lib/helpers/_/upper_first.js +1 -0
  250. package/dist/node_modules/oidc-provider/lib/helpers/account_claims.js +6 -0
  251. package/dist/node_modules/oidc-provider/lib/helpers/add_client.js +14 -0
  252. package/dist/node_modules/oidc-provider/lib/helpers/als.js +3 -0
  253. package/dist/node_modules/oidc-provider/lib/helpers/append_www_authenticate.js +9 -0
  254. package/dist/node_modules/oidc-provider/lib/helpers/attention.js +23 -0
  255. package/dist/node_modules/oidc-provider/lib/helpers/base64url.js +11 -0
  256. package/dist/node_modules/oidc-provider/lib/helpers/certificate_thumbprint.js +15 -0
  257. package/dist/node_modules/oidc-provider/lib/helpers/challenge.js +111 -0
  258. package/dist/node_modules/oidc-provider/lib/helpers/check_attest_binding.js +10 -0
  259. package/dist/node_modules/oidc-provider/lib/helpers/claims.js +79 -0
  260. package/dist/node_modules/oidc-provider/lib/helpers/client_id_metadata_document.js +198 -0
  261. package/dist/node_modules/oidc-provider/lib/helpers/client_schema.js +700 -0
  262. package/dist/node_modules/oidc-provider/lib/helpers/combined_scope.js +17 -0
  263. package/dist/node_modules/oidc-provider/lib/helpers/configuration.js +544 -0
  264. package/dist/node_modules/oidc-provider/lib/helpers/constant_equals.js +20 -0
  265. package/dist/node_modules/oidc-provider/lib/helpers/defaults.js +3510 -0
  266. package/dist/node_modules/oidc-provider/lib/helpers/epoch_time.js +1 -0
  267. package/dist/node_modules/oidc-provider/lib/helpers/err_out.js +17 -0
  268. package/dist/node_modules/oidc-provider/lib/helpers/errors.js +161 -0
  269. package/dist/node_modules/oidc-provider/lib/helpers/features.js +51 -0
  270. package/dist/node_modules/oidc-provider/lib/helpers/fetch_body_check.js +25 -0
  271. package/dist/node_modules/oidc-provider/lib/helpers/fetch_request.js +221 -0
  272. package/dist/node_modules/oidc-provider/lib/helpers/filter_claims.js +16 -0
  273. package/dist/node_modules/oidc-provider/lib/helpers/formatters.js +24 -0
  274. package/dist/node_modules/oidc-provider/lib/helpers/grant_common.js +214 -0
  275. package/dist/node_modules/oidc-provider/lib/helpers/html_safe.js +19 -0
  276. package/dist/node_modules/oidc-provider/lib/helpers/initialize_adapter.js +24 -0
  277. package/dist/node_modules/oidc-provider/lib/helpers/initialize_app.js +243 -0
  278. package/dist/node_modules/oidc-provider/lib/helpers/initialize_clients.js +24 -0
  279. package/dist/node_modules/oidc-provider/lib/helpers/initialize_keystore.js +310 -0
  280. package/dist/node_modules/oidc-provider/lib/helpers/interaction_policy/check.js +21 -0
  281. package/dist/node_modules/oidc-provider/lib/helpers/interaction_policy/index.js +43 -0
  282. package/dist/node_modules/oidc-provider/lib/helpers/interaction_policy/prompt.js +95 -0
  283. package/dist/node_modules/oidc-provider/lib/helpers/interaction_policy/prompts/consent.js +105 -0
  284. package/dist/node_modules/oidc-provider/lib/helpers/interaction_policy/prompts/login.js +162 -0
  285. package/dist/node_modules/oidc-provider/lib/helpers/jwt.js +211 -0
  286. package/dist/node_modules/oidc-provider/lib/helpers/keystore.js +301 -0
  287. package/dist/node_modules/oidc-provider/lib/helpers/nanoid.js +5 -0
  288. package/dist/node_modules/oidc-provider/lib/helpers/oidc_context.js +284 -0
  289. package/dist/node_modules/oidc-provider/lib/helpers/params.js +27 -0
  290. package/dist/node_modules/oidc-provider/lib/helpers/pkce.js +30 -0
  291. package/dist/node_modules/oidc-provider/lib/helpers/pkce_format.js +17 -0
  292. package/dist/node_modules/oidc-provider/lib/helpers/process_response_types.js +202 -0
  293. package/dist/node_modules/oidc-provider/lib/helpers/re_render_errors.js +39 -0
  294. package/dist/node_modules/oidc-provider/lib/helpers/redirect_uri.js +16 -0
  295. package/dist/node_modules/oidc-provider/lib/helpers/resolve_resource.js +33 -0
  296. package/dist/node_modules/oidc-provider/lib/helpers/resolve_response_mode.js +7 -0
  297. package/dist/node_modules/oidc-provider/lib/helpers/resource_server.js +20 -0
  298. package/dist/node_modules/oidc-provider/lib/helpers/revoke.js +27 -0
  299. package/dist/node_modules/oidc-provider/lib/helpers/script_src_sha.js +21 -0
  300. package/dist/node_modules/oidc-provider/lib/helpers/sector_identifier.js +19 -0
  301. package/dist/node_modules/oidc-provider/lib/helpers/sector_validate.js +55 -0
  302. package/dist/node_modules/oidc-provider/lib/helpers/set_rt_bindings.js +21 -0
  303. package/dist/node_modules/oidc-provider/lib/helpers/token_find.js +51 -0
  304. package/dist/node_modules/oidc-provider/lib/helpers/type_validators.js +8 -0
  305. package/dist/node_modules/oidc-provider/lib/helpers/user_code_form.js +19 -0
  306. package/dist/node_modules/oidc-provider/lib/helpers/user_codes.js +38 -0
  307. package/dist/node_modules/oidc-provider/lib/helpers/valid_url.js +8 -0
  308. package/dist/node_modules/oidc-provider/lib/helpers/validate_dpop.js +129 -0
  309. package/dist/node_modules/oidc-provider/lib/helpers/validate_presence.js +17 -0
  310. package/dist/node_modules/oidc-provider/lib/helpers/weak_cache.js +11 -0
  311. package/dist/node_modules/oidc-provider/lib/index.js +21 -0
  312. package/dist/node_modules/oidc-provider/lib/models/access_token.js +31 -0
  313. package/dist/node_modules/oidc-provider/lib/models/authorization_code.js +27 -0
  314. package/dist/node_modules/oidc-provider/lib/models/backchannel_authentication_request.js +26 -0
  315. package/dist/node_modules/oidc-provider/lib/models/base_model.js +141 -0
  316. package/dist/node_modules/oidc-provider/lib/models/base_token.js +86 -0
  317. package/dist/node_modules/oidc-provider/lib/models/client.js +593 -0
  318. package/dist/node_modules/oidc-provider/lib/models/client_credentials.js +19 -0
  319. package/dist/node_modules/oidc-provider/lib/models/device_code.js +44 -0
  320. package/dist/node_modules/oidc-provider/lib/models/formats/dynamic.js +21 -0
  321. package/dist/node_modules/oidc-provider/lib/models/formats/index.js +14 -0
  322. package/dist/node_modules/oidc-provider/lib/models/formats/jwt.js +198 -0
  323. package/dist/node_modules/oidc-provider/lib/models/formats/opaque.js +58 -0
  324. package/dist/node_modules/oidc-provider/lib/models/grant.js +243 -0
  325. package/dist/node_modules/oidc-provider/lib/models/id_token.js +271 -0
  326. package/dist/node_modules/oidc-provider/lib/models/index.js +37 -0
  327. package/dist/node_modules/oidc-provider/lib/models/initial_access_token.js +12 -0
  328. package/dist/node_modules/oidc-provider/lib/models/interaction.js +73 -0
  329. package/dist/node_modules/oidc-provider/lib/models/mixins/apply.js +4 -0
  330. package/dist/node_modules/oidc-provider/lib/models/mixins/consumable.js +17 -0
  331. package/dist/node_modules/oidc-provider/lib/models/mixins/has_format.js +46 -0
  332. package/dist/node_modules/oidc-provider/lib/models/mixins/has_grant_id.js +12 -0
  333. package/dist/node_modules/oidc-provider/lib/models/mixins/has_grant_type.js +8 -0
  334. package/dist/node_modules/oidc-provider/lib/models/mixins/has_policies.js +38 -0
  335. package/dist/node_modules/oidc-provider/lib/models/mixins/is_attestation_constrained.js +15 -0
  336. package/dist/node_modules/oidc-provider/lib/models/mixins/is_sender_constrained.js +50 -0
  337. package/dist/node_modules/oidc-provider/lib/models/mixins/is_session_bound.js +38 -0
  338. package/dist/node_modules/oidc-provider/lib/models/mixins/set_audience.js +21 -0
  339. package/dist/node_modules/oidc-provider/lib/models/mixins/stores_auth.js +16 -0
  340. package/dist/node_modules/oidc-provider/lib/models/mixins/stores_pkce.js +9 -0
  341. package/dist/node_modules/oidc-provider/lib/models/pushed_authorization_request.js +21 -0
  342. package/dist/node_modules/oidc-provider/lib/models/refresh_token.js +47 -0
  343. package/dist/node_modules/oidc-provider/lib/models/registration_access_token.js +8 -0
  344. package/dist/node_modules/oidc-provider/lib/models/replay_detection.js +31 -0
  345. package/dist/node_modules/oidc-provider/lib/models/session.js +192 -0
  346. package/dist/node_modules/oidc-provider/lib/provider.js +453 -0
  347. package/dist/node_modules/oidc-provider/lib/response_modes/form_post.js +36 -0
  348. package/dist/node_modules/oidc-provider/lib/response_modes/fragment.js +7 -0
  349. package/dist/node_modules/oidc-provider/lib/response_modes/index.js +15 -0
  350. package/dist/node_modules/oidc-provider/lib/response_modes/jwt.js +43 -0
  351. package/dist/node_modules/oidc-provider/lib/response_modes/query.js +7 -0
  352. package/dist/node_modules/oidc-provider/lib/response_modes/web_message.js +55 -0
  353. package/dist/node_modules/oidc-provider/lib/shared/assemble_params.js +7 -0
  354. package/dist/node_modules/oidc-provider/lib/shared/attest_client_auth.js +111 -0
  355. package/dist/node_modules/oidc-provider/lib/shared/authorization_error_handler.js +104 -0
  356. package/dist/node_modules/oidc-provider/lib/shared/check_rar.js +75 -0
  357. package/dist/node_modules/oidc-provider/lib/shared/check_resource.js +77 -0
  358. package/dist/node_modules/oidc-provider/lib/shared/client_auth.js +263 -0
  359. package/dist/node_modules/oidc-provider/lib/shared/conditional_body.js +9 -0
  360. package/dist/node_modules/oidc-provider/lib/shared/cors.js +49 -0
  361. package/dist/node_modules/oidc-provider/lib/shared/error_handler.js +59 -0
  362. package/dist/node_modules/oidc-provider/lib/shared/jwt_client_auth.js +79 -0
  363. package/dist/node_modules/oidc-provider/lib/shared/no_cache.js +4 -0
  364. package/dist/node_modules/oidc-provider/lib/shared/reject_dupes.js +45 -0
  365. package/dist/node_modules/oidc-provider/lib/shared/reject_structured_tokens.js +18 -0
  366. package/dist/node_modules/oidc-provider/lib/shared/selective_body.js +60 -0
  367. package/dist/node_modules/oidc-provider/lib/shared/session.js +68 -0
  368. package/dist/node_modules/oidc-provider/lib/shared/set_www_authenticate_header.js +52 -0
  369. package/dist/node_modules/oidc-provider/lib/views/index.js +22 -0
  370. package/dist/node_modules/oidc-provider/lib/views/interaction.js +171 -0
  371. package/dist/node_modules/oidc-provider/lib/views/layout.js +237 -0
  372. package/dist/node_modules/oidc-provider/lib/views/login.js +43 -0
  373. package/dist/node_modules/oidc-provider/node_modules/@koa/router/LICENSE +21 -0
  374. package/dist/node_modules/oidc-provider/node_modules/@koa/router/README.md +1370 -0
  375. package/dist/node_modules/oidc-provider/node_modules/@koa/router/dist/index.d.mts +1003 -0
  376. package/dist/node_modules/oidc-provider/node_modules/@koa/router/dist/index.d.ts +1003 -0
  377. package/dist/node_modules/oidc-provider/node_modules/@koa/router/dist/index.js +1616 -0
  378. package/dist/node_modules/oidc-provider/node_modules/@koa/router/dist/index.mjs +1573 -0
  379. package/dist/node_modules/oidc-provider/node_modules/@koa/router/package.json +122 -0
  380. package/dist/node_modules/oidc-provider/node_modules/debug/LICENSE +20 -0
  381. package/dist/node_modules/oidc-provider/node_modules/debug/README.md +481 -0
  382. package/dist/node_modules/oidc-provider/node_modules/debug/package.json +64 -0
  383. package/dist/node_modules/oidc-provider/node_modules/debug/src/browser.js +272 -0
  384. package/dist/node_modules/oidc-provider/node_modules/debug/src/common.js +292 -0
  385. package/dist/node_modules/oidc-provider/node_modules/debug/src/index.js +10 -0
  386. package/dist/node_modules/oidc-provider/node_modules/debug/src/node.js +263 -0
  387. package/dist/node_modules/oidc-provider/node_modules/http-errors/HISTORY.md +186 -0
  388. package/dist/node_modules/oidc-provider/node_modules/http-errors/LICENSE +23 -0
  389. package/dist/node_modules/oidc-provider/node_modules/http-errors/README.md +169 -0
  390. package/dist/node_modules/oidc-provider/node_modules/http-errors/index.js +290 -0
  391. package/dist/node_modules/oidc-provider/node_modules/http-errors/package.json +54 -0
  392. package/dist/node_modules/oidc-provider/node_modules/jsesc/LICENSE-MIT.txt +20 -0
  393. package/dist/node_modules/oidc-provider/node_modules/jsesc/README.md +422 -0
  394. package/dist/node_modules/oidc-provider/node_modules/jsesc/bin/jsesc +148 -0
  395. package/dist/node_modules/oidc-provider/node_modules/jsesc/jsesc.js +337 -0
  396. package/dist/node_modules/oidc-provider/node_modules/jsesc/man/jsesc.1 +94 -0
  397. package/dist/node_modules/oidc-provider/node_modules/jsesc/package.json +56 -0
  398. package/dist/node_modules/oidc-provider/node_modules/nanoid/LICENSE +20 -0
  399. package/dist/node_modules/oidc-provider/node_modules/nanoid/README.md +38 -0
  400. package/dist/node_modules/oidc-provider/node_modules/nanoid/bin/nanoid.js +55 -0
  401. package/dist/node_modules/oidc-provider/node_modules/nanoid/index.browser.js +29 -0
  402. package/dist/node_modules/oidc-provider/node_modules/nanoid/index.d.ts +106 -0
  403. package/dist/node_modules/oidc-provider/node_modules/nanoid/index.js +47 -0
  404. package/dist/node_modules/oidc-provider/node_modules/nanoid/nanoid.js +1 -0
  405. package/dist/node_modules/oidc-provider/node_modules/nanoid/non-secure/index.d.ts +48 -0
  406. package/dist/node_modules/oidc-provider/node_modules/nanoid/non-secure/index.js +21 -0
  407. package/dist/node_modules/oidc-provider/node_modules/nanoid/package.json +46 -0
  408. package/dist/node_modules/oidc-provider/node_modules/nanoid/url-alphabet/index.js +2 -0
  409. package/dist/node_modules/oidc-provider/node_modules/path-to-regexp/LICENSE +21 -0
  410. package/dist/node_modules/oidc-provider/node_modules/path-to-regexp/Readme.md +224 -0
  411. package/dist/node_modules/oidc-provider/node_modules/path-to-regexp/dist/index.d.ts +144 -0
  412. package/dist/node_modules/oidc-provider/node_modules/path-to-regexp/dist/index.js +409 -0
  413. package/dist/node_modules/oidc-provider/node_modules/path-to-regexp/dist/index.js.map +1 -0
  414. package/dist/node_modules/oidc-provider/node_modules/path-to-regexp/package.json +64 -0
  415. package/dist/node_modules/oidc-provider/node_modules/statuses/HISTORY.md +87 -0
  416. package/dist/node_modules/oidc-provider/node_modules/statuses/LICENSE +23 -0
  417. package/dist/node_modules/oidc-provider/node_modules/statuses/README.md +139 -0
  418. package/dist/node_modules/oidc-provider/node_modules/statuses/codes.json +65 -0
  419. package/dist/node_modules/oidc-provider/node_modules/statuses/index.js +146 -0
  420. package/dist/node_modules/oidc-provider/node_modules/statuses/package.json +49 -0
  421. package/dist/node_modules/oidc-provider/package.json +95 -0
  422. package/dist/node_modules/quick-lru/index.d.ts +178 -0
  423. package/dist/node_modules/quick-lru/index.js +329 -0
  424. package/dist/node_modules/quick-lru/license +9 -0
  425. package/dist/node_modules/quick-lru/package.json +54 -0
  426. package/dist/node_modules/quick-lru/readme.md +236 -0
  427. package/dist/node_modules/statuses/HISTORY.md +65 -0
  428. package/dist/node_modules/statuses/LICENSE +23 -0
  429. package/dist/node_modules/statuses/README.md +127 -0
  430. package/dist/node_modules/statuses/codes.json +66 -0
  431. package/dist/node_modules/statuses/index.js +113 -0
  432. package/dist/node_modules/statuses/package.json +48 -0
  433. package/dist/server/cache-adapter.d.ts +33 -0
  434. package/dist/server/cache-adapter.js +159 -0
  435. package/dist/server/index.d.ts +10 -0
  436. package/dist/server/index.js +48 -0
  437. package/dist/server/interaction.d.ts +26 -0
  438. package/dist/server/interaction.js +172 -0
  439. package/dist/server/paths.d.ts +19 -0
  440. package/dist/server/paths.js +64 -0
  441. package/dist/server/plugin.d.ts +16 -0
  442. package/dist/server/plugin.js +108 -0
  443. package/dist/server/provider-dispatch.d.ts +32 -0
  444. package/dist/server/provider-dispatch.js +252 -0
  445. package/dist/server/service.d.ts +63 -0
  446. package/dist/server/service.js +540 -0
  447. package/dist/server/utils.d.ts +12 -0
  448. package/dist/server/utils.js +58 -0
  449. package/package.json +24 -0
  450. package/server.d.ts +2 -0
  451. package/server.js +1 -0
@@ -0,0 +1,174 @@
1
+ # oidc-provider
2
+
3
+ This module provides an OAuth 2.0 ([RFC 6749][oauth2]) Authorization Server with support for OpenID Connect ([OIDC][openid-connect]) and many
4
+ other additional features and standards.
5
+
6
+ **Table of Contents**
7
+
8
+ - [Implemented specs & features](#implemented-specs--features)
9
+ - [Certification](#certification)
10
+ - [Documentation & Configuration](#documentation--configuration)
11
+ - [Community Guides](#community-guides)
12
+ - [Events](#events)
13
+
14
+ ## Implemented specs & features
15
+
16
+ The following specifications are implemented by oidc-provider (not exhaustive):
17
+
18
+ _Note that not all features are enabled by default, check the configuration section on how to enable them._
19
+
20
+ - [`RFC6749` - OAuth 2.0][oauth2] & [`OIDC` Core 1.0][core]
21
+ - [OIDC `Discovery 1.0`][discovery] & [`RFC8414` Authorization Server Metadata][rfc8414]
22
+ - Dynamic Client Registration
23
+ - [OIDC `Dynamic Client Registration 1.0`][registration]
24
+ - [`RFC7591` - OAuth 2.0 Dynamic Client Registration Protocol][oauth2-registration]
25
+ - [`RFC7592` - OAuth 2.0 Dynamic Client Registration Management Protocol][registration-management]
26
+ - [OIDC `RP-Initiated Logout 1.0`][rpinitiated-logout]
27
+ - [OIDC `Back-Channel Logout 1.0`][backchannel-logout]
28
+ - [`RFC7009` - OAuth 2.0 Token Revocation][revocation]
29
+ - [`RFC7636` - Proof Key for Code Exchange (`PKCE`)][pkce]
30
+ - [`RFC7662` - OAuth 2.0 Token Introspection][introspection]
31
+ - [`RFC8252` - OAuth 2.0 for Native Apps BCP (`AppAuth`)][oauth-native-apps]
32
+ - [`RFC8628` - OAuth 2.0 Device Authorization Grant (`Device Flow`)][device-flow]
33
+ - [`RFC8705` - OAuth 2.0 Mutual TLS Client Authentication and Certificate Bound Access Tokens (`MTLS`)][mtls]
34
+ - [`RFC8707` - OAuth 2.0 Resource Indicators][resource-indicators]
35
+ - [`RFC9101` - OAuth 2.0 JWT-Secured Authorization Request (`JAR`)][jar]
36
+ - [`RFC9126` - OAuth 2.0 Pushed Authorization Requests (`PAR`)][par]
37
+ - [`RFC9207` - OAuth 2.0 Authorization Server Issuer Identifier in Authorization Response][iss-auth-resp]
38
+ - [`RFC9449` - OAuth 2.0 Demonstration of Proof-of-Possession at the Application Layer (`DPoP`)][dpop]
39
+ - [`RFC9701` - JWT Response for OAuth Token Introspection][jwt-introspection]
40
+ - [FAPI 1.0 Security Profile - Part 2: Advanced (`FAPI 1.0`)][fapi]
41
+ - [FAPI 2.0 Security Profile (`FAPI 2.0`)][fapi2sp]
42
+ - [FAPI 2.0 Message Signing (`FAPI 2.0`)][fapi2ms]
43
+ - [JWT Secured Authorization Response Mode for OAuth 2.0 (`JARM`)][jarm]
44
+ - [OIDC Client Initiated Backchannel Authentication Flow (`CIBA`)][ciba]
45
+
46
+ Supported Access Token formats:
47
+
48
+ - Opaque
49
+ - [JSON Web Token (JWT) Profile for OAuth 2.0 Access Tokens][jwt-at]
50
+
51
+ The following specifications and drafts are implemented as experimental features:
52
+
53
+ - [Financial-grade API: Client Initiated Backchannel Authentication Profile (`FAPI-CIBA`) - Implementers Draft 01][fapi-ciba]
54
+ - [OIDC Relying Party Metadata Choices 1.0 - Implementers Draft 01][rp-metadata-choices]
55
+ - [OAuth 2.0 Attestation-Based Client Authentication - Draft 06][attestation-client-auth]
56
+ - [OAuth Client ID Metadata Document (`CIMD`) - Draft 01][cimd]
57
+
58
+ Updates to experimental feature specification versions are released as MINOR library versions,
59
+ if you utilize these features consider using the tilde `~` operator in your
60
+ package.json since breaking changes may be introduced as part of these version updates. Alternatively
61
+ [acknowledge](/docs/README.md#features) the version and be notified of breaking changes as part of
62
+ your CI.
63
+
64
+ ## Certification
65
+
66
+ [<img width="184" height="96" align="right" src="https://cdn.jsdelivr.net/gh/panva/node-oidc-provider@acd3ebf2f5ebbb5605463cb681a1fb2ab9742ace/OpenID_Certified.png" alt="OpenID Certification">][openid-certified-link]
67
+ Filip Skokan has [certified][openid-certified-link] that [oidc-provider][npm-url]
68
+ conforms to the following profiles of the OpenID Connect™ protocol.
69
+
70
+ - Basic, Implicit, Hybrid, Config, Form Post, and 3rd Party-Init
71
+ - Back-Channel Logout and RP-Initiated Logout
72
+ - FAPI 1.0
73
+ - FAPI CIBA
74
+ - FAPI 2.0
75
+
76
+ ## Sponsor
77
+
78
+ <picture>
79
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/panva/node-oidc-provider/HEAD/sponsor/Auth0byOkta_dark.png">
80
+ <source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/panva/node-oidc-provider/HEAD/sponsor/Auth0byOkta_light.png">
81
+ <img height="65" align="left" alt="Auth0 by Okta" src="https://raw.githubusercontent.com/panva/node-oidc-provider/HEAD/sponsor/Auth0byOkta_light.png">
82
+ </picture>
83
+
84
+ If you want to quickly add OpenID Connect authentication to Node.js apps, feel free to check out Auth0's Node.js SDK and free plan. [Create an Auth0 account; it's free!][sponsor-auth0]<br><br>
85
+
86
+ ## Support
87
+
88
+ If you or your company use this module, or you need help using/upgrading the module, please consider becoming a [sponsor][support-sponsor] so I can continue maintaining it and adding new features carefree. The only way to guarantee you get feedback from the author & sole maintainer of this module is to support the package through GitHub Sponsors.
89
+
90
+ ## [Documentation](/docs/README.md) & Configuration
91
+
92
+ oidc-provider can be mounted to existing connect, express, fastify, hapi, or koa applications, see
93
+ [how](/docs/README.md#mounting-oidc-provider). The authorization server allows to be extended and configured in
94
+ various ways to fit a variety of uses. See the [documentation](/docs/README.md) and [example folder](/example).
95
+
96
+ ```js
97
+ import * as oidc from "oidc-provider";
98
+
99
+ const provider = new oidc.Provider("http://localhost:3000", {
100
+ // refer to the documentation for other available configuration
101
+ clients: [
102
+ {
103
+ client_id: "foo",
104
+ client_secret: "bar",
105
+ redirect_uris: ["http://localhost:8080/cb"],
106
+ // ... other client properties
107
+ },
108
+ ],
109
+ });
110
+
111
+ const server = provider.listen(3000, () => {
112
+ console.log(
113
+ "oidc-provider listening on port 3000, check http://localhost:3000/.well-known/openid-configuration",
114
+ );
115
+ });
116
+ ```
117
+
118
+ External type definitions are available via [DefinitelyTyped](https://npmjs.com/package/@types/oidc-provider).
119
+
120
+ ## Community Guides
121
+
122
+ Collection of Community-maintained configuration use cases are in the [Community Guides Discussions section](https://github.com/panva/node-oidc-provider/discussions/categories/community-guides)
123
+
124
+ ## Events
125
+
126
+ oidc-provider instances are event emitters, using event handlers you can hook into the various
127
+ actions and i.e. emit metrics that react to specific triggers. See the list of available emitted [event names](/docs/events.md) and their description.
128
+
129
+ ## Supported Versions
130
+
131
+ | Version | Security Fixes 🔑 | Other Bug Fixes 🐞 | New Features ⭐ |
132
+ | ------------------------------------------------------------- | ----------------- | ------------------ | --------------- |
133
+ | [v9.x](https://github.com/panva/node-oidc-provider/tree/v9.x) | [Security Policy] | ✅ | ✅ |
134
+ | [v8.x](https://github.com/panva/node-oidc-provider/tree/v8.x) | [Security Policy] | ❌ | ❌ |
135
+
136
+ [npm-url]: https://www.npmjs.com/package/oidc-provider
137
+ [openid-certified-link]: https://openid.net/certification/
138
+ [openid-connect]: https://openid.net/connect/
139
+ [core]: https://openid.net/specs/openid-connect-core-1_0-errata2.html
140
+ [discovery]: https://openid.net/specs/openid-connect-discovery-1_0-errata2.html
141
+ [oauth2-registration]: https://www.rfc-editor.org/rfc/rfc7591.html
142
+ [registration]: https://openid.net/specs/openid-connect-registration-1_0-errata2.html
143
+ [oauth2]: https://www.rfc-editor.org/rfc/rfc6749.html
144
+ [oauth2-bearer]: https://www.rfc-editor.org/rfc/rfc6750.html
145
+ [revocation]: https://www.rfc-editor.org/rfc/rfc7009.html
146
+ [introspection]: https://www.rfc-editor.org/rfc/rfc7662.html
147
+ [pkce]: https://www.rfc-editor.org/rfc/rfc7636.html
148
+ [example-repo]: https://github.com/panva/node-oidc-provider-example
149
+ [backchannel-logout]: https://openid.net/specs/openid-connect-backchannel-1_0-errata1.html
150
+ [registration-management]: https://www.rfc-editor.org/rfc/rfc7592.html
151
+ [oauth-native-apps]: https://www.rfc-editor.org/rfc/rfc8252.html
152
+ [jar]: https://www.rfc-editor.org/rfc/rfc9101.html
153
+ [device-flow]: https://www.rfc-editor.org/rfc/rfc8628.html
154
+ [jwt-introspection]: https://www.rfc-editor.org/rfc/rfc9701.html
155
+ [sponsor-auth0]: https://a0.to/signup/panva
156
+ [mtls]: https://www.rfc-editor.org/rfc/rfc8705.html
157
+ [dpop]: https://www.rfc-editor.org/rfc/rfc9449.html
158
+ [resource-indicators]: https://www.rfc-editor.org/rfc/rfc8707.html
159
+ [jarm]: https://openid.net/specs/oauth-v2-jarm-errata1.html
160
+ [jwt-at]: https://www.rfc-editor.org/rfc/rfc9068.html
161
+ [support-sponsor]: https://github.com/sponsors/panva
162
+ [par]: https://www.rfc-editor.org/rfc/rfc9126.html
163
+ [rpinitiated-logout]: https://openid.net/specs/openid-connect-rpinitiated-1_0-final.html
164
+ [iss-auth-resp]: https://www.rfc-editor.org/rfc/rfc9207.html
165
+ [fapi]: https://openid.net/specs/openid-financial-api-part-2-1_0-final.html
166
+ [ciba]: https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0-final.html
167
+ [fapi-ciba]: https://openid.net/specs/openid-financial-api-ciba-ID1.html
168
+ [fapi2sp]: https://openid.net/specs/fapi-security-profile-2_0-final.html
169
+ [fapi2ms]: https://openid.net/specs/fapi-message-signing-2_0-final.html
170
+ [Security Policy]: https://github.com/panva/node-oidc-provider/security/policy
171
+ [rp-metadata-choices]: https://openid.net/specs/openid-connect-rp-metadata-choices-1_0-ID1.html
172
+ [rfc8414]: https://www.rfc-editor.org/rfc/rfc8414.html
173
+ [attestation-client-auth]: https://www.ietf.org/archive/id/draft-ietf-oauth-attestation-based-client-auth-06.html
174
+ [cimd]: https://www.ietf.org/archive/id/draft-ietf-oauth-client-id-metadata-document-01.html
@@ -0,0 +1,28 @@
1
+ import merge from '../../helpers/_/merge.js';
2
+ import instance from '../../helpers/weak_cache.js';
3
+
4
+ /*
5
+ * Merges requested claims with auth_time as requested if max_age is provided or require_auth_time
6
+ * is configured for the client.
7
+ *
8
+ * Merges requested claims with acr as requested if acr_values is provided
9
+ */
10
+ export default function assignClaims(ctx, next) {
11
+ const { params } = ctx.oidc;
12
+
13
+ if (params.claims !== undefined && instance(ctx.oidc.provider).features.claimsParameter.enabled) {
14
+ ctx.oidc.claims = JSON.parse(params.claims);
15
+ }
16
+
17
+ if (params.max_age !== undefined || ctx.oidc.client.requireAuthTime || ctx.oidc.prompts.has('login')) {
18
+ merge(ctx.oidc.claims, { id_token: { auth_time: { essential: true } } });
19
+ }
20
+
21
+ const acrValues = params.acr_values;
22
+
23
+ if (acrValues) {
24
+ merge(ctx.oidc.claims, { id_token: { acr: { values: acrValues.split(' ') } } });
25
+ }
26
+
27
+ return next();
28
+ }
@@ -0,0 +1,17 @@
1
+ /*
2
+ * assign max_age and acr_values if it is not provided explictly but is configured with default
3
+ * values on the client
4
+ */
5
+ export default function assignDefaults(ctx, next) {
6
+ const { params, client } = ctx.oidc;
7
+
8
+ if (!params.acr_values && client.defaultAcrValues) {
9
+ params.acr_values = client.defaultAcrValues.join(' ');
10
+ }
11
+
12
+ if (params.max_age === undefined && client.defaultMaxAge !== undefined) {
13
+ params.max_age = client.defaultMaxAge.toString();
14
+ }
15
+
16
+ return next();
17
+ }
@@ -0,0 +1,6 @@
1
+ export default function deviceAuthorizationResponse(ctx, next) {
2
+ if (!ctx.oidc.body.client_id) {
3
+ ctx.oidc.body.client_id = ctx.oidc.client.clientId;
4
+ }
5
+ return next();
6
+ }
@@ -0,0 +1,17 @@
1
+ import { InvalidRequestObject } from '../../helpers/errors.js';
2
+
3
+ /*
4
+ * Remaps the Backchannel Authentication Endpoint errors thrown in downstream middlewares.
5
+ */
6
+ export default async function requestObjectRemapErrors(ctx, next) {
7
+ return next().catch((err) => {
8
+ if (err instanceof InvalidRequestObject) {
9
+ Object.assign(err, {
10
+ message: 'invalid_request',
11
+ error: 'invalid_request',
12
+ });
13
+ }
14
+
15
+ throw err;
16
+ });
17
+ }
@@ -0,0 +1,41 @@
1
+ import instance from '../../helpers/weak_cache.js';
2
+
3
+ export default async function backchannelRequestResponse(ctx) {
4
+ const { BackchannelAuthenticationRequest } = ctx.oidc.provider;
5
+ const { ciba } = instance(ctx.oidc.provider).features;
6
+
7
+ const request = new BackchannelAuthenticationRequest({
8
+ accountId: ctx.oidc.account.accountId,
9
+ claims: ctx.oidc.claims,
10
+ client: ctx.oidc.client,
11
+ nonce: ctx.oidc.params.nonce,
12
+ params: ctx.oidc.params.toPlainObject(),
13
+ resource: Object.keys(ctx.oidc.resourceServers),
14
+ scope: [...ctx.oidc.requestParamScopes].join(' '),
15
+ });
16
+
17
+ if (ctx.oidc.client.clientAuthMethod === 'attest_jwt_client_auth') {
18
+ await request.setAttestBinding(ctx);
19
+ }
20
+
21
+ // eslint-disable-next-line default-case
22
+ switch (request.resource.length) {
23
+ case 0:
24
+ delete request.resource;
25
+ break;
26
+ case 1:
27
+ [request.resource] = request.resource;
28
+ break;
29
+ }
30
+
31
+ ctx.oidc.entity('BackchannelAuthenticationRequest', request);
32
+
33
+ const id = await request.save();
34
+
35
+ ctx.body = {
36
+ expires_in: request.expiration,
37
+ auth_req_id: id,
38
+ };
39
+
40
+ await ciba.triggerAuthenticationDevice(ctx, request, ctx.oidc.account, ctx.oidc.client);
41
+ }
@@ -0,0 +1,12 @@
1
+ import instance from '../../helpers/weak_cache.js';
2
+
3
+ export default async function checkCibaContext(ctx, next) {
4
+ const { ciba } = instance(ctx.oidc.provider).features;
5
+
6
+ await Promise.all([
7
+ ciba.validateRequestContext(ctx, ctx.oidc.params.request_context),
8
+ ciba.validateBindingMessage(ctx, ctx.oidc.params.binding_message),
9
+ ]);
10
+
11
+ return next();
12
+ }
@@ -0,0 +1,68 @@
1
+ import { InvalidRequest } from '../../helpers/errors.js';
2
+ import instance from '../../helpers/weak_cache.js';
3
+ import isPlainObject from '../../helpers/_/is_plain_object.js';
4
+
5
+ /*
6
+ * If claims parameter is provided and supported handles its validation
7
+ * - should not be combined with rt none
8
+ * - should be JSON serialized object with id_token or userinfo properties as objects
9
+ * - claims.userinfo should not be used if authorization result is not access_token
10
+ *
11
+ * Merges requested claims with auth_time as requested if max_age is provided or require_auth_time
12
+ * is configured for the client.
13
+ *
14
+ * Merges requested claims with acr as requested if acr_values is provided
15
+ */
16
+ export default async function checkClaims(ctx, next) {
17
+ const { params } = ctx.oidc;
18
+
19
+ if (params.claims !== undefined) {
20
+ const { claimsParameter, userinfo } = instance(ctx.oidc.provider).features;
21
+
22
+ if (claimsParameter.enabled) {
23
+ if (params.response_type === 'none') {
24
+ throw new InvalidRequest('claims parameter should not be combined with response_type none');
25
+ }
26
+
27
+ let claims;
28
+
29
+ try {
30
+ claims = JSON.parse(params.claims);
31
+ } catch (err) {
32
+ throw new InvalidRequest('could not parse the claims parameter JSON');
33
+ }
34
+
35
+ if (!isPlainObject(claims)) {
36
+ throw new InvalidRequest('claims parameter should be a JSON object');
37
+ }
38
+
39
+ if (claims.userinfo === undefined && claims.id_token === undefined) {
40
+ throw new InvalidRequest('claims parameter should have userinfo or id_token properties');
41
+ }
42
+
43
+ if (claims.userinfo !== undefined && !isPlainObject(claims.userinfo)) {
44
+ throw new InvalidRequest('claims.userinfo should be an object');
45
+ }
46
+
47
+ if (claims.id_token !== undefined && !isPlainObject(claims.id_token)) {
48
+ throw new InvalidRequest('claims.id_token should be an object');
49
+ }
50
+
51
+ if (claims.userinfo && !userinfo.enabled) {
52
+ throw new InvalidRequest('claims.userinfo should not be used since userinfo endpoint is not supported');
53
+ }
54
+
55
+ if (params.response_type === 'id_token' && claims.userinfo) {
56
+ throw new InvalidRequest('claims.userinfo should not be used if access_token is not issued');
57
+ }
58
+
59
+ await claimsParameter.assertClaimsParameter?.(
60
+ ctx,
61
+ claims,
62
+ ctx.oidc.client,
63
+ );
64
+ }
65
+ }
66
+
67
+ return next();
68
+ }
@@ -0,0 +1,21 @@
1
+ import presence from '../../helpers/validate_presence.js';
2
+ import { InvalidClient } from '../../helpers/errors.js';
3
+
4
+ /*
5
+ * Checks client_id
6
+ */
7
+ export default async function checkClient(ctx, next) {
8
+ presence(ctx, 'client_id');
9
+
10
+ const client = await ctx.oidc.provider.Client.find(ctx.oidc.params.client_id);
11
+
12
+ if (!client) {
13
+ // there's no point in checking again in authorization error handler
14
+ ctx.oidc.noclient = true;
15
+ throw new InvalidClient('client is invalid', 'client not found');
16
+ }
17
+
18
+ ctx.oidc.entity('Client', client);
19
+
20
+ return next();
21
+ }
@@ -0,0 +1,21 @@
1
+ import { InvalidRequest } from '../../helpers/errors.js';
2
+
3
+ export default function checkClientGrantType({ oidc: { route, client } }, next) {
4
+ let grantType;
5
+ switch (route) {
6
+ case 'device_authorization':
7
+ grantType = 'urn:ietf:params:oauth:grant-type:device_code';
8
+ break;
9
+ case 'backchannel_authentication':
10
+ grantType = 'urn:openid:params:grant-type:ciba';
11
+ break;
12
+ default:
13
+ throw new Error('not implemented');
14
+ }
15
+
16
+ if (!client.grantTypeAllowed(grantType)) {
17
+ throw new InvalidRequest(`${grantType} is not allowed for this client`);
18
+ }
19
+
20
+ return next();
21
+ }
@@ -0,0 +1,35 @@
1
+ import { InvalidRequest } from '../../helpers/errors.js';
2
+ import dpopValidate, { CHALLENGE_OK_WINDOW } from '../../helpers/validate_dpop.js';
3
+ import epochTime from '../../helpers/epoch_time.js';
4
+ import instance from '../../helpers/weak_cache.js';
5
+
6
+ /*
7
+ * Validates dpop_jkt equals the used DPoP proof thumbprint
8
+ * when provided, otherwise defaults dpop_jkt to it.
9
+ */
10
+ export default async function checkDpopJkt(ctx, next) {
11
+ const { params } = ctx.oidc;
12
+
13
+ const dPoP = await dpopValidate(ctx);
14
+ if (dPoP) {
15
+ const { allowReplay } = instance(ctx.oidc.provider).features.dPoP;
16
+ if (!allowReplay) {
17
+ const { ReplayDetection } = ctx.oidc.provider;
18
+ const unique = await ReplayDetection.unique(
19
+ ctx.oidc.client.clientId,
20
+ dPoP.jti,
21
+ epochTime() + CHALLENGE_OK_WINDOW,
22
+ );
23
+
24
+ ctx.assert(unique, new InvalidRequest('DPoP proof JWT Replay detected'));
25
+ }
26
+
27
+ if (params.dpop_jkt && params.dpop_jkt !== dPoP.thumbprint) {
28
+ throw new InvalidRequest('DPoP proof key thumbprint does not match dpop_jkt');
29
+ } else if (!params.dpop_jkt) {
30
+ params.dpop_jkt = dPoP.thumbprint;
31
+ }
32
+ }
33
+
34
+ return next();
35
+ }
@@ -0,0 +1,18 @@
1
+ import instance from '../../helpers/weak_cache.js';
2
+
3
+ /*
4
+ * Executes registered extraParams validators.
5
+ */
6
+ export default async function checkExtraParams(ctx, next) {
7
+ const { extraParamsValidations } = instance(ctx.oidc.provider).configuration;
8
+
9
+ if (!extraParamsValidations) {
10
+ return next();
11
+ }
12
+
13
+ for (const [param, validator] of extraParamsValidations) {
14
+ await validator(ctx, ctx.oidc.params[param], ctx.oidc.client);
15
+ }
16
+
17
+ return next();
18
+ }
@@ -0,0 +1,23 @@
1
+ import { InvalidRequest, OIDCProviderError } from '../../helpers/errors.js';
2
+
3
+ /*
4
+ * Validates the incoming id_token_hint
5
+ */
6
+ export default async function checkIdTokenHint(ctx, next) {
7
+ const { oidc } = ctx;
8
+ if (oidc.params.id_token_hint !== undefined) {
9
+ let idTokenHint;
10
+ try {
11
+ idTokenHint = await oidc.provider.IdToken.validate(oidc.params.id_token_hint, oidc.client);
12
+ } catch (err) {
13
+ if (err instanceof OIDCProviderError) {
14
+ throw err;
15
+ }
16
+
17
+ throw new InvalidRequest('could not validate id_token_hint', undefined, err.message);
18
+ }
19
+ ctx.oidc.entity('IdTokenHint', idTokenHint);
20
+ }
21
+
22
+ return next();
23
+ }
@@ -0,0 +1,25 @@
1
+ import { InvalidRequest } from '../../helpers/errors.js';
2
+
3
+ /*
4
+ * Validates the max_age parameter and handles max_age=0 to prompt=login translation
5
+ */
6
+ export default function checkMaxAge(ctx, next) {
7
+ if (ctx.oidc.params.max_age !== undefined) {
8
+ const maxAge = +ctx.oidc.params.max_age;
9
+
10
+ if (!Number.isSafeInteger(maxAge) || Math.sign(maxAge) === -1) {
11
+ throw new InvalidRequest('invalid max_age parameter value');
12
+ }
13
+
14
+ if (maxAge === 0) {
15
+ const { prompts } = ctx.oidc;
16
+ ctx.oidc.params.max_age = undefined;
17
+ if (!prompts.has('login')) {
18
+ prompts.add('login');
19
+ ctx.oidc.params.prompt = [...prompts].join(' ');
20
+ }
21
+ }
22
+ }
23
+
24
+ return next();
25
+ }
@@ -0,0 +1,47 @@
1
+ import { InvalidRequest } from '../../helpers/errors.js';
2
+
3
+ const GATED_CLIENT = Object.entries({
4
+ defaultAcrValues: 'default_acr_values',
5
+ defaultMaxAge: 'default_max_age',
6
+ requireAuthTime: 'require_auth_time',
7
+ });
8
+
9
+ const GATED = [
10
+ 'acr_values',
11
+ 'claims',
12
+ 'claims_locales',
13
+ 'id_token_hint',
14
+ 'max_age',
15
+ 'nonce',
16
+ ];
17
+
18
+ /*
19
+ * Validates that openid scope is requested when openid specific parameters are provided
20
+ */
21
+ export default function checkOpenIdScope(PARAM_LIST, ctx, next) {
22
+ if (ctx.oidc.params.scope?.split(' ').includes('openid')) {
23
+ return next();
24
+ }
25
+
26
+ if (PARAM_LIST.has('response_type') && ctx.oidc.params.response_type.includes('id_token')) {
27
+ throw new InvalidRequest('openid scope must be requested for this response_type');
28
+ }
29
+
30
+ GATED_CLIENT.forEach(([prop, msg]) => {
31
+ if (ctx.oidc.client[prop]) {
32
+ throw new InvalidRequest(`openid scope must be requested for clients with ${msg}`);
33
+ }
34
+ });
35
+
36
+ GATED.forEach((param) => {
37
+ if (ctx.oidc.params[param] !== undefined) {
38
+ throw new InvalidRequest(`openid scope must be requested when using the ${param} parameter`);
39
+ }
40
+ });
41
+
42
+ if (ctx.oidc.route === 'backchannel_authentication') {
43
+ throw new InvalidRequest('openid scope must be requested for this request');
44
+ }
45
+
46
+ return next();
47
+ }
@@ -0,0 +1,41 @@
1
+ import { InvalidRequest } from '../../helpers/errors.js';
2
+ import instance from '../../helpers/weak_cache.js';
3
+ import checkFormat from '../../helpers/pkce_format.js';
4
+
5
+ /*
6
+ * - assign default code_challenge_method if a code_challenge is provided
7
+ * - check presence of code code_challenge if code_challenge_method is provided
8
+ * - enforce PKCE use for native clients using hybrid or code flow
9
+ */
10
+ export default function checkPKCE(ctx, next) {
11
+ const { params } = ctx.oidc;
12
+ const { pkce } = instance(ctx.oidc.provider).configuration;
13
+
14
+ if (!params.code_challenge_method && params.code_challenge) {
15
+ throw new InvalidRequest('code_challenge_method must be provided');
16
+ }
17
+
18
+ if (params.code_challenge_method) {
19
+ if (params.code_challenge_method !== 'S256') {
20
+ throw new InvalidRequest('not supported value of code_challenge_method');
21
+ }
22
+
23
+ if (!params.code_challenge) {
24
+ throw new InvalidRequest('code_challenge must be provided with code_challenge_method');
25
+ }
26
+ }
27
+
28
+ if (params.response_type.includes('code')) {
29
+ if (!params.code_challenge) {
30
+ if (pkce.required(ctx, ctx.oidc.client)) {
31
+ throw new InvalidRequest('Authorization Server policy requires PKCE to be used for this request');
32
+ }
33
+ }
34
+ }
35
+
36
+ if (params.code_challenge !== undefined) {
37
+ checkFormat(params.code_challenge, 'code_challenge');
38
+ }
39
+
40
+ return next();
41
+ }
@@ -0,0 +1,25 @@
1
+ import { InvalidRequest } from '../../helpers/errors.js';
2
+ import instance from '../../helpers/weak_cache.js';
3
+
4
+ /*
5
+ * Checks that all requested prompts are supported and validates prompt none is not combined with
6
+ * other prompts
7
+ */
8
+ export default function checkPrompt(ctx, next) {
9
+ if (ctx.oidc.params.prompt !== undefined) {
10
+ const { prompts } = ctx.oidc;
11
+ const supported = instance(ctx.oidc.provider).configuration.prompts;
12
+
13
+ for (const prompt of prompts) {
14
+ if (!supported.has(prompt)) {
15
+ throw new InvalidRequest('unsupported prompt value requested');
16
+ }
17
+ }
18
+
19
+ if (prompts.has('none') && prompts.size !== 1) {
20
+ throw new InvalidRequest('prompt none must only be used alone');
21
+ }
22
+ }
23
+
24
+ return next();
25
+ }