Authlib 1.9.0__tar.gz → 1.9.1__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 (227) hide show
  1. {authlib-1.9.0 → authlib-1.9.1}/Authlib.egg-info/PKG-INFO +2 -2
  2. {authlib-1.9.0 → authlib-1.9.1}/Authlib.egg-info/requires.txt +1 -1
  3. {authlib-1.9.0 → authlib-1.9.1}/PKG-INFO +2 -2
  4. {authlib-1.9.0 → authlib-1.9.1}/authlib/consts.py +1 -1
  5. {authlib-1.9.0 → authlib-1.9.1}/authlib/jose/rfc7518/oct_key.py +4 -0
  6. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/drafts/id_jag.py +6 -5
  7. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc7592/endpoint.py +18 -3
  8. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc8628/device_code.py +1 -1
  9. {authlib-1.9.0 → authlib-1.9.1}/pyproject.toml +11 -1
  10. {authlib-1.9.0 → authlib-1.9.1}/Authlib.egg-info/SOURCES.txt +0 -0
  11. {authlib-1.9.0 → authlib-1.9.1}/Authlib.egg-info/dependency_links.txt +0 -0
  12. {authlib-1.9.0 → authlib-1.9.1}/Authlib.egg-info/top_level.txt +0 -0
  13. {authlib-1.9.0 → authlib-1.9.1}/LICENSE +0 -0
  14. {authlib-1.9.0 → authlib-1.9.1}/MANIFEST.in +0 -0
  15. {authlib-1.9.0 → authlib-1.9.1}/README.md +0 -0
  16. {authlib-1.9.0 → authlib-1.9.1}/authlib/__init__.py +0 -0
  17. {authlib-1.9.0 → authlib-1.9.1}/authlib/_joserfc_helpers.py +0 -0
  18. {authlib-1.9.0 → authlib-1.9.1}/authlib/common/__init__.py +0 -0
  19. {authlib-1.9.0 → authlib-1.9.1}/authlib/common/encoding.py +0 -0
  20. {authlib-1.9.0 → authlib-1.9.1}/authlib/common/errors.py +0 -0
  21. {authlib-1.9.0 → authlib-1.9.1}/authlib/common/language.py +0 -0
  22. {authlib-1.9.0 → authlib-1.9.1}/authlib/common/security.py +0 -0
  23. {authlib-1.9.0 → authlib-1.9.1}/authlib/common/urls.py +0 -0
  24. {authlib-1.9.0 → authlib-1.9.1}/authlib/deprecate.py +0 -0
  25. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/__init__.py +0 -0
  26. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/base_client/__init__.py +0 -0
  27. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/base_client/async_app.py +0 -0
  28. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/base_client/async_openid.py +0 -0
  29. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/base_client/errors.py +0 -0
  30. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/base_client/framework_integration.py +0 -0
  31. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/base_client/registry.py +0 -0
  32. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/base_client/sync_app.py +0 -0
  33. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/base_client/sync_openid.py +0 -0
  34. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/django_client/__init__.py +0 -0
  35. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/django_client/apps.py +0 -0
  36. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/django_client/integration.py +0 -0
  37. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/django_oauth1/__init__.py +0 -0
  38. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/django_oauth1/authorization_server.py +0 -0
  39. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/django_oauth1/nonce.py +0 -0
  40. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/django_oauth1/resource_protector.py +0 -0
  41. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/django_oauth2/__init__.py +0 -0
  42. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/django_oauth2/authorization_server.py +0 -0
  43. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/django_oauth2/endpoints.py +0 -0
  44. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/django_oauth2/requests.py +0 -0
  45. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/django_oauth2/resource_protector.py +0 -0
  46. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/django_oauth2/signals.py +0 -0
  47. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/flask_client/__init__.py +0 -0
  48. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/flask_client/apps.py +0 -0
  49. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/flask_client/integration.py +0 -0
  50. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/flask_oauth1/__init__.py +0 -0
  51. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/flask_oauth1/authorization_server.py +0 -0
  52. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/flask_oauth1/cache.py +0 -0
  53. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/flask_oauth1/resource_protector.py +0 -0
  54. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/flask_oauth2/__init__.py +0 -0
  55. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/flask_oauth2/authorization_server.py +0 -0
  56. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/flask_oauth2/errors.py +0 -0
  57. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/flask_oauth2/requests.py +0 -0
  58. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/flask_oauth2/resource_protector.py +0 -0
  59. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/flask_oauth2/signals.py +0 -0
  60. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/httpx_client/__init__.py +0 -0
  61. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/httpx_client/_compat.py +0 -0
  62. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/httpx_client/assertion_client.py +0 -0
  63. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/httpx_client/oauth1_client.py +0 -0
  64. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/httpx_client/oauth2_client.py +0 -0
  65. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/httpx_client/utils.py +0 -0
  66. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/requests_client/__init__.py +0 -0
  67. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/requests_client/assertion_session.py +0 -0
  68. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/requests_client/oauth1_session.py +0 -0
  69. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/requests_client/oauth2_session.py +0 -0
  70. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/requests_client/utils.py +0 -0
  71. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/sqla_oauth2/__init__.py +0 -0
  72. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/sqla_oauth2/client_mixin.py +0 -0
  73. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/sqla_oauth2/functions.py +0 -0
  74. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/sqla_oauth2/tokens_mixins.py +0 -0
  75. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/starlette_client/__init__.py +0 -0
  76. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/starlette_client/apps.py +0 -0
  77. {authlib-1.9.0 → authlib-1.9.1}/authlib/integrations/starlette_client/integration.py +0 -0
  78. {authlib-1.9.0 → authlib-1.9.1}/authlib/jose/__init__.py +0 -0
  79. {authlib-1.9.0 → authlib-1.9.1}/authlib/jose/drafts/__init__.py +0 -0
  80. {authlib-1.9.0 → authlib-1.9.1}/authlib/jose/drafts/_jwe_algorithms.py +0 -0
  81. {authlib-1.9.0 → authlib-1.9.1}/authlib/jose/drafts/_jwe_enc_cryptodome.py +0 -0
  82. {authlib-1.9.0 → authlib-1.9.1}/authlib/jose/drafts/_jwe_enc_cryptography.py +0 -0
  83. {authlib-1.9.0 → authlib-1.9.1}/authlib/jose/errors.py +0 -0
  84. {authlib-1.9.0 → authlib-1.9.1}/authlib/jose/jwk.py +0 -0
  85. {authlib-1.9.0 → authlib-1.9.1}/authlib/jose/rfc7515/__init__.py +0 -0
  86. {authlib-1.9.0 → authlib-1.9.1}/authlib/jose/rfc7515/jws.py +0 -0
  87. {authlib-1.9.0 → authlib-1.9.1}/authlib/jose/rfc7515/models.py +0 -0
  88. {authlib-1.9.0 → authlib-1.9.1}/authlib/jose/rfc7516/__init__.py +0 -0
  89. {authlib-1.9.0 → authlib-1.9.1}/authlib/jose/rfc7516/jwe.py +0 -0
  90. {authlib-1.9.0 → authlib-1.9.1}/authlib/jose/rfc7516/models.py +0 -0
  91. {authlib-1.9.0 → authlib-1.9.1}/authlib/jose/rfc7517/__init__.py +0 -0
  92. {authlib-1.9.0 → authlib-1.9.1}/authlib/jose/rfc7517/_cryptography_key.py +0 -0
  93. {authlib-1.9.0 → authlib-1.9.1}/authlib/jose/rfc7517/asymmetric_key.py +0 -0
  94. {authlib-1.9.0 → authlib-1.9.1}/authlib/jose/rfc7517/base_key.py +0 -0
  95. {authlib-1.9.0 → authlib-1.9.1}/authlib/jose/rfc7517/jwk.py +0 -0
  96. {authlib-1.9.0 → authlib-1.9.1}/authlib/jose/rfc7517/key_set.py +0 -0
  97. {authlib-1.9.0 → authlib-1.9.1}/authlib/jose/rfc7518/__init__.py +0 -0
  98. {authlib-1.9.0 → authlib-1.9.1}/authlib/jose/rfc7518/ec_key.py +0 -0
  99. {authlib-1.9.0 → authlib-1.9.1}/authlib/jose/rfc7518/jwe_algs.py +0 -0
  100. {authlib-1.9.0 → authlib-1.9.1}/authlib/jose/rfc7518/jwe_encs.py +0 -0
  101. {authlib-1.9.0 → authlib-1.9.1}/authlib/jose/rfc7518/jwe_zips.py +0 -0
  102. {authlib-1.9.0 → authlib-1.9.1}/authlib/jose/rfc7518/jws_algs.py +0 -0
  103. {authlib-1.9.0 → authlib-1.9.1}/authlib/jose/rfc7518/rsa_key.py +0 -0
  104. {authlib-1.9.0 → authlib-1.9.1}/authlib/jose/rfc7518/util.py +0 -0
  105. {authlib-1.9.0 → authlib-1.9.1}/authlib/jose/rfc7519/__init__.py +0 -0
  106. {authlib-1.9.0 → authlib-1.9.1}/authlib/jose/rfc7519/claims.py +0 -0
  107. {authlib-1.9.0 → authlib-1.9.1}/authlib/jose/rfc7519/jwt.py +0 -0
  108. {authlib-1.9.0 → authlib-1.9.1}/authlib/jose/rfc8037/__init__.py +0 -0
  109. {authlib-1.9.0 → authlib-1.9.1}/authlib/jose/rfc8037/jws_eddsa.py +0 -0
  110. {authlib-1.9.0 → authlib-1.9.1}/authlib/jose/rfc8037/okp_key.py +0 -0
  111. {authlib-1.9.0 → authlib-1.9.1}/authlib/jose/util.py +0 -0
  112. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth1/__init__.py +0 -0
  113. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth1/client.py +0 -0
  114. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth1/errors.py +0 -0
  115. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth1/rfc5849/__init__.py +0 -0
  116. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth1/rfc5849/authorization_server.py +0 -0
  117. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth1/rfc5849/base_server.py +0 -0
  118. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth1/rfc5849/client_auth.py +0 -0
  119. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth1/rfc5849/errors.py +0 -0
  120. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth1/rfc5849/models.py +0 -0
  121. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth1/rfc5849/parameters.py +0 -0
  122. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth1/rfc5849/resource_protector.py +0 -0
  123. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth1/rfc5849/rsa.py +0 -0
  124. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth1/rfc5849/signature.py +0 -0
  125. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth1/rfc5849/util.py +0 -0
  126. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth1/rfc5849/wrapper.py +0 -0
  127. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/__init__.py +0 -0
  128. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/auth.py +0 -0
  129. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/base.py +0 -0
  130. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/claims.py +0 -0
  131. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/client.py +0 -0
  132. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/drafts/__init__.py +0 -0
  133. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc6749/__init__.py +0 -0
  134. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc6749/authenticate_client.py +0 -0
  135. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc6749/authorization_server.py +0 -0
  136. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc6749/endpoint.py +0 -0
  137. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc6749/errors.py +0 -0
  138. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc6749/grants/__init__.py +0 -0
  139. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc6749/grants/authorization_code.py +0 -0
  140. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc6749/grants/base.py +0 -0
  141. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc6749/grants/client_credentials.py +0 -0
  142. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc6749/grants/implicit.py +0 -0
  143. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc6749/grants/refresh_token.py +0 -0
  144. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc6749/grants/resource_owner_password_credentials.py +0 -0
  145. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc6749/hooks.py +0 -0
  146. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc6749/models.py +0 -0
  147. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc6749/parameters.py +0 -0
  148. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc6749/requests.py +0 -0
  149. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc6749/resource_protector.py +0 -0
  150. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc6749/token_endpoint.py +0 -0
  151. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc6749/util.py +0 -0
  152. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc6749/wrappers.py +0 -0
  153. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc6750/__init__.py +0 -0
  154. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc6750/errors.py +0 -0
  155. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc6750/parameters.py +0 -0
  156. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc6750/token.py +0 -0
  157. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc6750/validator.py +0 -0
  158. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc7009/__init__.py +0 -0
  159. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc7009/parameters.py +0 -0
  160. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc7009/revocation.py +0 -0
  161. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc7521/__init__.py +0 -0
  162. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc7521/client.py +0 -0
  163. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc7523/__init__.py +0 -0
  164. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc7523/assertion.py +0 -0
  165. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc7523/auth.py +0 -0
  166. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc7523/client.py +0 -0
  167. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc7523/jwt_bearer.py +0 -0
  168. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc7523/token.py +0 -0
  169. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc7523/validator.py +0 -0
  170. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc7591/__init__.py +0 -0
  171. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc7591/claims.py +0 -0
  172. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc7591/endpoint.py +0 -0
  173. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc7591/errors.py +0 -0
  174. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc7592/__init__.py +0 -0
  175. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc7636/__init__.py +0 -0
  176. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc7636/challenge.py +0 -0
  177. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc7662/__init__.py +0 -0
  178. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc7662/introspection.py +0 -0
  179. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc7662/models.py +0 -0
  180. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc7662/token_validator.py +0 -0
  181. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc8414/__init__.py +0 -0
  182. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc8414/models.py +0 -0
  183. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc8414/well_known.py +0 -0
  184. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc8628/__init__.py +0 -0
  185. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc8628/endpoint.py +0 -0
  186. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc8628/errors.py +0 -0
  187. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc8628/models.py +0 -0
  188. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc8693/__init__.py +0 -0
  189. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc9068/__init__.py +0 -0
  190. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc9068/claims.py +0 -0
  191. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc9068/introspection.py +0 -0
  192. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc9068/revocation.py +0 -0
  193. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc9068/token.py +0 -0
  194. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc9068/token_validator.py +0 -0
  195. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc9101/__init__.py +0 -0
  196. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc9101/authorization_server.py +0 -0
  197. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc9101/discovery.py +0 -0
  198. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc9101/errors.py +0 -0
  199. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc9101/registration.py +0 -0
  200. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc9207/__init__.py +0 -0
  201. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc9207/discovery.py +0 -0
  202. {authlib-1.9.0 → authlib-1.9.1}/authlib/oauth2/rfc9207/parameter.py +0 -0
  203. {authlib-1.9.0 → authlib-1.9.1}/authlib/oidc/__init__.py +0 -0
  204. {authlib-1.9.0 → authlib-1.9.1}/authlib/oidc/core/__init__.py +0 -0
  205. {authlib-1.9.0 → authlib-1.9.1}/authlib/oidc/core/authorization_request.py +0 -0
  206. {authlib-1.9.0 → authlib-1.9.1}/authlib/oidc/core/claims.py +0 -0
  207. {authlib-1.9.0 → authlib-1.9.1}/authlib/oidc/core/errors.py +0 -0
  208. {authlib-1.9.0 → authlib-1.9.1}/authlib/oidc/core/grants/__init__.py +0 -0
  209. {authlib-1.9.0 → authlib-1.9.1}/authlib/oidc/core/grants/_legacy.py +0 -0
  210. {authlib-1.9.0 → authlib-1.9.1}/authlib/oidc/core/grants/code.py +0 -0
  211. {authlib-1.9.0 → authlib-1.9.1}/authlib/oidc/core/grants/hybrid.py +0 -0
  212. {authlib-1.9.0 → authlib-1.9.1}/authlib/oidc/core/grants/implicit.py +0 -0
  213. {authlib-1.9.0 → authlib-1.9.1}/authlib/oidc/core/grants/util.py +0 -0
  214. {authlib-1.9.0 → authlib-1.9.1}/authlib/oidc/core/models.py +0 -0
  215. {authlib-1.9.0 → authlib-1.9.1}/authlib/oidc/core/userinfo.py +0 -0
  216. {authlib-1.9.0 → authlib-1.9.1}/authlib/oidc/core/util.py +0 -0
  217. {authlib-1.9.0 → authlib-1.9.1}/authlib/oidc/discovery/__init__.py +0 -0
  218. {authlib-1.9.0 → authlib-1.9.1}/authlib/oidc/discovery/models.py +0 -0
  219. {authlib-1.9.0 → authlib-1.9.1}/authlib/oidc/discovery/well_known.py +0 -0
  220. {authlib-1.9.0 → authlib-1.9.1}/authlib/oidc/registration/__init__.py +0 -0
  221. {authlib-1.9.0 → authlib-1.9.1}/authlib/oidc/registration/claims.py +0 -0
  222. {authlib-1.9.0 → authlib-1.9.1}/authlib/oidc/rpinitiated/__init__.py +0 -0
  223. {authlib-1.9.0 → authlib-1.9.1}/authlib/oidc/rpinitiated/discovery.py +0 -0
  224. {authlib-1.9.0 → authlib-1.9.1}/authlib/oidc/rpinitiated/end_session.py +0 -0
  225. {authlib-1.9.0 → authlib-1.9.1}/authlib/oidc/rpinitiated/registration.py +0 -0
  226. {authlib-1.9.0 → authlib-1.9.1}/setup.cfg +0 -0
  227. {authlib-1.9.0 → authlib-1.9.1}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: Authlib
