Authlib 1.6.8__tar.gz → 1.6.10__tar.gz

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 (213) hide show
  1. {authlib-1.6.8 → authlib-1.6.10}/Authlib.egg-info/PKG-INFO +1 -1
  2. {authlib-1.6.8 → authlib-1.6.10}/PKG-INFO +1 -1
  3. {authlib-1.6.8 → authlib-1.6.10}/authlib/consts.py +1 -1
  4. {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/__init__.py +1 -0
  5. {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc7515/jws.py +6 -4
  6. {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc7515/models.py +1 -0
  7. {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc7516/jwe.py +11 -5
  8. {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc7516/models.py +1 -0
  9. {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc7518/jwe_algs.py +7 -7
  10. {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc7518/jws_algs.py +1 -0
  11. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc6749/authorization_server.py +12 -1
  12. {authlib-1.6.8 → authlib-1.6.10}/authlib/oidc/core/claims.py +2 -2
  13. {authlib-1.6.8 → authlib-1.6.10}/Authlib.egg-info/SOURCES.txt +0 -0
  14. {authlib-1.6.8 → authlib-1.6.10}/Authlib.egg-info/dependency_links.txt +0 -0
  15. {authlib-1.6.8 → authlib-1.6.10}/Authlib.egg-info/requires.txt +0 -0
  16. {authlib-1.6.8 → authlib-1.6.10}/Authlib.egg-info/top_level.txt +0 -0
  17. {authlib-1.6.8 → authlib-1.6.10}/LICENSE +0 -0
  18. {authlib-1.6.8 → authlib-1.6.10}/MANIFEST.in +0 -0
  19. {authlib-1.6.8 → authlib-1.6.10}/README.md +0 -0
  20. {authlib-1.6.8 → authlib-1.6.10}/authlib/__init__.py +0 -0
  21. {authlib-1.6.8 → authlib-1.6.10}/authlib/common/__init__.py +0 -0
  22. {authlib-1.6.8 → authlib-1.6.10}/authlib/common/encoding.py +0 -0
  23. {authlib-1.6.8 → authlib-1.6.10}/authlib/common/errors.py +0 -0
  24. {authlib-1.6.8 → authlib-1.6.10}/authlib/common/security.py +0 -0
  25. {authlib-1.6.8 → authlib-1.6.10}/authlib/common/urls.py +0 -0
  26. {authlib-1.6.8 → authlib-1.6.10}/authlib/deprecate.py +0 -0
  27. {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/__init__.py +0 -0
  28. {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/base_client/__init__.py +0 -0
  29. {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/base_client/async_app.py +0 -0
  30. {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/base_client/async_openid.py +0 -0
  31. {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/base_client/errors.py +0 -0
  32. {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/base_client/framework_integration.py +0 -0
  33. {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/base_client/registry.py +0 -0
  34. {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/base_client/sync_app.py +0 -0
  35. {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/base_client/sync_openid.py +0 -0
  36. {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/django_client/__init__.py +0 -0
  37. {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/django_client/apps.py +0 -0
  38. {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/django_client/integration.py +0 -0
  39. {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/django_oauth1/__init__.py +0 -0
  40. {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/django_oauth1/authorization_server.py +0 -0
  41. {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/django_oauth1/nonce.py +0 -0
  42. {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/django_oauth1/resource_protector.py +0 -0
  43. {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/django_oauth2/__init__.py +0 -0
  44. {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/django_oauth2/authorization_server.py +0 -0
  45. {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/django_oauth2/endpoints.py +0 -0
  46. {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/django_oauth2/requests.py +0 -0
  47. {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/django_oauth2/resource_protector.py +0 -0
  48. {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/django_oauth2/signals.py +0 -0
  49. {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/flask_client/__init__.py +0 -0
  50. {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/flask_client/apps.py +0 -0
  51. {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/flask_client/integration.py +0 -0
  52. {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/flask_oauth1/__init__.py +0 -0
  53. {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/flask_oauth1/authorization_server.py +0 -0
  54. {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/flask_oauth1/cache.py +0 -0
  55. {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/flask_oauth1/resource_protector.py +0 -0
  56. {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/flask_oauth2/__init__.py +0 -0
  57. {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/flask_oauth2/authorization_server.py +0 -0
  58. {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/flask_oauth2/errors.py +0 -0
  59. {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/flask_oauth2/requests.py +0 -0
  60. {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/flask_oauth2/resource_protector.py +0 -0
  61. {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/flask_oauth2/signals.py +0 -0
  62. {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/httpx_client/__init__.py +0 -0
  63. {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/httpx_client/assertion_client.py +0 -0
  64. {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/httpx_client/oauth1_client.py +0 -0
  65. {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/httpx_client/oauth2_client.py +0 -0
  66. {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/httpx_client/utils.py +0 -0
  67. {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/requests_client/__init__.py +0 -0
  68. {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/requests_client/assertion_session.py +0 -0
  69. {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/requests_client/oauth1_session.py +0 -0
  70. {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/requests_client/oauth2_session.py +0 -0
  71. {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/requests_client/utils.py +0 -0
  72. {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/sqla_oauth2/__init__.py +0 -0
  73. {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/sqla_oauth2/client_mixin.py +0 -0
  74. {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/sqla_oauth2/functions.py +0 -0
  75. {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/sqla_oauth2/tokens_mixins.py +0 -0
  76. {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/starlette_client/__init__.py +0 -0
  77. {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/starlette_client/apps.py +0 -0
  78. {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/starlette_client/integration.py +0 -0
  79. {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/drafts/__init__.py +0 -0
  80. {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/drafts/_jwe_algorithms.py +0 -0
  81. {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/drafts/_jwe_enc_cryptodome.py +0 -0
  82. {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/drafts/_jwe_enc_cryptography.py +0 -0
  83. {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/errors.py +0 -0
  84. {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/jwk.py +0 -0
  85. {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc7515/__init__.py +0 -0
  86. {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc7516/__init__.py +0 -0
  87. {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc7517/__init__.py +0 -0
  88. {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc7517/_cryptography_key.py +0 -0
  89. {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc7517/asymmetric_key.py +0 -0
  90. {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc7517/base_key.py +0 -0
  91. {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc7517/jwk.py +0 -0
  92. {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc7517/key_set.py +0 -0
  93. {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc7518/__init__.py +0 -0
  94. {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc7518/ec_key.py +0 -0
  95. {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc7518/jwe_encs.py +0 -0
  96. {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc7518/jwe_zips.py +0 -0
  97. {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc7518/oct_key.py +0 -0
  98. {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc7518/rsa_key.py +0 -0
  99. {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc7518/util.py +0 -0
  100. {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc7519/__init__.py +0 -0
  101. {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc7519/claims.py +0 -0
  102. {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc7519/jwt.py +0 -0
  103. {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc8037/__init__.py +0 -0
  104. {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc8037/jws_eddsa.py +0 -0
  105. {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc8037/okp_key.py +0 -0
  106. {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/util.py +0 -0
  107. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth1/__init__.py +0 -0
  108. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth1/client.py +0 -0
  109. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth1/errors.py +0 -0
  110. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth1/rfc5849/__init__.py +0 -0
  111. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth1/rfc5849/authorization_server.py +0 -0
  112. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth1/rfc5849/base_server.py +0 -0
  113. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth1/rfc5849/client_auth.py +0 -0
  114. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth1/rfc5849/errors.py +0 -0
  115. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth1/rfc5849/models.py +0 -0
  116. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth1/rfc5849/parameters.py +0 -0
  117. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth1/rfc5849/resource_protector.py +0 -0
  118. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth1/rfc5849/rsa.py +0 -0
  119. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth1/rfc5849/signature.py +0 -0
  120. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth1/rfc5849/util.py +0 -0
  121. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth1/rfc5849/wrapper.py +0 -0
  122. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/__init__.py +0 -0
  123. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/auth.py +0 -0
  124. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/base.py +0 -0
  125. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/client.py +0 -0
  126. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc6749/__init__.py +0 -0
  127. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc6749/authenticate_client.py +0 -0
  128. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc6749/errors.py +0 -0
  129. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc6749/grants/__init__.py +0 -0
  130. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc6749/grants/authorization_code.py +0 -0
  131. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc6749/grants/base.py +0 -0
  132. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc6749/grants/client_credentials.py +0 -0
  133. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc6749/grants/implicit.py +0 -0
  134. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc6749/grants/refresh_token.py +0 -0
  135. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc6749/grants/resource_owner_password_credentials.py +0 -0
  136. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc6749/hooks.py +0 -0
  137. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc6749/models.py +0 -0
  138. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc6749/parameters.py +0 -0
  139. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc6749/requests.py +0 -0
  140. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc6749/resource_protector.py +0 -0
  141. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc6749/token_endpoint.py +0 -0
  142. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc6749/util.py +0 -0
  143. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc6749/wrappers.py +0 -0
  144. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc6750/__init__.py +0 -0
  145. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc6750/errors.py +0 -0
  146. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc6750/parameters.py +0 -0
  147. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc6750/token.py +0 -0
  148. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc6750/validator.py +0 -0
  149. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc7009/__init__.py +0 -0
  150. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc7009/parameters.py +0 -0
  151. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc7009/revocation.py +0 -0
  152. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc7521/__init__.py +0 -0
  153. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc7521/client.py +0 -0
  154. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc7523/__init__.py +0 -0
  155. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc7523/assertion.py +0 -0
  156. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc7523/auth.py +0 -0
  157. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc7523/client.py +0 -0
  158. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc7523/jwt_bearer.py +0 -0
  159. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc7523/token.py +0 -0
  160. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc7523/validator.py +0 -0
  161. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc7591/__init__.py +0 -0
  162. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc7591/claims.py +0 -0
  163. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc7591/endpoint.py +0 -0
  164. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc7591/errors.py +0 -0
  165. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc7592/__init__.py +0 -0
  166. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc7592/endpoint.py +0 -0
  167. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc7636/__init__.py +0 -0
  168. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc7636/challenge.py +0 -0
  169. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc7662/__init__.py +0 -0
  170. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc7662/introspection.py +0 -0
  171. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc7662/models.py +0 -0
  172. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc7662/token_validator.py +0 -0
  173. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc8414/__init__.py +0 -0
  174. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc8414/models.py +0 -0
  175. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc8414/well_known.py +0 -0
  176. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc8628/__init__.py +0 -0
  177. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc8628/device_code.py +0 -0
  178. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc8628/endpoint.py +0 -0
  179. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc8628/errors.py +0 -0
  180. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc8628/models.py +0 -0
  181. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc8693/__init__.py +0 -0
  182. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc9068/__init__.py +0 -0
  183. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc9068/claims.py +0 -0
  184. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc9068/introspection.py +0 -0
  185. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc9068/revocation.py +0 -0
  186. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc9068/token.py +0 -0
  187. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc9068/token_validator.py +0 -0
  188. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc9101/__init__.py +0 -0
  189. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc9101/authorization_server.py +0 -0
  190. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc9101/discovery.py +0 -0
  191. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc9101/errors.py +0 -0
  192. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc9101/registration.py +0 -0
  193. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc9207/__init__.py +0 -0
  194. {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc9207/parameter.py +0 -0
  195. {authlib-1.6.8 → authlib-1.6.10}/authlib/oidc/__init__.py +0 -0
  196. {authlib-1.6.8 → authlib-1.6.10}/authlib/oidc/core/__init__.py +0 -0
  197. {authlib-1.6.8 → authlib-1.6.10}/authlib/oidc/core/errors.py +0 -0
  198. {authlib-1.6.8 → authlib-1.6.10}/authlib/oidc/core/grants/__init__.py +0 -0
  199. {authlib-1.6.8 → authlib-1.6.10}/authlib/oidc/core/grants/code.py +0 -0
  200. {authlib-1.6.8 → authlib-1.6.10}/authlib/oidc/core/grants/hybrid.py +0 -0
  201. {authlib-1.6.8 → authlib-1.6.10}/authlib/oidc/core/grants/implicit.py +0 -0
  202. {authlib-1.6.8 → authlib-1.6.10}/authlib/oidc/core/grants/util.py +0 -0
  203. {authlib-1.6.8 → authlib-1.6.10}/authlib/oidc/core/models.py +0 -0
  204. {authlib-1.6.8 → authlib-1.6.10}/authlib/oidc/core/userinfo.py +0 -0
  205. {authlib-1.6.8 → authlib-1.6.10}/authlib/oidc/core/util.py +0 -0
  206. {authlib-1.6.8 → authlib-1.6.10}/authlib/oidc/discovery/__init__.py +0 -0
  207. {authlib-1.6.8 → authlib-1.6.10}/authlib/oidc/discovery/models.py +0 -0
  208. {authlib-1.6.8 → authlib-1.6.10}/authlib/oidc/discovery/well_known.py +0 -0
  209. {authlib-1.6.8 → authlib-1.6.10}/authlib/oidc/registration/__init__.py +0 -0
  210. {authlib-1.6.8 → authlib-1.6.10}/authlib/oidc/registration/claims.py +0 -0
  211. {authlib-1.6.8 → authlib-1.6.10}/pyproject.toml +0 -0
  212. {authlib-1.6.8 → authlib-1.6.10}/setup.cfg +0 -0
  213. {authlib-1.6.8 → authlib-1.6.10}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: Authlib
3
- Version: 1.6.8
3
+ Version: 1.6.10
4
4
  Summary: The ultimate Python library in building OAuth and OpenID Connect servers and clients.
5
5
  Author-email: Hsiaoming Yang <me@lepture.com>
6
6
  License: BSD-3-Clause
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: Authlib
3
- Version: 1.6.8
3
+ Version: 1.6.10
4
4
  Summary: The ultimate Python library in building OAuth and OpenID Connect servers and clients.
5
5
  Author-email: Hsiaoming Yang <me@lepture.com>
6
6
  License: BSD-3-Clause
@@ -1,5 +1,5 @@
1
1
  name = "Authlib"
2
- version = "1.6.8"
2
+ version = "1.6.10"
3
3
  author = "Hsiaoming Yang <me@lepture.com>"
4
4
  homepage = "https://authlib.org"
5
5
  default_user_agent = f"{name}/{version} (+{homepage})"
@@ -55,6 +55,7 @@ jwt = JsonWebToken(
55
55
  "RS384",
56
56
  "RS512",
57
57
  "ES256",
58
+ "ES256K",
58
59
  "ES384",
59
60
  "ES512",
60
61
  "PS256",
@@ -261,16 +261,18 @@ class JsonWebSignature:
261
261
  raise MissingAlgorithmError()
262
262
 
263
263
  alg = header["alg"]
264
- if self._algorithms is not None and alg not in self._algorithms:
265
- raise UnsupportedAlgorithmError()
266
264
  if alg not in self.ALGORITHMS_REGISTRY:
267
265
  raise UnsupportedAlgorithmError()
268
266
 
269
267
  algorithm = self.ALGORITHMS_REGISTRY[alg]
268
+ if self._algorithms is None:
269
+ if algorithm.deprecated:
270
+ raise UnsupportedAlgorithmError()
271
+ elif alg not in self._algorithms:
272
+ raise UnsupportedAlgorithmError()
273
+
270
274
  if callable(key):
271
275
  key = key(header, payload)
272
- elif key is None and "jwk" in header:
273
- key = header["jwk"]
274
276
  key = algorithm.prepare_key(key)
275
277
  return algorithm, key
276
278
 
@@ -5,6 +5,7 @@ class JWSAlgorithm:
5
5
 
6
6
  name = None
7
7
  description = None
8
+ deprecated = False
8
9
  algorithm_type = "JWS"
9
10
  algorithm_location = "alg"
10
11
 
@@ -697,11 +697,19 @@ class JsonWebEncryption:
697
697
  raise MissingAlgorithmError()
698
698
 
699
699
  alg = header["alg"]
700
- if self._algorithms is not None and alg not in self._algorithms:
701
- raise UnsupportedAlgorithmError()
702
700
  if alg not in self.ALG_REGISTRY:
703
701
  raise UnsupportedAlgorithmError()
704
- return self.ALG_REGISTRY[alg]
702
+
703
+ instance = self.ALG_REGISTRY[alg]
704
+
705
+ # use all ALG_REGISTRY algorithms
706
+ if self._algorithms is None:
707
+ # do not use deprecated algorithms
708
+ if instance.deprecated:
709
+ raise UnsupportedAlgorithmError()
710
+ elif alg not in self._algorithms:
711
+ raise UnsupportedAlgorithmError()
712
+ return instance
705
713
 
706
714
  def get_header_enc(self, header):
707
715
  if "enc" not in header:
@@ -754,6 +762,4 @@ class JsonWebEncryption:
754
762
  def prepare_key(alg, header, key):
755
763
  if callable(key):
756
764
  key = key(header, None)
757
- elif key is None and "jwk" in header:
758
- key = header["jwk"]
759
765
  return alg.prepare_key(key)
@@ -9,6 +9,7 @@ class JWEAlgorithmBase(metaclass=ABCMeta): # noqa: B024
9
9
 
10
10
  name = None
11
11
  description = None
12
+ deprecated = False
12
13
  algorithm_type = "JWE"
13
14
  algorithm_location = "alg"
14
15
 
@@ -1,4 +1,4 @@
1
- import os
1
+ import secrets
2
2
  import struct
3
3
 
4
4
  from cryptography.hazmat.backends import default_backend
@@ -41,7 +41,7 @@ class DirectAlgorithm(JWEAlgorithm):
41
41
  def unwrap(self, enc_alg, ek, headers, key):
42
42
  cek = key.get_op_key("decrypt")
43
43
  if len(cek) * 8 != enc_alg.CEK_SIZE:
44
- raise ValueError('Invalid "cek" length')
44
+ cek = secrets.token_bytes(enc_alg.CEK_SIZE // 8)
45
45
  return cek
46
46
 
47
47
 
@@ -52,6 +52,7 @@ class RSAAlgorithm(JWEAlgorithm):
52
52
 
53
53
  def __init__(self, name, description, pad_fn):
54
54
  self.name = name
55
+ self.deprecated = name == "RSA1_5"
55
56
  self.description = description
56
57
  self.padding = pad_fn
57
58
 
@@ -75,11 +76,10 @@ class RSAAlgorithm(JWEAlgorithm):
75
76
  return {"ek": ek, "cek": cek}
76
77
 
77
78
  def unwrap(self, enc_alg, ek, headers, key):
78
- # it will raise ValueError if failed
79
79
  op_key = key.get_op_key("unwrapKey")
80
80
  cek = op_key.decrypt(ek, self.padding)
81
81
  if len(cek) * 8 != enc_alg.CEK_SIZE:
82
- raise ValueError('Invalid "cek" length')
82
+ cek = secrets.token_bytes(enc_alg.CEK_SIZE // 8)
83
83
  return cek
84
84
 
85
85
 
@@ -118,7 +118,7 @@ class AESAlgorithm(JWEAlgorithm):
118
118
  self._check_key(op_key)
119
119
  cek = aes_key_unwrap(op_key, ek, default_backend())
120
120
  if len(cek) * 8 != enc_alg.CEK_SIZE:
121
- raise ValueError('Invalid "cek" length')
121
+ cek = secrets.token_bytes(enc_alg.CEK_SIZE // 8)
122
122
  return cek
123
123
 
124
124
 
@@ -154,7 +154,7 @@ class AESGCMAlgorithm(JWEAlgorithm):
154
154
  #: The "iv" (initialization vector) Header Parameter value is the
155
155
  #: base64url-encoded representation of the 96-bit IV value
156
156
  iv_size = 96
157
- iv = os.urandom(iv_size // 8)
157
+ iv = secrets.token_bytes(iv_size // 8)
158
158
 
159
159
  cipher = Cipher(AES(op_key), GCM(iv), backend=default_backend())
160
160
  enc = cipher.encryptor()
@@ -185,7 +185,7 @@ class AESGCMAlgorithm(JWEAlgorithm):
185
185
  d = cipher.decryptor()
186
186
  cek = d.update(ek) + d.finalize()
187
187
  if len(cek) * 8 != enc_alg.CEK_SIZE:
188
- raise ValueError('Invalid "cek" length')
188
+ cek = secrets.token_bytes(enc_alg.CEK_SIZE // 8)
189
189
  return cek
190
190
 
191
191
 
@@ -27,6 +27,7 @@ from .util import encode_int
27
27
  class NoneAlgorithm(JWSAlgorithm):
28
28
  name = "none"
29
29
  description = "No digital signature or MAC performed"
30
+ deprecated = True
30
31
 
31
32
  def prepare_key(self, raw_data):
32
33
  return None
@@ -241,10 +241,21 @@ class AuthorizationServer(Hookable):
241
241
  if grant_cls.check_authorization_endpoint(request):
242
242
  return _create_grant(grant_cls, extensions, request, self)
243
243
 
244
+ # Per RFC 6749 §4.1.2.1, only redirect with the error if the client
245
+ # exists and the redirect_uri has been validated against it.
246
+ redirect_uri = None
247
+ if client_id := request.payload.client_id:
248
+ if client := self.query_client(client_id):
249
+ if requested_uri := request.payload.redirect_uri:
250
+ if client.check_redirect_uri(requested_uri):
251
+ redirect_uri = requested_uri
252
+ else:
253
+ redirect_uri = client.get_default_redirect_uri()
254
+
244
255
  raise UnsupportedResponseTypeError(
245
256
  f"The response type '{request.payload.response_type}' is not supported by the server.",
246
257
  request.payload.response_type,
247
- redirect_uri=request.payload.redirect_uri,
258
+ redirect_uri=redirect_uri,
248
259
  )
249
260
 
250
261
  def get_consent_grant(self, request=None, end_user=None):
@@ -303,6 +303,6 @@ def get_claim_cls_by_response_type(response_type):
303
303
 
304
304
  def _verify_hash(signature, s, alg):
305
305
  hash_value = create_half_hash(s, alg)
306
- if not hash_value:
307
- return True
306
+ if hash_value is None:
307
+ return False
308
308
  return hmac.compare_digest(hash_value, to_bytes(signature))
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes