@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,453 @@
1
+ import { strict as assert } from 'node:assert';
2
+ import * as util from 'node:util';
3
+
4
+ import QuickLRU from 'quick-lru';
5
+ import Koa from 'koa';
6
+
7
+ import Configuration from './helpers/configuration.js';
8
+ import * as instance from './helpers/weak_cache.js';
9
+ import inititalizeKeyStore from './helpers/initialize_keystore.js';
10
+ import initializeAdapter from './helpers/initialize_adapter.js';
11
+ import initializeApp from './helpers/initialize_app.js';
12
+ import initializeClients from './helpers/initialize_clients.js';
13
+ import ResourceServer from './helpers/resource_server.js';
14
+ import { isWebUri } from './helpers/valid_url.js';
15
+ import epochTime from './helpers/epoch_time.js';
16
+ import getClaims from './helpers/claims.js';
17
+ import getContext from './helpers/oidc_context.js';
18
+ import { SessionNotFound, OIDCProviderError } from './helpers/errors.js';
19
+ import * as models from './models/index.js';
20
+ import ServerChallenge from './helpers/challenge.js';
21
+ import als from './helpers/als.js';
22
+
23
+ export class Provider extends Koa {
24
+ #AccessToken;
25
+
26
+ #AuthorizationCode;
27
+
28
+ #BaseToken;
29
+
30
+ #Claims;
31
+
32
+ #Client;
33
+
34
+ #ClientCredentials;
35
+
36
+ #DeviceCode;
37
+
38
+ #BackchannelAuthenticationRequest;
39
+
40
+ #Grant;
41
+
42
+ #IdToken;
43
+
44
+ #InitialAccessToken;
45
+
46
+ #Interaction;
47
+
48
+ #mountPath;
49
+
50
+ #OIDCContext;
51
+
52
+ #PushedAuthorizationRequest;
53
+
54
+ #RefreshToken;
55
+
56
+ #RegistrationAccessToken;
57
+
58
+ #ReplayDetection;
59
+
60
+ #Session;
61
+
62
+ #exec;
63
+
64
+ #int = {
65
+ dynamicClients: new QuickLRU({ maxSize: 100 }),
66
+ };
67
+
68
+ constructor(issuer, setup) {
69
+ assert(issuer, 'first argument must be the Issuer Identifier, i.e. https://op.example.com');
70
+ assert.equal(typeof issuer, 'string', 'Issuer Identifier must be a string');
71
+ assert(isWebUri(issuer), 'Issuer Identifier must be a valid web uri');
72
+
73
+ const {
74
+ pathname, host, protocol, search, hash, href,
75
+ } = new URL(issuer);
76
+ assert(host, 'Issuer Identifier must have a host component');
77
+ assert(protocol, 'Issuer Identifier must have an URI scheme component');
78
+ assert(!search && !href.endsWith('?'), 'Issuer Identifier must not have a query component');
79
+ assert(!hash && !href.endsWith('#'), 'Issuer Identifier must not have a fragment component');
80
+
81
+ super();
82
+
83
+ this.issuer = issuer;
84
+
85
+ const configuration = new Configuration(setup);
86
+ instance.set(this, this.#int);
87
+
88
+ this.#int.configuration = configuration;
89
+ this.#int.features = configuration.features;
90
+
91
+ if (Array.isArray(configuration.cookies.keys)) {
92
+ if (configuration.cookies.keys.length) {
93
+ this.keys = configuration.cookies.keys;
94
+ }
95
+ } else if (configuration.cookies.keys) {
96
+ this.keys = configuration.cookies.keys;
97
+ }
98
+
99
+ if (
100
+ configuration.features.dPoP.enabled
101
+ && configuration.features.dPoP.nonceSecret !== undefined
102
+ ) {
103
+ try {
104
+ this.#int.DPoPNonces = new ServerChallenge(configuration.features.dPoP.nonceSecret, 'DPoP');
105
+ } catch (cause) {
106
+ throw new TypeError('features.dPoP.nonceSecret secret must be a 32-byte Buffer instance', { cause });
107
+ }
108
+ }
109
+
110
+ if (configuration.features.attestClientAuth.enabled) {
111
+ try {
112
+ this.#int.AttestChallenges = new ServerChallenge(
113
+ configuration.features.attestClientAuth.challengeSecret,
114
+ 'OAuth-Client-Attestation-PoP',
115
+ );
116
+ } catch (cause) {
117
+ throw new TypeError('features.attestClientAuth.challengeSecret secret must be a 32-byte Buffer instance', { cause });
118
+ }
119
+ }
120
+
121
+ this.#int.responseModes = new Map();
122
+ this.#int.grantTypeHandlers = new Map();
123
+ this.#int.grantTypeDupes = new Map();
124
+ this.#int.grantTypeParams = new Map([[undefined, new Set()]]);
125
+ this.#int.BaseModel = models.getBaseModel(this);
126
+
127
+ this.#mountPath = pathname.endsWith('/') ? pathname.slice(0, -1) : pathname;
128
+
129
+ initializeAdapter.call(this, configuration.adapter);
130
+
131
+ inititalizeKeyStore.call(this, configuration.jwks);
132
+ delete configuration.jwks;
133
+
134
+ this.#exec = initializeApp.call(this);
135
+ Koa.prototype.use.call(this, this.#exec);
136
+
137
+ initializeClients.call(this, configuration.clients);
138
+ delete configuration.clients;
139
+ }
140
+
141
+ urlFor(name, opt) {
142
+ return new URL(this.pathFor(name, opt), this.issuer).href;
143
+ }
144
+
145
+ registerGrantType(name, handler, params, dupes) {
146
+ this.#int.configuration.grantTypes.add(name);
147
+
148
+ const { grantTypeHandlers, grantTypeParams, grantTypeDupes } = this.#int;
149
+
150
+ const grantParams = new Set(['grant_type']);
151
+ grantTypeHandlers.set(name, handler);
152
+
153
+ if (dupes && typeof dupes === 'string') {
154
+ grantTypeDupes.set(name, new Set([dupes]));
155
+ } else if (dupes && (Array.isArray(dupes) || dupes instanceof Set)) {
156
+ grantTypeDupes.set(name, new Set(dupes));
157
+ }
158
+
159
+ if (params && typeof params === 'string') {
160
+ grantParams.add(params);
161
+ } else if (params && (Array.isArray(params) || params instanceof Set)) {
162
+ params.forEach(Set.prototype.add.bind(grantParams));
163
+ }
164
+
165
+ grantTypeParams.set(name, grantParams);
166
+ grantParams.forEach(Set.prototype.add.bind(grantTypeParams.get(undefined)));
167
+ }
168
+
169
+ cookieName(type) {
170
+ const name = this.#int.configuration.cookies.names[type];
171
+ if (!name) {
172
+ throw new Error(`cookie name for type ${type} is not configured`);
173
+ }
174
+ return name;
175
+ }
176
+
177
+ registerResponseMode(name, handler) {
178
+ const { responseModes } = this.#int;
179
+ if (!responseModes.has(name)) {
180
+ responseModes.set(name, handler.bind(this));
181
+ }
182
+ }
183
+
184
+ pathFor(name, { mountPath = this.#mountPath, ...opts } = {}) {
185
+ const routerUrl = this.#int.router.url(name, opts);
186
+
187
+ if (routerUrl instanceof Error) {
188
+ throw routerUrl;
189
+ }
190
+
191
+ return [mountPath, routerUrl].join('');
192
+ }
193
+
194
+ /**
195
+ * @name interactionResult
196
+ * @api public
197
+ */
198
+ async interactionResult(req, res, result, { mergeWithLastSubmission = true } = {}) {
199
+ const interaction = await this.#getInteraction.call(this, req, res);
200
+
201
+ if (mergeWithLastSubmission && !('error' in result)) {
202
+ interaction.result = { ...interaction.lastSubmission, ...result };
203
+ } else {
204
+ interaction.result = result;
205
+ }
206
+
207
+ await interaction.save(interaction.exp - epochTime());
208
+
209
+ return interaction.returnTo;
210
+ }
211
+
212
+ /**
213
+ * @name interactionFinished
214
+ * @api public
215
+ */
216
+ async interactionFinished(req, res, result, { mergeWithLastSubmission = true } = {}) {
217
+ const returnTo = await this.interactionResult(req, res, result, { mergeWithLastSubmission });
218
+
219
+ res.statusCode = 303; // eslint-disable-line no-param-reassign
220
+ res.setHeader('Location', returnTo);
221
+ res.setHeader('Content-Length', '0');
222
+ res.end();
223
+ }
224
+
225
+ /**
226
+ * @name interactionDetails
227
+ * @api public
228
+ */
229
+ async interactionDetails(req, res) {
230
+ return this.#getInteraction.call(this, req, res);
231
+ }
232
+
233
+ async backchannelResult(request, result, {
234
+ acr,
235
+ amr,
236
+ authTime,
237
+ sessionUid,
238
+ expiresWithSession,
239
+ sid,
240
+ rar,
241
+ } = {}) {
242
+ if (typeof request === 'string' && request) {
243
+ // eslint-disable-next-line no-param-reassign
244
+ request = await this.BackchannelAuthenticationRequest.find(request, {
245
+ ignoreExpiration: true,
246
+ });
247
+ if (!request) {
248
+ throw new Error('BackchannelAuthenticationRequest not found');
249
+ }
250
+ } else if (!(request instanceof this.BackchannelAuthenticationRequest)) {
251
+ throw new TypeError('invalid "request" argument');
252
+ }
253
+
254
+ const client = await this.Client.find(request.clientId);
255
+ if (!client) {
256
+ throw new Error('Client not found');
257
+ }
258
+
259
+ if (typeof result === 'string' && result) {
260
+ // eslint-disable-next-line no-param-reassign
261
+ result = await this.Grant.find(result);
262
+ if (!result) {
263
+ throw new Error('Grant not found');
264
+ }
265
+ }
266
+
267
+ switch (true) {
268
+ case result instanceof this.Grant:
269
+ if (request.clientId !== result.clientId) {
270
+ throw new Error('client mismatch');
271
+ }
272
+
273
+ if (request.accountId !== result.accountId) {
274
+ throw new Error('accountId mismatch');
275
+ }
276
+
277
+ Object.assign(request, {
278
+ grantId: result.jti,
279
+ acr,
280
+ amr,
281
+ authTime,
282
+ sessionUid,
283
+ expiresWithSession,
284
+ sid,
285
+ rar,
286
+ });
287
+ break;
288
+ case result instanceof OIDCProviderError:
289
+ Object.assign(request, {
290
+ error: result.error,
291
+ error_description: result.error_description,
292
+ });
293
+ break;
294
+ default:
295
+ throw new TypeError('invalid "result" argument');
296
+ }
297
+
298
+ await request.save();
299
+
300
+ if (client.backchannelTokenDeliveryMode === 'ping') {
301
+ await client.backchannelPing(request);
302
+ }
303
+ }
304
+
305
+ get OIDCContext() {
306
+ this.#OIDCContext ||= getContext(this);
307
+ return this.#OIDCContext;
308
+ }
309
+
310
+ get Claims() {
311
+ this.#Claims ||= getClaims(this);
312
+ return this.#Claims;
313
+ }
314
+
315
+ get BaseToken() {
316
+ this.#BaseToken ||= models.getBaseToken(this);
317
+ return this.#BaseToken;
318
+ }
319
+
320
+ get IdToken() {
321
+ this.#IdToken ||= models.getIdToken(this);
322
+ return this.#IdToken;
323
+ }
324
+
325
+ get Client() {
326
+ this.#Client ||= models.getClient(this);
327
+ return this.#Client;
328
+ }
329
+
330
+ get Grant() {
331
+ this.#Grant ||= models.getGrant(this);
332
+ return this.#Grant;
333
+ }
334
+
335
+ get Session() {
336
+ this.#Session ||= models.getSession(this);
337
+ return this.#Session;
338
+ }
339
+
340
+ get Interaction() {
341
+ this.#Interaction ||= models.getInteraction(this);
342
+ return this.#Interaction;
343
+ }
344
+
345
+ get AccessToken() {
346
+ this.#AccessToken ||= models.getAccessToken(this);
347
+ return this.#AccessToken;
348
+ }
349
+
350
+ get AuthorizationCode() {
351
+ this.#AuthorizationCode ||= models.getAuthorizationCode(this);
352
+ return this.#AuthorizationCode;
353
+ }
354
+
355
+ get RefreshToken() {
356
+ this.#RefreshToken ||= models.getRefreshToken(this);
357
+ return this.#RefreshToken;
358
+ }
359
+
360
+ get ClientCredentials() {
361
+ this.#ClientCredentials ||= models.getClientCredentials(this);
362
+ return this.#ClientCredentials;
363
+ }
364
+
365
+ get InitialAccessToken() {
366
+ this.#InitialAccessToken ||= models.getInitialAccessToken(this);
367
+ return this.#InitialAccessToken;
368
+ }
369
+
370
+ get RegistrationAccessToken() {
371
+ this.#RegistrationAccessToken ||= models.getRegistrationAccessToken(this);
372
+ return this.#RegistrationAccessToken;
373
+ }
374
+
375
+ get DeviceCode() {
376
+ this.#DeviceCode ||= models.getDeviceCode(this);
377
+ return this.#DeviceCode;
378
+ }
379
+
380
+ get BackchannelAuthenticationRequest() {
381
+ this.#BackchannelAuthenticationRequest ||= models.getBackchannelAuthenticationRequest(this);
382
+ return this.#BackchannelAuthenticationRequest;
383
+ }
384
+
385
+ get PushedAuthorizationRequest() {
386
+ this.#PushedAuthorizationRequest ||= models.getPushedAuthorizationRequest(this);
387
+ return this.#PushedAuthorizationRequest;
388
+ }
389
+
390
+ get ReplayDetection() {
391
+ this.#ReplayDetection ||= models.getReplayDetection(this);
392
+ return this.#ReplayDetection;
393
+ }
394
+
395
+ // eslint-disable-next-line class-methods-use-this
396
+ get ResourceServer() { return ResourceServer; }
397
+
398
+ async #getInteraction(req, res) {
399
+ const ctx = this.createContext(req, res);
400
+ const id = ctx.cookies.get(
401
+ this.cookieName('interaction'),
402
+ this.#int.configuration.cookies.short,
403
+ );
404
+ if (!id) {
405
+ throw new SessionNotFound('interaction session id cookie not found');
406
+ }
407
+ const interaction = await this.Interaction.find(id);
408
+ if (!interaction) {
409
+ throw new SessionNotFound('interaction session not found');
410
+ }
411
+
412
+ if (interaction.session?.uid) {
413
+ const session = await this.Session.findByUid(interaction.session.uid);
414
+ if (!session) {
415
+ throw new SessionNotFound('session not found');
416
+ }
417
+ if (interaction.session.accountId !== session.accountId) {
418
+ throw new SessionNotFound('session principal changed');
419
+ }
420
+ }
421
+
422
+ return interaction;
423
+ }
424
+
425
+ use(fn) {
426
+ Koa.prototype.use.call(this, fn);
427
+ this.middleware.splice(this.middleware.indexOf(this.#exec), 0, this.middleware.pop());
428
+ return this;
429
+ }
430
+
431
+ // eslint-disable-next-line class-methods-use-this
432
+ get [Symbol.toStringTag]() {
433
+ return 'Provider';
434
+ }
435
+
436
+ toJSON() {
437
+ return { issuer: this.issuer };
438
+ }
439
+
440
+ inspect() {
441
+ return `[${this[Symbol.toStringTag]} ${this.issuer}]`;
442
+ }
443
+
444
+ static get ctx() {
445
+ return als.getStore();
446
+ }
447
+ }
448
+
449
+ Object.defineProperty(Provider.prototype, 'app', {
450
+ get: util.deprecate(function app() {
451
+ return this;
452
+ }, '.app getter is deprecated. The Provider instance is now the Koa app itself'),
453
+ });
@@ -0,0 +1,36 @@
1
+ import htmlSafe from '../helpers/html_safe.js';
2
+ import pushInlineSha from '../helpers/script_src_sha.js';
3
+
4
+ const statusCodes = new Set([200, 400, 500]);
5
+
6
+ export default function formPost(ctx, action, inputs) {
7
+ ctx.type = 'html';
8
+
9
+ if (!statusCodes.has(ctx.status)) {
10
+ ctx.status = 'error' in inputs ? 400 : 200;
11
+ }
12
+
13
+ const formInputs = Object.entries(inputs)
14
+ .map(([key, value]) => `<input type="hidden" name="${key}" value="${htmlSafe(value)}"/>`)
15
+ .join('\n');
16
+
17
+ ctx.body = `<!DOCTYPE html>
18
+ <html>
19
+ <head>
20
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
21
+ <title>Submitting Callback</title>
22
+ <script>${pushInlineSha(ctx, `
23
+ document.addEventListener('DOMContentLoaded', function () { document.forms[0].submit() });
24
+ `)}</script>
25
+ </head>
26
+ <body>
27
+ <form method="post" action="${htmlSafe(action)}">
28
+ ${formInputs}
29
+ <noscript>
30
+ Your browser does not support JavaScript or you've disabled it.<br/>
31
+ <button autofocus type="submit">Continue</button>
32
+ </noscript>
33
+ </form>
34
+ </body>
35
+ </html>`;
36
+ }
@@ -0,0 +1,7 @@
1
+ import formatUri from '../helpers/redirect_uri.js';
2
+
3
+ export default (ctx, redirectUri, payload) => {
4
+ const uri = formatUri(redirectUri, payload, 'fragment');
5
+ ctx.status = 303;
6
+ ctx.redirect(uri);
7
+ };
@@ -0,0 +1,15 @@
1
+ /* eslint-disable camelcase */
2
+
3
+ import form_post from './form_post.js';
4
+ import fragment from './fragment.js';
5
+ import query from './query.js';
6
+ import jwt from './jwt.js';
7
+ import webMessage from './web_message.js';
8
+
9
+ export {
10
+ form_post,
11
+ fragment,
12
+ query,
13
+ jwt,
14
+ webMessage,
15
+ };
@@ -0,0 +1,43 @@
1
+ /* eslint-disable camelcase */
2
+ import query from './query.js';
3
+ import fragment from './fragment.js';
4
+ import form_post from './form_post.js';
5
+ import web_message from './web_message.js';
6
+
7
+ const modes = {
8
+ query,
9
+ fragment,
10
+ form_post,
11
+ web_message,
12
+ };
13
+
14
+ const RENDER_MODES = new Set(['form_post', 'web_message']);
15
+
16
+ export default async function jwtResponseModes(ctx, redirectUri, payload) {
17
+ const { params } = ctx.oidc;
18
+
19
+ let mode;
20
+ if (params.response_mode === 'jwt') {
21
+ if (typeof params.response_type === 'string' && params.response_type.includes('token')) {
22
+ mode = 'fragment';
23
+ } else {
24
+ mode = 'query';
25
+ }
26
+ } else {
27
+ ([mode] = params.response_mode.split('.'));
28
+ }
29
+
30
+ const { IdToken } = this;
31
+ const token = new IdToken({}, { ctx });
32
+ token.extra = payload;
33
+
34
+ const response = await token.issue({ use: 'authorization' });
35
+
36
+ if (RENDER_MODES.has(mode)) {
37
+ if ('error' in payload && payload.error !== 'server_error') {
38
+ ctx.status = 400;
39
+ }
40
+ }
41
+
42
+ return modes[mode](ctx, redirectUri, { response });
43
+ }
@@ -0,0 +1,7 @@
1
+ import formatUri from '../helpers/redirect_uri.js';
2
+
3
+ export default (ctx, redirectUri, payload) => {
4
+ const uri = formatUri(redirectUri, payload, 'query');
5
+ ctx.status = 303;
6
+ ctx.redirect(uri);
7
+ };
@@ -0,0 +1,55 @@
1
+ import jsesc from 'jsesc';
2
+
3
+ import pushInlineSha from '../helpers/script_src_sha.js';
4
+
5
+ const statusCodes = new Set([200, 400, 500]);
6
+
7
+ export default function webMessage(ctx, redirectUri, response) {
8
+ ctx.type = 'html';
9
+
10
+ if (!statusCodes.has(ctx.status)) {
11
+ ctx.status = 'error' in response ? 400 : 200;
12
+ }
13
+
14
+ ctx.response.remove('x-frame-options');
15
+ const csp = ctx.response.get('content-security-policy');
16
+ if (csp?.includes('frame-ancestors')) {
17
+ ctx.set('content-security-policy', csp.split(';')
18
+ .filter((directive) => !directive.includes('frame-ancestors'))
19
+ .join(';'));
20
+ }
21
+
22
+ const data = jsesc({
23
+ response,
24
+ redirect_uri: redirectUri,
25
+ }, { json: true, isScriptContext: true });
26
+
27
+ ctx.body = `<!DOCTYPE html>
28
+ <html>
29
+ <head>
30
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
31
+ <title>Web Message Response</title>
32
+ </head>
33
+ <body>
34
+ <script>${pushInlineSha(ctx, `
35
+ (function(win, doc) {
36
+ var data = ${data};
37
+
38
+ var response = data.response;
39
+ var redirect_uri = data.redirect_uri;
40
+
41
+ var authorization_response = { type: 'authorization_response', response: response };
42
+
43
+ var respond = function (target, origin) {
44
+ doc.scripts[0].parentElement.removeChild(doc.scripts[0]);
45
+ target.postMessage(authorization_response, origin);
46
+ win.close();
47
+ };
48
+
49
+ var mainWin = win.opener || win.parent;
50
+ respond(mainWin, redirect_uri);
51
+ })(this, this.document);
52
+ `)}</script>
53
+ </body>
54
+ </html>`;
55
+ }
@@ -0,0 +1,7 @@
1
+ import Params from '../helpers/params.js';
2
+
3
+ export default function assembleParams(allowList, ctx, next) {
4
+ const params = ctx.method === 'POST' ? ctx.oidc.body : ctx.query;
5
+ ctx.oidc.params = new (Params(allowList))(params);
6
+ return next();
7
+ }