Authlib 1.9.1__tar.gz → 1.9.2__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.1 → authlib-1.9.2}/Authlib.egg-info/PKG-INFO +1 -1
  2. {authlib-1.9.1 → authlib-1.9.2}/PKG-INFO +1 -1
  3. {authlib-1.9.1 → authlib-1.9.2}/authlib/consts.py +1 -1
  4. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/drafts/id_jag.py +29 -2
  5. {authlib-1.9.1 → authlib-1.9.2}/Authlib.egg-info/SOURCES.txt +0 -0
  6. {authlib-1.9.1 → authlib-1.9.2}/Authlib.egg-info/dependency_links.txt +0 -0
  7. {authlib-1.9.1 → authlib-1.9.2}/Authlib.egg-info/requires.txt +0 -0
  8. {authlib-1.9.1 → authlib-1.9.2}/Authlib.egg-info/top_level.txt +0 -0
  9. {authlib-1.9.1 → authlib-1.9.2}/LICENSE +0 -0
  10. {authlib-1.9.1 → authlib-1.9.2}/MANIFEST.in +0 -0
  11. {authlib-1.9.1 → authlib-1.9.2}/README.md +0 -0
  12. {authlib-1.9.1 → authlib-1.9.2}/authlib/__init__.py +0 -0
  13. {authlib-1.9.1 → authlib-1.9.2}/authlib/_joserfc_helpers.py +0 -0
  14. {authlib-1.9.1 → authlib-1.9.2}/authlib/common/__init__.py +0 -0
  15. {authlib-1.9.1 → authlib-1.9.2}/authlib/common/encoding.py +0 -0
  16. {authlib-1.9.1 → authlib-1.9.2}/authlib/common/errors.py +0 -0
  17. {authlib-1.9.1 → authlib-1.9.2}/authlib/common/language.py +0 -0
  18. {authlib-1.9.1 → authlib-1.9.2}/authlib/common/security.py +0 -0
  19. {authlib-1.9.1 → authlib-1.9.2}/authlib/common/urls.py +0 -0
  20. {authlib-1.9.1 → authlib-1.9.2}/authlib/deprecate.py +0 -0
  21. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/__init__.py +0 -0
  22. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/base_client/__init__.py +0 -0
  23. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/base_client/async_app.py +0 -0
  24. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/base_client/async_openid.py +0 -0
  25. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/base_client/errors.py +0 -0
  26. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/base_client/framework_integration.py +0 -0
  27. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/base_client/registry.py +0 -0
  28. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/base_client/sync_app.py +0 -0
  29. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/base_client/sync_openid.py +0 -0
  30. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/django_client/__init__.py +0 -0
  31. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/django_client/apps.py +0 -0
  32. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/django_client/integration.py +0 -0
  33. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/django_oauth1/__init__.py +0 -0
  34. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/django_oauth1/authorization_server.py +0 -0
  35. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/django_oauth1/nonce.py +0 -0
  36. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/django_oauth1/resource_protector.py +0 -0
  37. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/django_oauth2/__init__.py +0 -0
  38. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/django_oauth2/authorization_server.py +0 -0
  39. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/django_oauth2/endpoints.py +0 -0
  40. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/django_oauth2/requests.py +0 -0
  41. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/django_oauth2/resource_protector.py +0 -0
  42. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/django_oauth2/signals.py +0 -0
  43. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/flask_client/__init__.py +0 -0
  44. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/flask_client/apps.py +0 -0
  45. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/flask_client/integration.py +0 -0
  46. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/flask_oauth1/__init__.py +0 -0
  47. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/flask_oauth1/authorization_server.py +0 -0
  48. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/flask_oauth1/cache.py +0 -0
  49. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/flask_oauth1/resource_protector.py +0 -0
  50. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/flask_oauth2/__init__.py +0 -0
  51. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/flask_oauth2/authorization_server.py +0 -0
  52. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/flask_oauth2/errors.py +0 -0
  53. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/flask_oauth2/requests.py +0 -0
  54. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/flask_oauth2/resource_protector.py +0 -0
  55. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/flask_oauth2/signals.py +0 -0
  56. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/httpx_client/__init__.py +0 -0
  57. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/httpx_client/_compat.py +0 -0
  58. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/httpx_client/assertion_client.py +0 -0
  59. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/httpx_client/oauth1_client.py +0 -0
  60. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/httpx_client/oauth2_client.py +0 -0
  61. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/httpx_client/utils.py +0 -0
  62. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/requests_client/__init__.py +0 -0
  63. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/requests_client/assertion_session.py +0 -0
  64. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/requests_client/oauth1_session.py +0 -0
  65. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/requests_client/oauth2_session.py +0 -0
  66. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/requests_client/utils.py +0 -0
  67. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/sqla_oauth2/__init__.py +0 -0
  68. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/sqla_oauth2/client_mixin.py +0 -0
  69. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/sqla_oauth2/functions.py +0 -0
  70. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/sqla_oauth2/tokens_mixins.py +0 -0
  71. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/starlette_client/__init__.py +0 -0
  72. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/starlette_client/apps.py +0 -0
  73. {authlib-1.9.1 → authlib-1.9.2}/authlib/integrations/starlette_client/integration.py +0 -0
  74. {authlib-1.9.1 → authlib-1.9.2}/authlib/jose/__init__.py +0 -0
  75. {authlib-1.9.1 → authlib-1.9.2}/authlib/jose/drafts/__init__.py +0 -0
  76. {authlib-1.9.1 → authlib-1.9.2}/authlib/jose/drafts/_jwe_algorithms.py +0 -0
  77. {authlib-1.9.1 → authlib-1.9.2}/authlib/jose/drafts/_jwe_enc_cryptodome.py +0 -0
  78. {authlib-1.9.1 → authlib-1.9.2}/authlib/jose/drafts/_jwe_enc_cryptography.py +0 -0
  79. {authlib-1.9.1 → authlib-1.9.2}/authlib/jose/errors.py +0 -0
  80. {authlib-1.9.1 → authlib-1.9.2}/authlib/jose/jwk.py +0 -0
  81. {authlib-1.9.1 → authlib-1.9.2}/authlib/jose/rfc7515/__init__.py +0 -0
  82. {authlib-1.9.1 → authlib-1.9.2}/authlib/jose/rfc7515/jws.py +0 -0
  83. {authlib-1.9.1 → authlib-1.9.2}/authlib/jose/rfc7515/models.py +0 -0
  84. {authlib-1.9.1 → authlib-1.9.2}/authlib/jose/rfc7516/__init__.py +0 -0
  85. {authlib-1.9.1 → authlib-1.9.2}/authlib/jose/rfc7516/jwe.py +0 -0
  86. {authlib-1.9.1 → authlib-1.9.2}/authlib/jose/rfc7516/models.py +0 -0
  87. {authlib-1.9.1 → authlib-1.9.2}/authlib/jose/rfc7517/__init__.py +0 -0
  88. {authlib-1.9.1 → authlib-1.9.2}/authlib/jose/rfc7517/_cryptography_key.py +0 -0
  89. {authlib-1.9.1 → authlib-1.9.2}/authlib/jose/rfc7517/asymmetric_key.py +0 -0
  90. {authlib-1.9.1 → authlib-1.9.2}/authlib/jose/rfc7517/base_key.py +0 -0
  91. {authlib-1.9.1 → authlib-1.9.2}/authlib/jose/rfc7517/jwk.py +0 -0
  92. {authlib-1.9.1 → authlib-1.9.2}/authlib/jose/rfc7517/key_set.py +0 -0
  93. {authlib-1.9.1 → authlib-1.9.2}/authlib/jose/rfc7518/__init__.py +0 -0
  94. {authlib-1.9.1 → authlib-1.9.2}/authlib/jose/rfc7518/ec_key.py +0 -0
  95. {authlib-1.9.1 → authlib-1.9.2}/authlib/jose/rfc7518/jwe_algs.py +0 -0
  96. {authlib-1.9.1 → authlib-1.9.2}/authlib/jose/rfc7518/jwe_encs.py +0 -0
  97. {authlib-1.9.1 → authlib-1.9.2}/authlib/jose/rfc7518/jwe_zips.py +0 -0
  98. {authlib-1.9.1 → authlib-1.9.2}/authlib/jose/rfc7518/jws_algs.py +0 -0
  99. {authlib-1.9.1 → authlib-1.9.2}/authlib/jose/rfc7518/oct_key.py +0 -0
  100. {authlib-1.9.1 → authlib-1.9.2}/authlib/jose/rfc7518/rsa_key.py +0 -0
  101. {authlib-1.9.1 → authlib-1.9.2}/authlib/jose/rfc7518/util.py +0 -0
  102. {authlib-1.9.1 → authlib-1.9.2}/authlib/jose/rfc7519/__init__.py +0 -0
  103. {authlib-1.9.1 → authlib-1.9.2}/authlib/jose/rfc7519/claims.py +0 -0
  104. {authlib-1.9.1 → authlib-1.9.2}/authlib/jose/rfc7519/jwt.py +0 -0
  105. {authlib-1.9.1 → authlib-1.9.2}/authlib/jose/rfc8037/__init__.py +0 -0
  106. {authlib-1.9.1 → authlib-1.9.2}/authlib/jose/rfc8037/jws_eddsa.py +0 -0
  107. {authlib-1.9.1 → authlib-1.9.2}/authlib/jose/rfc8037/okp_key.py +0 -0
  108. {authlib-1.9.1 → authlib-1.9.2}/authlib/jose/util.py +0 -0
  109. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth1/__init__.py +0 -0
  110. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth1/client.py +0 -0
  111. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth1/errors.py +0 -0
  112. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth1/rfc5849/__init__.py +0 -0
  113. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth1/rfc5849/authorization_server.py +0 -0
  114. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth1/rfc5849/base_server.py +0 -0
  115. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth1/rfc5849/client_auth.py +0 -0
  116. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth1/rfc5849/errors.py +0 -0
  117. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth1/rfc5849/models.py +0 -0
  118. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth1/rfc5849/parameters.py +0 -0
  119. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth1/rfc5849/resource_protector.py +0 -0
  120. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth1/rfc5849/rsa.py +0 -0
  121. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth1/rfc5849/signature.py +0 -0
  122. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth1/rfc5849/util.py +0 -0
  123. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth1/rfc5849/wrapper.py +0 -0
  124. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/__init__.py +0 -0
  125. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/auth.py +0 -0
  126. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/base.py +0 -0
  127. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/claims.py +0 -0
  128. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/client.py +0 -0
  129. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/drafts/__init__.py +0 -0
  130. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc6749/__init__.py +0 -0
  131. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc6749/authenticate_client.py +0 -0
  132. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc6749/authorization_server.py +0 -0
  133. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc6749/endpoint.py +0 -0
  134. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc6749/errors.py +0 -0
  135. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc6749/grants/__init__.py +0 -0
  136. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc6749/grants/authorization_code.py +0 -0
  137. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc6749/grants/base.py +0 -0
  138. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc6749/grants/client_credentials.py +0 -0
  139. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc6749/grants/implicit.py +0 -0
  140. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc6749/grants/refresh_token.py +0 -0
  141. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc6749/grants/resource_owner_password_credentials.py +0 -0
  142. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc6749/hooks.py +0 -0
  143. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc6749/models.py +0 -0
  144. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc6749/parameters.py +0 -0
  145. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc6749/requests.py +0 -0
  146. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc6749/resource_protector.py +0 -0
  147. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc6749/token_endpoint.py +0 -0
  148. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc6749/util.py +0 -0
  149. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc6749/wrappers.py +0 -0
  150. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc6750/__init__.py +0 -0
  151. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc6750/errors.py +0 -0
  152. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc6750/parameters.py +0 -0
  153. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc6750/token.py +0 -0
  154. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc6750/validator.py +0 -0
  155. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc7009/__init__.py +0 -0
  156. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc7009/parameters.py +0 -0
  157. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc7009/revocation.py +0 -0
  158. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc7521/__init__.py +0 -0
  159. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc7521/client.py +0 -0
  160. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc7523/__init__.py +0 -0
  161. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc7523/assertion.py +0 -0
  162. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc7523/auth.py +0 -0
  163. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc7523/client.py +0 -0
  164. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc7523/jwt_bearer.py +0 -0
  165. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc7523/token.py +0 -0
  166. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc7523/validator.py +0 -0
  167. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc7591/__init__.py +0 -0
  168. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc7591/claims.py +0 -0
  169. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc7591/endpoint.py +0 -0
  170. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc7591/errors.py +0 -0
  171. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc7592/__init__.py +0 -0
  172. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc7592/endpoint.py +0 -0
  173. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc7636/__init__.py +0 -0
  174. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc7636/challenge.py +0 -0
  175. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc7662/__init__.py +0 -0
  176. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc7662/introspection.py +0 -0
  177. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc7662/models.py +0 -0
  178. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc7662/token_validator.py +0 -0
  179. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc8414/__init__.py +0 -0
  180. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc8414/models.py +0 -0
  181. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc8414/well_known.py +0 -0
  182. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc8628/__init__.py +0 -0
  183. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc8628/device_code.py +0 -0
  184. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc8628/endpoint.py +0 -0
  185. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc8628/errors.py +0 -0
  186. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc8628/models.py +0 -0
  187. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc8693/__init__.py +0 -0
  188. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc9068/__init__.py +0 -0
  189. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc9068/claims.py +0 -0
  190. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc9068/introspection.py +0 -0
  191. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc9068/revocation.py +0 -0
  192. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc9068/token.py +0 -0
  193. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc9068/token_validator.py +0 -0
  194. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc9101/__init__.py +0 -0
  195. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc9101/authorization_server.py +0 -0
  196. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc9101/discovery.py +0 -0
  197. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc9101/errors.py +0 -0
  198. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc9101/registration.py +0 -0
  199. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc9207/__init__.py +0 -0
  200. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc9207/discovery.py +0 -0
  201. {authlib-1.9.1 → authlib-1.9.2}/authlib/oauth2/rfc9207/parameter.py +0 -0
  202. {authlib-1.9.1 → authlib-1.9.2}/authlib/oidc/__init__.py +0 -0
  203. {authlib-1.9.1 → authlib-1.9.2}/authlib/oidc/core/__init__.py +0 -0
  204. {authlib-1.9.1 → authlib-1.9.2}/authlib/oidc/core/authorization_request.py +0 -0
  205. {authlib-1.9.1 → authlib-1.9.2}/authlib/oidc/core/claims.py +0 -0
  206. {authlib-1.9.1 → authlib-1.9.2}/authlib/oidc/core/errors.py +0 -0
  207. {authlib-1.9.1 → authlib-1.9.2}/authlib/oidc/core/grants/__init__.py +0 -0
  208. {authlib-1.9.1 → authlib-1.9.2}/authlib/oidc/core/grants/_legacy.py +0 -0
  209. {authlib-1.9.1 → authlib-1.9.2}/authlib/oidc/core/grants/code.py +0 -0
  210. {authlib-1.9.1 → authlib-1.9.2}/authlib/oidc/core/grants/hybrid.py +0 -0
  211. {authlib-1.9.1 → authlib-1.9.2}/authlib/oidc/core/grants/implicit.py +0 -0
  212. {authlib-1.9.1 → authlib-1.9.2}/authlib/oidc/core/grants/util.py +0 -0
  213. {authlib-1.9.1 → authlib-1.9.2}/authlib/oidc/core/models.py +0 -0
  214. {authlib-1.9.1 → authlib-1.9.2}/authlib/oidc/core/userinfo.py +0 -0
  215. {authlib-1.9.1 → authlib-1.9.2}/authlib/oidc/core/util.py +0 -0
  216. {authlib-1.9.1 → authlib-1.9.2}/authlib/oidc/discovery/__init__.py +0 -0
  217. {authlib-1.9.1 → authlib-1.9.2}/authlib/oidc/discovery/models.py +0 -0
  218. {authlib-1.9.1 → authlib-1.9.2}/authlib/oidc/discovery/well_known.py +0 -0
  219. {authlib-1.9.1 → authlib-1.9.2}/authlib/oidc/registration/__init__.py +0 -0
  220. {authlib-1.9.1 → authlib-1.9.2}/authlib/oidc/registration/claims.py +0 -0
  221. {authlib-1.9.1 → authlib-1.9.2}/authlib/oidc/rpinitiated/__init__.py +0 -0
  222. {authlib-1.9.1 → authlib-1.9.2}/authlib/oidc/rpinitiated/discovery.py +0 -0
  223. {authlib-1.9.1 → authlib-1.9.2}/authlib/oidc/rpinitiated/end_session.py +0 -0
  224. {authlib-1.9.1 → authlib-1.9.2}/authlib/oidc/rpinitiated/registration.py +0 -0
  225. {authlib-1.9.1 → authlib-1.9.2}/pyproject.toml +0 -0
  226. {authlib-1.9.1 → authlib-1.9.2}/setup.cfg +0 -0
  227. {authlib-1.9.1 → authlib-1.9.2}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: Authlib
