@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,41 @@
1
+ import { InvalidRedirectUri, InvalidRequest } from '../../helpers/errors.js';
2
+ import instance from '../../helpers/weak_cache.js';
3
+
4
+ function allowUnregisteredUri(ctx) {
5
+ const { pushedAuthorizationRequests } = instance(ctx.oidc.provider).features;
6
+
7
+ return (ctx.oidc.route === 'pushed_authorization_request' || ('PushedAuthorizationRequest' in ctx.oidc.entities))
8
+ && pushedAuthorizationRequests.allowUnregisteredRedirectUris
9
+ && ctx.oidc.client.sectorIdentifierUri === undefined
10
+ && ctx.oidc.client.clientAuthMethod !== 'none';
11
+ }
12
+
13
+ function validateUnregisteredUri(ctx) {
14
+ const { redirectUris: validator } = ctx.oidc.provider.Client.Schema.prototype;
15
+
16
+ validator.call({
17
+ ...ctx.oidc.client.metadata(),
18
+ invalidate(detail) {
19
+ throw new InvalidRequest(detail.replace('redirect_uris', 'redirect_uri'));
20
+ },
21
+ }, [ctx.oidc.params.redirect_uri]);
22
+
23
+ return true;
24
+ }
25
+
26
+ /*
27
+ * Checks that provided redirect_uri is allowed
28
+ */
29
+ export default function checkRedirectUri(ctx, next) {
30
+ if (!ctx.oidc.client.redirectUriAllowed(ctx.oidc.params.redirect_uri)) {
31
+ if (!allowUnregisteredUri(ctx)) {
32
+ throw new InvalidRedirectUri();
33
+ }
34
+
35
+ validateUnregisteredUri(ctx);
36
+ }
37
+
38
+ ctx.oidc.redirectUriCheckPerformed = true;
39
+
40
+ return next();
41
+ }
@@ -0,0 +1,16 @@
1
+ import { InvalidRequest } from '../../helpers/errors.js';
2
+
3
+ /*
4
+ * Validates the requested_expiry parameter
5
+ */
6
+ export default function checkRequestedExpiry(ctx, next) {
7
+ if (ctx.oidc.params.requested_expiry !== undefined) {
8
+ const requestedExpiry = +ctx.oidc.params.requested_expiry;
9
+
10
+ if (!Number.isSafeInteger(requestedExpiry) || Math.sign(requestedExpiry) !== 1) {
11
+ throw new InvalidRequest('invalid requested_expiry parameter value');
12
+ }
13
+ }
14
+
15
+ return next();
16
+ }
@@ -0,0 +1,54 @@
1
+ import { InvalidRequest, UnsupportedResponseMode } from '../../helpers/errors.js';
2
+ import instance from '../../helpers/weak_cache.js';
3
+ import { isFrontChannel } from '../../helpers/resolve_response_mode.js';
4
+
5
+ /*
6
+ * Resolves and assigns params.response_mode if it was not explicitly requested. Validates id_token
7
+ * and token containing responses do not use response_mode query.
8
+ */
9
+ export default function checkResponseMode(ctx, next) {
10
+ const { params, client } = ctx.oidc;
11
+
12
+ const frontChannel = isFrontChannel(params.response_type);
13
+
14
+ const mode = ctx.oidc.responseMode;
15
+
16
+ if (
17
+ mode !== undefined
18
+ && !instance(ctx.oidc.provider).responseModes.has(mode)
19
+ ) {
20
+ params.response_mode = undefined;
21
+ throw new UnsupportedResponseMode();
22
+ }
23
+
24
+ if (!ctx.oidc.client.responseModeAllowed(mode, params.response_type, ctx.oidc.fapiProfile)) {
25
+ throw new InvalidRequest('requested response_mode is not allowed for this client or request');
26
+ }
27
+
28
+ const JWT = /jwt/.test(mode);
29
+
30
+ if (
31
+ mode !== undefined && JWT
32
+ && (
33
+ /^HS/.test(client.authorizationSignedResponseAlg)
34
+ || /^(A|dir$)/.test(client.authorizationEncryptedResponseAlg)
35
+ )
36
+ ) {
37
+ try {
38
+ client.checkClientSecretExpiration('client secret is expired, cannot issue a JWT Authorization response');
39
+ } catch (err) {
40
+ const [explicit] = mode === 'jwt' ? [undefined] : mode.split('.');
41
+ params.response_mode = explicit || undefined;
42
+ throw err;
43
+ }
44
+ }
45
+
46
+ const msg = 'requested response_mode is not allowed for the requested response_type';
47
+ if (mode === 'query' && frontChannel) {
48
+ throw new InvalidRequest(msg);
49
+ } else if (mode === 'query.jwt' && frontChannel && !client.authorizationEncryptedResponseAlg) {
50
+ throw new InvalidRequest(`${msg} unless encrypted`);
51
+ }
52
+
53
+ return next();
54
+ }
@@ -0,0 +1,26 @@
1
+ import instance from '../../helpers/weak_cache.js';
2
+ import {
3
+ UnsupportedResponseType,
4
+ InvalidRequest,
5
+ } from '../../helpers/errors.js';
6
+
7
+ /*
8
+ * Validates requested response_type is supported by the provided and allowed in the client
9
+ * configuration
10
+ */
11
+ export default function checkResponseType(ctx, next) {
12
+ const { params } = ctx.oidc;
13
+ const supported = instance(ctx.oidc.provider).configuration.responseTypes;
14
+
15
+ params.response_type = [...new Set(params.response_type.split(' '))].sort().join(' ');
16
+
17
+ if (!supported.includes(params.response_type)) {
18
+ throw new UnsupportedResponseType();
19
+ }
20
+
21
+ if (!ctx.oidc.client.responseTypeAllowed(params.response_type)) {
22
+ throw new InvalidRequest('requested response_type is not allowed for this client');
23
+ }
24
+
25
+ return next();
26
+ }
@@ -0,0 +1,53 @@
1
+ import { InvalidScope } from '../../helpers/errors.js';
2
+ import instance from '../../helpers/weak_cache.js';
3
+
4
+ /*
5
+ * Validates that all requested scopes are supported by the provider, and that offline_access prompt
6
+ * is requested together with consent prompt
7
+ */
8
+ export default async function checkScope(PARAM_LIST, ctx, next) {
9
+ const { scopes: statics } = instance(ctx.oidc.provider).configuration;
10
+ const { prompts, client } = ctx.oidc;
11
+
12
+ const scopes = [...new Set(ctx.oidc.params.scope?.split(' '))];
13
+
14
+ const responseType = ctx.oidc.params.response_type;
15
+
16
+ /*
17
+ * Upon receipt of a scope parameter containing the offline_access value, the Authorization Server
18
+ *
19
+ * MUST ensure that the prompt parameter contains consent
20
+ * MUST ignore the offline_access request unless the Client is using a response_type value that
21
+ * would result in an Authorization Code being returned,
22
+ *
23
+ * Furthermore no offline_access will be granted if the client doesn't have the grant allowed
24
+ */
25
+
26
+ if (scopes.includes('offline_access')) {
27
+ if (
28
+ (PARAM_LIST.has('response_type') && !responseType.includes('code'))
29
+ || (PARAM_LIST.has('prompt') && !prompts.has('consent'))
30
+ || !client.grantTypeAllowed('refresh_token')
31
+ ) {
32
+ scopes.splice(scopes.indexOf('offline_access'), 1);
33
+ }
34
+ }
35
+
36
+ if (scopes.length) {
37
+ ctx.oidc.params.scope = scopes.join(' ');
38
+ } else {
39
+ ctx.oidc.params.scope = undefined;
40
+ }
41
+
42
+ if (client.scope) {
43
+ const allowList = new Set(client.scope.split(' '));
44
+
45
+ for (const scope of scopes.filter(Set.prototype.has.bind(statics))) {
46
+ if (!allowList.has(scope)) {
47
+ throw new InvalidScope('requested scope is not allowed', scope);
48
+ }
49
+ }
50
+ }
51
+
52
+ return next();
53
+ }
@@ -0,0 +1,58 @@
1
+ import { InvalidRequest, UnknownUserId } from '../../helpers/errors.js';
2
+ import omitBy from '../../helpers/_/omit_by.js';
3
+ import instance from '../../helpers/weak_cache.js';
4
+
5
+ import checkIdTokenHint from './check_id_token_hint.js';
6
+
7
+ export default async function cibaLoadAccount(ctx, next) {
8
+ const mechanisms = omitBy({
9
+ login_hint_token: ctx.oidc.params.login_hint_token,
10
+ id_token_hint: ctx.oidc.params.id_token_hint,
11
+ login_hint: ctx.oidc.params.login_hint,
12
+ }, (value) => typeof value !== 'string' || !value);
13
+
14
+ let mechanism;
15
+ let length;
16
+ let value;
17
+
18
+ try {
19
+ ({ 0: [mechanism, value], length } = Object.entries(mechanisms));
20
+ } catch (err) {}
21
+
22
+ if (!length) {
23
+ throw new InvalidRequest('missing one of required parameters login_hint_token, id_token_hint, or login_hint');
24
+ } else if (length !== 1) {
25
+ throw new InvalidRequest('only one of required parameters login_hint_token, id_token_hint, or login_hint must be provided');
26
+ }
27
+
28
+ const { findAccount, features } = instance(ctx.oidc.provider).configuration;
29
+ const { ciba } = features;
30
+
31
+ let accountId;
32
+ // eslint-disable-next-line default-case
33
+ switch (mechanism) {
34
+ case 'id_token_hint':
35
+ await checkIdTokenHint(ctx, () => {});
36
+ ({ payload: { sub: accountId } } = ctx.oidc.entities.IdTokenHint);
37
+ break;
38
+ case 'login_hint_token':
39
+ accountId = await ciba.processLoginHintToken(ctx, value);
40
+ break;
41
+ case 'login_hint':
42
+ accountId = await ciba.processLoginHint(ctx, value);
43
+ break;
44
+ }
45
+
46
+ if (!accountId) {
47
+ throw new UnknownUserId('could not identify end-user');
48
+ }
49
+ const account = await findAccount(ctx, accountId);
50
+ if (!account) {
51
+ throw new UnknownUserId('could not identify end-user');
52
+ }
53
+ ctx.oidc.entity('Account', account);
54
+
55
+ await ciba.verifyUserCode(ctx, account, value);
56
+
57
+ return next();
58
+ }
@@ -0,0 +1,13 @@
1
+ import presence from '../../helpers/validate_presence.js';
2
+
3
+ export default function oidcRequired(ctx, next) {
4
+ const required = new Set(['scope']);
5
+
6
+ if (ctx.oidc.client.backchannelTokenDeliveryMode !== 'poll') {
7
+ required.add('client_notification_token');
8
+ }
9
+
10
+ presence(ctx, ...required);
11
+
12
+ return next();
13
+ }
@@ -0,0 +1,31 @@
1
+ import { generate, normalize } from '../../helpers/user_codes.js';
2
+ import instance from '../../helpers/weak_cache.js';
3
+
4
+ export default async function deviceAuthorizationResponse(ctx) {
5
+ const { charset, mask, deviceInfo } = instance(ctx.oidc.provider).features.deviceFlow;
6
+ const userCode = generate(charset, mask);
7
+
8
+ const dc = new ctx.oidc.provider.DeviceCode({
9
+ client: ctx.oidc.client,
10
+ deviceInfo: deviceInfo(ctx),
11
+ params: ctx.oidc.params.toPlainObject(),
12
+ userCode: normalize(userCode),
13
+ });
14
+
15
+ if (ctx.oidc.client.clientAuthMethod === 'attest_jwt_client_auth') {
16
+ await dc.setAttestBinding(ctx);
17
+ }
18
+
19
+ ctx.oidc.entity('DeviceCode', dc);
20
+ ctx.body = {
21
+ device_code: await dc.save(),
22
+ user_code: userCode,
23
+ verification_uri: ctx.oidc.urlFor('code_verification'),
24
+ verification_uri_complete: ctx.oidc.urlFor('code_verification', {
25
+ query: { user_code: userCode },
26
+ }),
27
+ expires_in: dc.expiration,
28
+ };
29
+
30
+ ctx.oidc.provider.emit('device_authorization.success', ctx, ctx.body);
31
+ }
@@ -0,0 +1,31 @@
1
+ import Params from '../../helpers/params.js';
2
+ import {
3
+ NotFoundError, ExpiredError, AlreadyUsedError,
4
+ } from '../../helpers/re_render_errors.js';
5
+
6
+ export default async function deviceUserFlow(allowList, ctx, next) {
7
+ if (ctx.oidc.route === 'device_resume') {
8
+ const code = await ctx.oidc.provider.DeviceCode.find(
9
+ ctx.oidc.entities.Interaction.deviceCode,
10
+ { ignoreExpiration: true, ignoreSessionBinding: true },
11
+ );
12
+
13
+ if (!code) {
14
+ throw new NotFoundError();
15
+ }
16
+
17
+ if (code.isExpired) {
18
+ throw new ExpiredError();
19
+ }
20
+
21
+ if (code.error || code.accountId) {
22
+ throw new AlreadyUsedError();
23
+ }
24
+
25
+ ctx.oidc.entity('DeviceCode', code);
26
+ } else {
27
+ ctx.oidc.params = new (Params(allowList))(ctx.oidc.deviceCode.params);
28
+ }
29
+
30
+ await next();
31
+ }
@@ -0,0 +1,37 @@
1
+ import { AccessDenied } from '../../helpers/errors.js';
2
+ import errOut from '../../helpers/err_out.js';
3
+ import {
4
+ ReRenderError, AbortedError,
5
+ } from '../../helpers/re_render_errors.js';
6
+
7
+ export default async function deviceUserFlowErrors(ctx, next) {
8
+ try {
9
+ await next();
10
+ } catch (err) {
11
+ if (!(err instanceof ReRenderError)) {
12
+ const out = errOut(err);
13
+
14
+ let code = ctx.oidc.deviceCode;
15
+
16
+ if (!code && ctx.oidc.entities.Interaction?.deviceCode) {
17
+ code = await ctx.oidc.provider.DeviceCode.find(
18
+ ctx.oidc.entities.Interaction.deviceCode,
19
+ { ignoreExpiration: true, ignoreSessionBinding: true },
20
+ );
21
+ }
22
+
23
+ if (code) {
24
+ Object.assign(code, {
25
+ error: out.error,
26
+ errorDescription: out.error_description,
27
+ });
28
+ await code.save();
29
+ if (err instanceof AccessDenied) {
30
+ throw new AbortedError();
31
+ }
32
+ }
33
+ }
34
+
35
+ throw err;
36
+ }
37
+ }
@@ -0,0 +1,55 @@
1
+ import instance from '../../helpers/weak_cache.js';
2
+ import combinedScope from '../../helpers/combined_scope.js';
3
+
4
+ export default async function deviceVerificationResponse(ctx) {
5
+ const { configuration, features } = instance(ctx.oidc.provider);
6
+ const code = ctx.oidc.deviceCode;
7
+
8
+ const scopeSet = combinedScope(
9
+ ctx.oidc.grant,
10
+ ctx.oidc.requestParamScopes,
11
+ ctx.oidc.resourceServers,
12
+ );
13
+
14
+ Object.assign(code, {
15
+ accountId: ctx.oidc.session.accountId,
16
+ acr: ctx.oidc.acr,
17
+ amr: ctx.oidc.amr,
18
+ authTime: ctx.oidc.session.authTime(),
19
+ claims: ctx.oidc.claims,
20
+ grantId: ctx.oidc.session.grantIdFor(ctx.oidc.client.clientId),
21
+ scope: [...scopeSet].join(' '),
22
+ sessionUid: ctx.oidc.session.uid,
23
+ resource: Object.keys(ctx.oidc.resourceServers),
24
+ });
25
+
26
+ if (Object.keys(code.claims).length === 0) {
27
+ delete code.claims;
28
+ }
29
+
30
+ // eslint-disable-next-line default-case
31
+ switch (code.resource.length) {
32
+ case 0:
33
+ delete code.resource;
34
+ break;
35
+ case 1:
36
+ [code.resource] = code.resource;
37
+ break;
38
+ }
39
+
40
+ if (await configuration.expiresWithSession(ctx, code)) {
41
+ code.expiresWithSession = true;
42
+ } else {
43
+ ctx.oidc.session.authorizationFor(ctx.oidc.client.clientId).persistsLogout = true;
44
+ }
45
+
46
+ if (ctx.oidc.client.includeSid() || (ctx.oidc.claims.id_token && 'sid' in ctx.oidc.claims.id_token)) {
47
+ code.sid = ctx.oidc.session.sidFor(ctx.oidc.client.clientId);
48
+ }
49
+
50
+ await code.save();
51
+
52
+ await features.deviceFlow.successSource(ctx);
53
+
54
+ ctx.oidc.provider.emit('authorization.success', ctx);
55
+ }
@@ -0,0 +1,200 @@
1
+ import noCache from '../../shared/no_cache.js';
2
+ import bodyParser from '../../shared/conditional_body.js';
3
+ import rejectDupes from '../../shared/reject_dupes.js';
4
+ import paramsMiddleware from '../../shared/assemble_params.js';
5
+ import sessionMiddleware from '../../shared/session.js';
6
+ import instance from '../../helpers/weak_cache.js';
7
+ import { PARAM_LIST } from '../../consts/index.js';
8
+ import checkRar from '../../shared/check_rar.js';
9
+ import checkResource from '../../shared/check_resource.js';
10
+ import getClientAuth from '../../shared/client_auth.js';
11
+
12
+ import checkClient from './check_client.js';
13
+ import checkResponseMode from './check_response_mode.js';
14
+ import rejectUnsupported from './reject_unsupported.js';
15
+ import rejectRegistration from './reject_registration.js';
16
+ import oauthRequired from './oauth_required.js';
17
+ import oneRedirectUriClients from './one_redirect_uri_clients.js';
18
+ import loadPushedAuthorizationRequest from './load_pushed_authorization_request.js';
19
+ import processRequestObject from './process_request_object.js';
20
+ import oidcRequired from './oidc_required.js';
21
+ import cibaRequired from './ciba_required.js';
22
+ import checkPrompt from './check_prompt.js';
23
+ import checkMaxAge from './check_max_age.js';
24
+ import checkIdTokenHint from './check_id_token_hint.js';
25
+ import checkScope from './check_scope.js';
26
+ import checkResponseType from './check_response_type.js';
27
+ import checkRedirectUri from './check_redirect_uri.js';
28
+ import assignDefaults from './assign_defaults.js';
29
+ import checkClaims from './check_claims.js';
30
+ import assignClaims from './assign_claims.js';
31
+ import loadAccount from './load_account.js';
32
+ import loadGrant from './load_grant.js';
33
+ import interactions from './interactions.js';
34
+ import respond from './respond.js';
35
+ import checkPKCE from './check_pkce.js';
36
+ import interactionEmit from './interaction_emit.js';
37
+ import getResume from './resume.js';
38
+ import checkClientGrantType from './check_client_grant_type.js';
39
+ import checkOpenidScope from './check_openid_scope.js';
40
+ import deviceAuthorizationResponse from './device_authorization_response.js';
41
+ import authenticatedClientId from './authenticated_client_id.js';
42
+ import deviceUserFlow from './device_user_flow.js';
43
+ import deviceUserFlowErrors from './device_user_flow_errors.js';
44
+ import deviceUserFlowResponse from './device_user_flow_response.js';
45
+ import pushedAuthorizationRequestRemapErrors from './pushed_authorization_request_remap_errors.js';
46
+ import backchannelRequestRemapErrors from './backchannel_request_remap_errors.js';
47
+ import stripOutsideJarParams from './strip_outside_jar_params.js';
48
+ import pushedAuthorizationRequestResponse from './pushed_authorization_request_response.js';
49
+ import cibaLoadAccount from './ciba_load_account.js';
50
+ import checkRequestedExpiry from './check_requested_expiry.js';
51
+ import backchannelRequestResponse from './backchannel_request_response.js';
52
+ import checkCibaContext from './check_ciba_context.js';
53
+ import checkDpopJkt from './check_dpop_jkt.js';
54
+ import checkExtraParams from './check_extra_params.js';
55
+ import unsupportedRar from './unsupported_rar.js';
56
+
57
+ const A = 'authorization';
58
+ const R = 'resume';
59
+ const DA = 'device_authorization';
60
+ const CV = 'code_verification';
61
+ const DR = 'device_resume';
62
+ const PAR = 'pushed_authorization_request';
63
+ const BA = 'backchannel_authentication';
64
+
65
+ const authRequired = new Set([DA, PAR, BA]);
66
+
67
+ const parseBody = bodyParser.bind(undefined, 'application/x-www-form-urlencoded');
68
+
69
+ export default function authorizationAction(provider, endpoint) {
70
+ const {
71
+ features: {
72
+ claimsParameter,
73
+ dPoP,
74
+ resourceIndicators,
75
+ richAuthorizationRequests,
76
+ webMessageResponseMode,
77
+ },
78
+ extraParams,
79
+ } = instance(provider).configuration;
80
+
81
+ const allowList = new Set(PARAM_LIST);
82
+
83
+ if (webMessageResponseMode.enabled) {
84
+ allowList.add('web_message_uri'); // adding it just so that it can be rejected when detected
85
+ }
86
+
87
+ if (claimsParameter.enabled) {
88
+ allowList.add('claims');
89
+ }
90
+
91
+ let rejectDupesMiddleware = rejectDupes.bind(undefined, {});
92
+ if (resourceIndicators.enabled) {
93
+ allowList.add('resource');
94
+ rejectDupesMiddleware = rejectDupes.bind(undefined, { except: new Set(['resource']) });
95
+ }
96
+
97
+ if (richAuthorizationRequests.enabled) {
98
+ allowList.add('authorization_details');
99
+ }
100
+
101
+ extraParams.forEach(Set.prototype.add.bind(allowList));
102
+
103
+ if ([DA, CV, DR, BA].includes(endpoint)) {
104
+ allowList.delete('web_message_uri');
105
+ allowList.delete('response_type');
106
+ allowList.delete('response_mode');
107
+ allowList.delete('code_challenge_method');
108
+ allowList.delete('code_challenge');
109
+ allowList.delete('state');
110
+ allowList.delete('redirect_uri');
111
+ allowList.delete('prompt');
112
+ }
113
+
114
+ if (endpoint === BA) {
115
+ allowList.add('client_notification_token');
116
+ allowList.add('login_hint_token');
117
+ allowList.add('binding_message');
118
+ allowList.add('user_code');
119
+ allowList.add('request_context');
120
+ allowList.add('requested_expiry');
121
+ }
122
+
123
+ if (dPoP && [A, R, PAR].includes(endpoint)) {
124
+ allowList.add('dpop_jkt');
125
+ }
126
+
127
+ const stack = [];
128
+
129
+ const use = (middleware, ...only) => {
130
+ if (only.includes(endpoint)) {
131
+ stack.push(middleware());
132
+ }
133
+ };
134
+ const returnTo = /^(code|device)_/.test(endpoint) ? 'device_resume' : 'resume';
135
+
136
+ /* eslint-disable no-multi-spaces, space-in-parens, function-paren-newline */
137
+ use(() => noCache, A, DA, R, CV, DR, PAR, BA);
138
+ use(() => sessionMiddleware, A, R, DR );
139
+ use(() => deviceUserFlowErrors, CV, DR );
140
+ use(() => getResume.bind(undefined, allowList, returnTo), R, DR );
141
+ use(() => deviceUserFlow.bind(undefined, allowList), CV, DR );
142
+ use(() => parseBody, A, DA, PAR, BA);
143
+ if (authRequired.has(endpoint)) {
144
+ const { params: authParams, middleware: clientAuth } = getClientAuth(provider);
145
+ use(() => paramsMiddleware.bind(undefined, authParams), DA, PAR, BA);
146
+ for (const clientAuthMiddlware of clientAuth) {
147
+ use(() => clientAuthMiddlware, DA, PAR, BA);
148
+ }
149
+ }
150
+ use(() => authenticatedClientId, DA, BA);
151
+ use(() => paramsMiddleware.bind(undefined, allowList), A, DA, PAR, BA);
152
+ use(() => rejectDupesMiddleware, A, DA, PAR, BA);
153
+ use(() => rejectUnsupported, A, DA, PAR, BA);
154
+ use(() => stripOutsideJarParams, PAR, BA);
155
+ use(() => checkClient, A, DA, R, CV, DR );
156
+ use(() => checkClientGrantType, DA, BA);
157
+ use(() => pushedAuthorizationRequestRemapErrors, PAR );
158
+ use(() => backchannelRequestRemapErrors, BA);
159
+ use(() => loadPushedAuthorizationRequest, A );
160
+ use(() => processRequestObject.bind(
161
+ undefined, allowList, rejectDupesMiddleware,
162
+ ), A, DA, PAR, BA);
163
+ use(() => checkResponseMode, A, PAR );
164
+ use(() => oneRedirectUriClients, A, PAR );
165
+ use(() => oauthRequired, A, PAR );
166
+ use(() => rejectRegistration, A, DA, PAR, BA);
167
+ use(() => checkResponseType, A, PAR );
168
+ use(() => oidcRequired, A, PAR );
169
+ use(() => cibaRequired, BA);
170
+ use(() => assignDefaults, A, DA, BA);
171
+ use(() => checkPrompt, A, PAR );
172
+ use(() => checkScope.bind(undefined, allowList), A, DA, PAR, BA);
173
+ use(() => checkOpenidScope.bind(undefined, allowList), A, DA, PAR, BA);
174
+ use(() => checkRedirectUri, A, PAR );
175
+ use(() => checkPKCE, A, PAR );
176
+ use(() => checkClaims, A, DA, PAR, BA);
177
+ use(() => unsupportedRar, DA );
178
+ use(() => checkRar, A, PAR, BA);
179
+ use(() => checkResource, A, DA, R, CV, DR, PAR, BA);
180
+ use(() => checkMaxAge, A, DA, PAR, BA);
181
+ use(() => checkRequestedExpiry, BA);
182
+ use(() => checkCibaContext, BA);
183
+ use(() => checkIdTokenHint, A, DA, PAR );
184
+ use(() => checkDpopJkt, PAR );
185
+ use(() => checkExtraParams, A, DA, PAR, BA);
186
+ use(() => interactionEmit, A, R, CV, DR );
187
+ use(() => assignClaims, A, R, CV, DR, BA);
188
+ use(() => cibaLoadAccount, BA);
189
+ use(() => loadAccount, A, R, CV, DR );
190
+ use(() => loadGrant, A, R, CV, DR );
191
+ use(() => interactions.bind(undefined, returnTo), A, R, CV, DR );
192
+ use(() => respond, A, R );
193
+ use(() => deviceAuthorizationResponse, DA );
194
+ use(() => deviceUserFlowResponse, CV, DR );
195
+ use(() => pushedAuthorizationRequestResponse, PAR );
196
+ use(() => backchannelRequestResponse, BA);
197
+ /* eslint-enable no-multi-spaces, space-in-parens, function-paren-newline */
198
+
199
+ return stack;
200
+ }
@@ -0,0 +1,9 @@
1
+ const resumeRoutes = new Set(['resume', 'device_resume']);
2
+
3
+ export default function interactionEmit(ctx, next) {
4
+ if (resumeRoutes.has(ctx.oidc.route)) {
5
+ ctx.oidc.provider.emit('interaction.ended', ctx);
6
+ }
7
+
8
+ return next();
9
+ }