3
- Version: 1.9.0
3
+ Version: 1.9.1
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
@@ -33,7 +33,7 @@ Requires-Python: >=3.10
33
33
  Description-Content-Type: text/markdown
34
34
  License-File: LICENSE
35
35
  Requires-Dist: cryptography>=45.0.1
36
- Requires-Dist: joserfc>=1.6.1
36
+ Requires-Dist: joserfc>=1.6.8
37
37
  Dynamic: license-file
38
38
 
39
39
  <div align="center">
@@ -1,2 +1,2 @@
1
1
  cryptography>=45.0.1
2
- joserfc>=1.6.1
2
+ joserfc>=1.6.8
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: Authlib
3
- Version: 1.9.0
3
+ Version: 1.9.1
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
@@ -33,7 +33,7 @@ Requires-Python: >=3.10
33
33
  Description-Content-Type: text/markdown
34
34
  License-File: LICENSE
35
35
  Requires-Dist: cryptography>=45.0.1
36
- Requires-Dist: joserfc>=1.6.1
36
+ Requires-Dist: joserfc>=1.6.8
37
37
  Dynamic: license-file
38
38
 
39
39
  <div align="center">
@@ -1,5 +1,5 @@
1
1
  name = "Authlib"
2
- version = "1.9.0"
2
+ version = "1.9.1"
3
3
  author = "Hsiaoming Yang <me@lepture.com>"
4
4
  homepage = "https://authlib.org"
5
5
  default_user_agent = f"{name}/{version} (+{homepage})"
@@ -65,6 +65,10 @@ class OctKey(Key):
65
65
 
66
66
  @staticmethod
67
67
  def _check_key(raw_key):
68
+ # Per RFC 7518 §3.2, an HMAC key must be at least as long as the hash output.
69
+ if not raw_key:
70
+ raise ValueError("oct key material must not be empty")
71
+
68
72
  # PEM parsers accept leading text, including comments and whitespace.
69
73
  if any(marker in raw_key for marker in POSSIBLE_UNSAFE_KEYS):
70
74
  raise ValueError("This key may not be safe to import")
@@ -106,14 +106,15 @@ class IDJAGGrant(BaseGrant, TokenEndpointMixin):
106
106
 
107
107
  :param key: signing key (private key or shared secret)
108
108
  :param issuer: ``iss`` claim - identifies the IdP
109
- :param audience: ``aud`` claim - the resource AS token endpoint
109
+ :param audience: ``aud`` claim - the resource AS issuer identifier
110
110
  :param subject: ``sub`` claim - the end user (required)
111
- :param client_id: ``client_id`` claim - the application
111
+ :param client_id: ``client_id`` claim - the client identifier at the
112
+ resource AS
112
113
  :param jti: ``jti`` claim (auto-generated when *None*)
113
114
  :param issued_at: ``iat`` claim (defaults to now)
114
115
  :param expires_at: ``exp`` claim
115
116
  :param claims: additional claims dict
116
- :param kwargs: forwarded to :func:`sign_jwt_bearer_assertion`
117
+ :param kwargs: forwarded to ``sign_jwt_bearer_assertion``
117
118
  (e.g. ``alg="RS256"``)
118
119
  :return: compact-serialised JWT string
119
120
  """
@@ -285,8 +286,8 @@ class IDJAGGrant(BaseGrant, TokenEndpointMixin):
285
286
  def get_audiences(self) -> list:
286
287
  """Return the list of valid ``aud`` values for this AS.
287
288
 
288
- Typically the token endpoint URL and/or the AS issuer identifier.
289
- The returned list must be non-empty; ``aud`` validation is
289
+ Per the ID-JAG draft, ``aud`` is the issuer identifier of the
290
+ Resource Authorization Server. The returned list must be non-empty; ``aud`` validation is
290
291
  mandatory for ID-JAG assertions.
291
292
  """
292
293
  raise NotImplementedError()
@@ -39,6 +39,11 @@ class ClientConfigurationEndpoint:
39
39
  status_code=401, description="The client does not exist on this server."
40
40
  )
41
41
 
42
+ # The registration access token is only valid for the client it was
43
+ # issued to.
44
+ if not token.check_client(client):
45
+ raise AccessDeniedError()
46
+
42
47
  if not self.check_permission(client, request):
43
48
  # If the client does not have permission to read its record, the server
44
49
  # MUST return an HTTP 403 Forbidden.
@@ -146,25 +151,35 @@ class ClientConfigurationEndpoint:
146
151
  raise NotImplementedError()
147
152
 
148
153
  def authenticate_token(self, request):
149
- """Authenticate current credential who is requesting to register a client.
154
+ """Authenticate the registration access token of the request.
150
155
  Developers MUST implement this method in subclass::
151
156
 
152
157
  def authenticate_token(self, request):
153
158
  auth = request.headers.get("Authorization")
154
159
  return get_token_by_auth(auth)
155
160
 
161
+ The token MUST implement
162
+ :meth:`~authlib.oauth2.rfc6749.TokenMixin.check_client`. Requests
163
+ are denied when the token was not issued to the requested client.
164
+
156
165
  :return: token instance
157
166
  """
158
167
  raise NotImplementedError()
159
168
 
160
169
  def authenticate_client(self, request):
161
- """Read a client from the request payload.
170
+ """Read the client from the client configuration endpoint URL.
162
171
  Developers MUST implement this method in subclass::
163
172
 
173
+ from urllib.parse import urlparse
174
+
175
+
164
176
  def authenticate_client(self, request):
165
- client_id = request.payload.data.get("client_id")
177
+ path = urlparse(request.uri).path
178
+ client_id = path.rstrip("/").rsplit("/", 1)[-1]
166
179
  return Client.get(client_id=client_id)
167
180
 
181
+ The route parameter of the web framework can also be used.
182
+
168
183
  :return: client instance
169
184
  """
170
185
  raise NotImplementedError()
@@ -171,7 +171,7 @@ class DeviceCodeGrant(BaseGrant, TokenEndpointMixin):
171
171
 
172
172
  user_id, allowed = data.split()
173
173
  user = User.get(user_id)
174
- return user, bool(allowed)
174
+ return user, allowed == "1"
175
175
 
176
176
  Note, user grant information is saved by verification endpoint.
177
177
  """
@@ -8,7 +8,7 @@ description = "The ultimate Python library in building OAuth and OpenID Connect
8
8
  authors = [{name = "Hsiaoming Yang", email="me@lepture.com"}]