3
- Version: 1.9.1
3
+ Version: 1.9.2
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.9.1
3
+ Version: 1.9.2
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.9.1"
2
+ version = "1.9.2"
3
3
  author = "Hsiaoming Yang <me@lepture.com>"
4
4
  homepage = "https://authlib.org"
5
5
  default_user_agent = f"{name}/{version} (+{homepage})"
@@ -32,6 +32,7 @@ from authlib.common.security import generate_token
32
32
  from ..rfc6749 import BaseGrant
33
33
  from ..rfc6749 import InvalidGrantError
34
34
  from ..rfc6749 import InvalidRequestError
35
+ from ..rfc6749 import InvalidScopeError
35
36
  from ..rfc6749 import TokenEndpointMixin
36
37
  from ..rfc6749 import UnauthorizedClientError
37
38
  from ..rfc6749 import scope_to_list
@@ -182,6 +183,7 @@ class IDJAGGrant(BaseGrant, TokenEndpointMixin):
182
183
  self.request.client = client
183
184
  log.debug("Validate token request of %s", client)
184
185
  self.validate_requested_scope()
186
+ self.request.scope = self._resolve_scope(claims)
185
187
 
186
188
  # Authenticate user from sub claim (required by ID-JAG).
187
189
  user = self.authenticate_user(claims["sub"])
@@ -189,7 +191,7 @@ class IDJAGGrant(BaseGrant, TokenEndpointMixin):
189
191
  raise InvalidGrantError(description="Invalid 'sub' value in assertion")
190
192
 
191
193
  # Application policy check.
192
- scopes = scope_to_list(self.request.payload.scope) or []
194
+ scopes = scope_to_list(self.request.scope) or []
193
195
  if not self.check_id_jag_permission(client, user, scopes):
194
196
  raise InvalidGrantError(
195
197
  description=(
@@ -203,7 +205,7 @@ class IDJAGGrant(BaseGrant, TokenEndpointMixin):
203
205
  def create_token_response(self):
204
206
  """Issue an access token (no refresh token per the ID-JAG draft)."""
205
207
  token = self.generate_token(
206
- scope=self.request.payload.scope,
208
+ scope=self.request.scope,
207
209
  user=self.request.user,
208
210
  include_refresh_token=False,
209
211
  )
@@ -241,6 +243,31 @@ class IDJAGGrant(BaseGrant, TokenEndpointMixin):
241
243
 
242
244
  return token.claims
243
245
 
246
+ def _resolve_scope(self, claims):
247
+ """Return the scope of the access token.
248
+
249
+ The scope is bounded by the scope claim of the assertion, and
250
+ defaults to it. Without that claim, the requested scope is used.
251
+ """
252
+ requested = self.request.payload.scope
253
+ if "scope" not in claims:
254
+ return requested
255
+
256
+ granted = claims["scope"]
257
+ if not isinstance(granted, str):
258
+ raise InvalidGrantError(description="Invalid 'scope' claim in assertion")
259
+
260
+ if not requested:
261
+ return granted
262
+
263
+ # RFC 7521 §4.1: "the requested scope MUST be equal to or less than
264
+ # the scope originally granted to the authorized accessor."
265
+ if not set(scope_to_list(requested)).issubset(scope_to_list(granted)):
266
+ raise InvalidScopeError(
267
+ description="The requested scope exceeds the 'scope' claim in assertion"
268
+ )
269
+ return requested
270
+
244
271
  def _extract_assertion(self, assertion: str):
245
272
  try:
246
273
  obj = jws.extract_compact(to_bytes(assertion))
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