9
9
  dependencies = [
10
10
  "cryptography>=45.0.1",
11
- "joserfc>=1.6.1",
11
+ "joserfc>=1.6.8",
12
12
  ]
13
13
  license = {text = "BSD-3-Clause"}
14
14
  requires-python = ">=3.10"
@@ -52,6 +52,7 @@ dev = [
52
52
  "pytest>=8.2",
53
53
  "pytest-asyncio>=0.21",
54
54
  "pytest-env>=1.0",
55
+ "scriv[toml]>=1.8.0",
55
56
  "tox-uv >= 1.16.0",
56
57
  ]
57
58
 
@@ -94,6 +95,15 @@ version = {attr = "authlib.__version__"}
94
95
  where = ["."]
95
96
  include = ["authlib", "authlib.*"]
96
97
 
98
+ [tool.scriv]
99
+ format = "rst"
100
+ changelog = "docs/upgrades/changelog.rst"
101
+ version = "literal: authlib/consts.py: version"
102
+ categories = ["Breaking changes", "Added", "Changed", "Deprecated", "Fixed", "Security"]
103
+ rst_header_chars = "-~"
104
+ compact_fragments = true
105
+ entry_title_template = "Version {{ version }} — {{ date.strftime('%Y-%m-%d') }}"
106
+
97
107
  [tool.ruff.lint]
98
108
  select = [
99
109
  "B", # flake8-bugbear
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