Authlib 1.7.1__tar.gz → 1.7.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 (223) hide show
  1. {authlib-1.7.1 → authlib-1.7.2}/Authlib.egg-info/PKG-INFO +39 -39
  2. {authlib-1.7.1 → authlib-1.7.2}/Authlib.egg-info/SOURCES.txt +1 -0
  3. {authlib-1.7.1 → authlib-1.7.2}/PKG-INFO +39 -39
  4. {authlib-1.7.1 → authlib-1.7.2}/README.md +38 -38
  5. authlib-1.7.2/authlib/common/language.py +13 -0
  6. {authlib-1.7.1 → authlib-1.7.2}/authlib/consts.py +1 -1
  7. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc7523/assertion.py +1 -1
  8. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc7523/auth.py +3 -1
  9. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc8414/models.py +11 -1
  10. {authlib-1.7.1 → authlib-1.7.2}/authlib/oidc/core/claims.py +7 -0
  11. {authlib-1.7.1 → authlib-1.7.2}/authlib/oidc/discovery/models.py +2 -1
  12. {authlib-1.7.1 → authlib-1.7.2}/Authlib.egg-info/dependency_links.txt +0 -0
  13. {authlib-1.7.1 → authlib-1.7.2}/Authlib.egg-info/requires.txt +0 -0
  14. {authlib-1.7.1 → authlib-1.7.2}/Authlib.egg-info/top_level.txt +0 -0
  15. {authlib-1.7.1 → authlib-1.7.2}/LICENSE +0 -0
  16. {authlib-1.7.1 → authlib-1.7.2}/MANIFEST.in +0 -0
  17. {authlib-1.7.1 → authlib-1.7.2}/authlib/__init__.py +0 -0
  18. {authlib-1.7.1 → authlib-1.7.2}/authlib/_joserfc_helpers.py +0 -0
  19. {authlib-1.7.1 → authlib-1.7.2}/authlib/common/__init__.py +0 -0
  20. {authlib-1.7.1 → authlib-1.7.2}/authlib/common/encoding.py +0 -0
  21. {authlib-1.7.1 → authlib-1.7.2}/authlib/common/errors.py +0 -0
  22. {authlib-1.7.1 → authlib-1.7.2}/authlib/common/security.py +0 -0
  23. {authlib-1.7.1 → authlib-1.7.2}/authlib/common/urls.py +0 -0
  24. {authlib-1.7.1 → authlib-1.7.2}/authlib/deprecate.py +0 -0
  25. {authlib-1.7.1 → authlib-1.7.2}/authlib/integrations/__init__.py +0 -0
  26. {authlib-1.7.1 → authlib-1.7.2}/authlib/integrations/base_client/__init__.py +0 -0
  27. {authlib-1.7.1 → authlib-1.7.2}/authlib/integrations/base_client/async_app.py +0 -0
  28. {authlib-1.7.1 → authlib-1.7.2}/authlib/integrations/base_client/async_openid.py +0 -0
  29. {authlib-1.7.1 → authlib-1.7.2}/authlib/integrations/base_client/errors.py +0 -0
  30. {authlib-1.7.1 → authlib-1.7.2}/authlib/integrations/base_client/framework_integration.py +0 -0
  31. {authlib-1.7.1 → authlib-1.7.2}/authlib/integrations/base_client/registry.py +0 -0
  32. {authlib-1.7.1 → authlib-1.7.2}/authlib/integrations/base_client/sync_app.py +0 -0
  33. {authlib-1.7.1 → authlib-1.7.2}/authlib/integrations/base_client/sync_openid.py +0 -0
  34. {authlib-1.7.1 → authlib-1.7.2}/authlib/integrations/django_client/__init__.py +0 -0
  35. {authlib-1.7.1 → authlib-1.7.2}/authlib/integrations/django_client/apps.py +0 -0
  36. {authlib-1.7.1 → authlib-1.7.2}/authlib/integrations/django_client/integration.py +0 -0
  37. {authlib-1.7.1 → authlib-1.7.2}/authlib/integrations/django_oauth1/__init__.py +0 -0
  38. {authlib-1.7.1 → authlib-1.7.2}/authlib/integrations/django_oauth1/authorization_server.py +0 -0
  39. {authlib-1.7.1 → authlib-1.7.2}/authlib/integrations/django_oauth1/nonce.py +0 -0
  40. {authlib-1.7.1 → authlib-1.7.2}/authlib/integrations/django_oauth1/resource_protector.py +0 -0
  41. {authlib-1.7.1 → authlib-1.7.2}/authlib/integrations/django_oauth2/__init__.py +0 -0
  42. {authlib-1.7.1 → authlib-1.7.2}/authlib/integrations/django_oauth2/authorization_server.py +0 -0
  43. {authlib-1.7.1 → authlib-1.7.2}/authlib/integrations/django_oauth2/endpoints.py +0 -0
  44. {authlib-1.7.1 → authlib-1.7.2}/authlib/integrations/django_oauth2/requests.py +0 -0
  45. {authlib-1.7.1 → authlib-1.7.2}/authlib/integrations/django_oauth2/resource_protector.py +0 -0
  46. {authlib-1.7.1 → authlib-1.7.2}/authlib/integrations/django_oauth2/signals.py +0 -0
  47. {authlib-1.7.1 → authlib-1.7.2}/authlib/integrations/flask_client/__init__.py +0 -0
  48. {authlib-1.7.1 → authlib-1.7.2}/authlib/integrations/flask_client/apps.py +0 -0
  49. {authlib-1.7.1 → authlib-1.7.2}/authlib/integrations/flask_client/integration.py +0 -0
  50. {authlib-1.7.1 → authlib-1.7.2}/authlib/integrations/flask_oauth1/__init__.py +0 -0
  51. {authlib-1.7.1 → authlib-1.7.2}/authlib/integrations/flask_oauth1/authorization_server.py +0 -0
  52. {authlib-1.7.1 → authlib-1.7.2}/authlib/integrations/flask_oauth1/cache.py +0 -0
  53. {authlib-1.7.1 → authlib-1.7.2}/authlib/integrations/flask_oauth1/resource_protector.py +0 -0
  54. {authlib-1.7.1 → authlib-1.7.2}/authlib/integrations/flask_oauth2/__init__.py +0 -0
  55. {authlib-1.7.1 → authlib-1.7.2}/authlib/integrations/flask_oauth2/authorization_server.py +0 -0
  56. {authlib-1.7.1 → authlib-1.7.2}/authlib/integrations/flask_oauth2/errors.py +0 -0
  57. {authlib-1.7.1 → authlib-1.7.2}/authlib/integrations/flask_oauth2/requests.py +0 -0
  58. {authlib-1.7.1 → authlib-1.7.2}/authlib/integrations/flask_oauth2/resource_protector.py +0 -0
  59. {authlib-1.7.1 → authlib-1.7.2}/authlib/integrations/flask_oauth2/signals.py +0 -0
  60. {authlib-1.7.1 → authlib-1.7.2}/authlib/integrations/httpx_client/__init__.py +0 -0
  61. {authlib-1.7.1 → authlib-1.7.2}/authlib/integrations/httpx_client/assertion_client.py +0 -0
  62. {authlib-1.7.1 → authlib-1.7.2}/authlib/integrations/httpx_client/oauth1_client.py +0 -0
  63. {authlib-1.7.1 → authlib-1.7.2}/authlib/integrations/httpx_client/oauth2_client.py +0 -0
  64. {authlib-1.7.1 → authlib-1.7.2}/authlib/integrations/httpx_client/utils.py +0 -0
  65. {authlib-1.7.1 → authlib-1.7.2}/authlib/integrations/requests_client/__init__.py +0 -0
  66. {authlib-1.7.1 → authlib-1.7.2}/authlib/integrations/requests_client/assertion_session.py +0 -0
  67. {authlib-1.7.1 → authlib-1.7.2}/authlib/integrations/requests_client/oauth1_session.py +0 -0
  68. {authlib-1.7.1 → authlib-1.7.2}/authlib/integrations/requests_client/oauth2_session.py +0 -0
  69. {authlib-1.7.1 → authlib-1.7.2}/authlib/integrations/requests_client/utils.py +0 -0
  70. {authlib-1.7.1 → authlib-1.7.2}/authlib/integrations/sqla_oauth2/__init__.py +0 -0
  71. {authlib-1.7.1 → authlib-1.7.2}/authlib/integrations/sqla_oauth2/client_mixin.py +0 -0
  72. {authlib-1.7.1 → authlib-1.7.2}/authlib/integrations/sqla_oauth2/functions.py +0 -0
  73. {authlib-1.7.1 → authlib-1.7.2}/authlib/integrations/sqla_oauth2/tokens_mixins.py +0 -0
  74. {authlib-1.7.1 → authlib-1.7.2}/authlib/integrations/starlette_client/__init__.py +0 -0
  75. {authlib-1.7.1 → authlib-1.7.2}/authlib/integrations/starlette_client/apps.py +0 -0
  76. {authlib-1.7.1 → authlib-1.7.2}/authlib/integrations/starlette_client/integration.py +0 -0
  77. {authlib-1.7.1 → authlib-1.7.2}/authlib/jose/__init__.py +0 -0
  78. {authlib-1.7.1 → authlib-1.7.2}/authlib/jose/drafts/__init__.py +0 -0
  79. {authlib-1.7.1 → authlib-1.7.2}/authlib/jose/drafts/_jwe_algorithms.py +0 -0
  80. {authlib-1.7.1 → authlib-1.7.2}/authlib/jose/drafts/_jwe_enc_cryptodome.py +0 -0
  81. {authlib-1.7.1 → authlib-1.7.2}/authlib/jose/drafts/_jwe_enc_cryptography.py +0 -0
  82. {authlib-1.7.1 → authlib-1.7.2}/authlib/jose/errors.py +0 -0
  83. {authlib-1.7.1 → authlib-1.7.2}/authlib/jose/jwk.py +0 -0
  84. {authlib-1.7.1 → authlib-1.7.2}/authlib/jose/rfc7515/__init__.py +0 -0
  85. {authlib-1.7.1 → authlib-1.7.2}/authlib/jose/rfc7515/jws.py +0 -0
  86. {authlib-1.7.1 → authlib-1.7.2}/authlib/jose/rfc7515/models.py +0 -0
  87. {authlib-1.7.1 → authlib-1.7.2}/authlib/jose/rfc7516/__init__.py +0 -0
  88. {authlib-1.7.1 → authlib-1.7.2}/authlib/jose/rfc7516/jwe.py +0 -0
  89. {authlib-1.7.1 → authlib-1.7.2}/authlib/jose/rfc7516/models.py +0 -0
  90. {authlib-1.7.1 → authlib-1.7.2}/authlib/jose/rfc7517/__init__.py +0 -0
  91. {authlib-1.7.1 → authlib-1.7.2}/authlib/jose/rfc7517/_cryptography_key.py +0 -0
  92. {authlib-1.7.1 → authlib-1.7.2}/authlib/jose/rfc7517/asymmetric_key.py +0 -0
  93. {authlib-1.7.1 → authlib-1.7.2}/authlib/jose/rfc7517/base_key.py +0 -0
  94. {authlib-1.7.1 → authlib-1.7.2}/authlib/jose/rfc7517/jwk.py +0 -0
  95. {authlib-1.7.1 → authlib-1.7.2}/authlib/jose/rfc7517/key_set.py +0 -0
  96. {authlib-1.7.1 → authlib-1.7.2}/authlib/jose/rfc7518/__init__.py +0 -0
  97. {authlib-1.7.1 → authlib-1.7.2}/authlib/jose/rfc7518/ec_key.py +0 -0
  98. {authlib-1.7.1 → authlib-1.7.2}/authlib/jose/rfc7518/jwe_algs.py +0 -0
  99. {authlib-1.7.1 → authlib-1.7.2}/authlib/jose/rfc7518/jwe_encs.py +0 -0
  100. {authlib-1.7.1 → authlib-1.7.2}/authlib/jose/rfc7518/jwe_zips.py +0 -0
  101. {authlib-1.7.1 → authlib-1.7.2}/authlib/jose/rfc7518/jws_algs.py +0 -0
  102. {authlib-1.7.1 → authlib-1.7.2}/authlib/jose/rfc7518/oct_key.py +0 -0
  103. {authlib-1.7.1 → authlib-1.7.2}/authlib/jose/rfc7518/rsa_key.py +0 -0
  104. {authlib-1.7.1 → authlib-1.7.2}/authlib/jose/rfc7518/util.py +0 -0
  105. {authlib-1.7.1 → authlib-1.7.2}/authlib/jose/rfc7519/__init__.py +0 -0
  106. {authlib-1.7.1 → authlib-1.7.2}/authlib/jose/rfc7519/claims.py +0 -0
  107. {authlib-1.7.1 → authlib-1.7.2}/authlib/jose/rfc7519/jwt.py +0 -0
  108. {authlib-1.7.1 → authlib-1.7.2}/authlib/jose/rfc8037/__init__.py +0 -0
  109. {authlib-1.7.1 → authlib-1.7.2}/authlib/jose/rfc8037/jws_eddsa.py +0 -0
  110. {authlib-1.7.1 → authlib-1.7.2}/authlib/jose/rfc8037/okp_key.py +0 -0
  111. {authlib-1.7.1 → authlib-1.7.2}/authlib/jose/util.py +0 -0
  112. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth1/__init__.py +0 -0
  113. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth1/client.py +0 -0
  114. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth1/errors.py +0 -0
  115. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth1/rfc5849/__init__.py +0 -0
  116. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth1/rfc5849/authorization_server.py +0 -0
  117. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth1/rfc5849/base_server.py +0 -0
  118. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth1/rfc5849/client_auth.py +0 -0
  119. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth1/rfc5849/errors.py +0 -0
  120. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth1/rfc5849/models.py +0 -0
  121. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth1/rfc5849/parameters.py +0 -0
  122. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth1/rfc5849/resource_protector.py +0 -0
  123. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth1/rfc5849/rsa.py +0 -0
  124. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth1/rfc5849/signature.py +0 -0
  125. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth1/rfc5849/util.py +0 -0
  126. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth1/rfc5849/wrapper.py +0 -0
  127. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/__init__.py +0 -0
  128. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/auth.py +0 -0
  129. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/base.py +0 -0
  130. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/claims.py +0 -0
  131. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/client.py +0 -0
  132. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc6749/__init__.py +0 -0
  133. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc6749/authenticate_client.py +0 -0
  134. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc6749/authorization_server.py +0 -0
  135. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc6749/endpoint.py +0 -0
  136. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc6749/errors.py +0 -0
  137. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc6749/grants/__init__.py +0 -0
  138. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc6749/grants/authorization_code.py +0 -0
  139. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc6749/grants/base.py +0 -0
  140. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc6749/grants/client_credentials.py +0 -0
  141. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc6749/grants/implicit.py +0 -0
  142. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc6749/grants/refresh_token.py +0 -0
  143. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc6749/grants/resource_owner_password_credentials.py +0 -0
  144. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc6749/hooks.py +0 -0
  145. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc6749/models.py +0 -0
  146. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc6749/parameters.py +0 -0
  147. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc6749/requests.py +0 -0
  148. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc6749/resource_protector.py +0 -0
  149. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc6749/token_endpoint.py +0 -0
  150. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc6749/util.py +0 -0
  151. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc6749/wrappers.py +0 -0
  152. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc6750/__init__.py +0 -0
  153. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc6750/errors.py +0 -0
  154. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc6750/parameters.py +0 -0
  155. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc6750/token.py +0 -0
  156. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc6750/validator.py +0 -0
  157. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc7009/__init__.py +0 -0
  158. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc7009/parameters.py +0 -0
  159. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc7009/revocation.py +0 -0
  160. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc7521/__init__.py +0 -0
  161. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc7521/client.py +0 -0
  162. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc7523/__init__.py +0 -0
  163. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc7523/client.py +0 -0
  164. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc7523/jwt_bearer.py +0 -0
  165. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc7523/token.py +0 -0
  166. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc7523/validator.py +0 -0
  167. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc7591/__init__.py +0 -0
  168. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc7591/claims.py +0 -0
  169. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc7591/endpoint.py +0 -0
  170. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc7591/errors.py +0 -0
  171. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc7592/__init__.py +0 -0
  172. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc7592/endpoint.py +0 -0
  173. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc7636/__init__.py +0 -0
  174. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc7636/challenge.py +0 -0
  175. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc7662/__init__.py +0 -0
  176. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc7662/introspection.py +0 -0
  177. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc7662/models.py +0 -0
  178. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc7662/token_validator.py +0 -0
  179. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc8414/__init__.py +0 -0
  180. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc8414/well_known.py +0 -0
  181. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc8628/__init__.py +0 -0
  182. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc8628/device_code.py +0 -0
  183. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc8628/endpoint.py +0 -0
  184. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc8628/errors.py +0 -0
  185. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc8628/models.py +0 -0
  186. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc8693/__init__.py +0 -0
  187. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc9068/__init__.py +0 -0
  188. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc9068/claims.py +0 -0
  189. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc9068/introspection.py +0 -0
  190. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc9068/revocation.py +0 -0
  191. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc9068/token.py +0 -0
  192. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc9068/token_validator.py +0 -0
  193. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc9101/__init__.py +0 -0
  194. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc9101/authorization_server.py +0 -0
  195. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc9101/discovery.py +0 -0
  196. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc9101/errors.py +0 -0
  197. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc9101/registration.py +0 -0
  198. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc9207/__init__.py +0 -0
  199. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc9207/discovery.py +0 -0
  200. {authlib-1.7.1 → authlib-1.7.2}/authlib/oauth2/rfc9207/parameter.py +0 -0
  201. {authlib-1.7.1 → authlib-1.7.2}/authlib/oidc/__init__.py +0 -0
  202. {authlib-1.7.1 → authlib-1.7.2}/authlib/oidc/core/__init__.py +0 -0
  203. {authlib-1.7.1 → authlib-1.7.2}/authlib/oidc/core/errors.py +0 -0
  204. {authlib-1.7.1 → authlib-1.7.2}/authlib/oidc/core/grants/__init__.py +0 -0
  205. {authlib-1.7.1 → authlib-1.7.2}/authlib/oidc/core/grants/_legacy.py +0 -0
  206. {authlib-1.7.1 → authlib-1.7.2}/authlib/oidc/core/grants/code.py +0 -0
  207. {authlib-1.7.1 → authlib-1.7.2}/authlib/oidc/core/grants/hybrid.py +0 -0
  208. {authlib-1.7.1 → authlib-1.7.2}/authlib/oidc/core/grants/implicit.py +0 -0
  209. {authlib-1.7.1 → authlib-1.7.2}/authlib/oidc/core/grants/util.py +0 -0
  210. {authlib-1.7.1 → authlib-1.7.2}/authlib/oidc/core/models.py +0 -0
  211. {authlib-1.7.1 → authlib-1.7.2}/authlib/oidc/core/userinfo.py +0 -0
  212. {authlib-1.7.1 → authlib-1.7.2}/authlib/oidc/core/util.py +0 -0
  213. {authlib-1.7.1 → authlib-1.7.2}/authlib/oidc/discovery/__init__.py +0 -0
  214. {authlib-1.7.1 → authlib-1.7.2}/authlib/oidc/discovery/well_known.py +0 -0
  215. {authlib-1.7.1 → authlib-1.7.2}/authlib/oidc/registration/__init__.py +0 -0
  216. {authlib-1.7.1 → authlib-1.7.2}/authlib/oidc/registration/claims.py +0 -0
  217. {authlib-1.7.1 → authlib-1.7.2}/authlib/oidc/rpinitiated/__init__.py +0 -0
  218. {authlib-1.7.1 → authlib-1.7.2}/authlib/oidc/rpinitiated/discovery.py +0 -0
  219. {authlib-1.7.1 → authlib-1.7.2}/authlib/oidc/rpinitiated/end_session.py +0 -0
  220. {authlib-1.7.1 → authlib-1.7.2}/authlib/oidc/rpinitiated/registration.py +0 -0
  221. {authlib-1.7.1 → authlib-1.7.2}/pyproject.toml +0 -0
  222. {authlib-1.7.1 → authlib-1.7.2}/setup.cfg +0 -0
  223. {authlib-1.7.1 → authlib-1.7.2}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: Authlib
3
- Version: 1.7.1
3
+ Version: 1.7.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
@@ -83,33 +83,33 @@ Authlib will deprecate `authlib.jose` module, please read:
83
83
 
84
84
  Generic, spec-compliant implementation to build clients and providers:
85
85
 
86
- - [The OAuth 1.0 Protocol](https://docs.authlib.org/en/stable/basic/oauth1.html)
87
- - [RFC5849: The OAuth 1.0 Protocol](https://docs.authlib.org/en/stable/specs/rfc5849.html)
88
- - [The OAuth 2.0 Authorization Framework](https://docs.authlib.org/en/stable/basic/oauth2.html)
89
- - [RFC6749: The OAuth 2.0 Authorization Framework](https://docs.authlib.org/en/stable/specs/rfc6749.html)
90
- - [RFC6750: The OAuth 2.0 Authorization Framework: Bearer Token Usage](https://docs.authlib.org/en/stable/specs/rfc6750.html)
91
- - [RFC7009: OAuth 2.0 Token Revocation](https://docs.authlib.org/en/stable/specs/rfc7009.html)
92
- - [RFC7523: JWT Profile for OAuth 2.0 Client Authentication and Authorization Grants](https://docs.authlib.org/en/stable/specs/rfc7523.html)
93
- - [RFC7591: OAuth 2.0 Dynamic Client Registration Protocol](https://docs.authlib.org/en/stable/specs/rfc7591.html)
94
- - [RFC7592: OAuth 2.0 Dynamic Client Registration Management Protocol](https://docs.authlib.org/en/stable/specs/rfc7592.html)
95
- - [RFC7636: Proof Key for Code Exchange by OAuth Public Clients](https://docs.authlib.org/en/stable/specs/rfc7636.html)
96
- - [RFC7662: OAuth 2.0 Token Introspection](https://docs.authlib.org/en/stable/specs/rfc7662.html)
97
- - [RFC8414: OAuth 2.0 Authorization Server Metadata](https://docs.authlib.org/en/stable/specs/rfc8414.html)
98
- - [RFC8628: OAuth 2.0 Device Authorization Grant](https://docs.authlib.org/en/stable/specs/rfc8628.html)
99
- - [RFC9068: JSON Web Token (JWT) Profile for OAuth 2.0 Access Tokens](https://docs.authlib.org/en/stable/specs/rfc9068.html)
100
- - [RFC9101: The OAuth 2.0 Authorization Framework: JWT-Secured Authorization Request (JAR)](https://docs.authlib.org/en/stable/specs/rfc9101.html)
101
- - [RFC9207: OAuth 2.0 Authorization Server Issuer Identification](https://docs.authlib.org/en/stable/specs/rfc9207.html)
86
+ - [The OAuth 1.0 Protocol](https://docs.authlib.org/en/stable/oauth1/index.html)
87
+ - [RFC5849: The OAuth 1.0 Protocol](https://docs.authlib.org/en/stable/oauth1/specs/rfc5849.html)
88
+ - [The OAuth 2.0 Authorization Framework](https://docs.authlib.org/en/stable/oauth2/index.html)
89
+ - [RFC6749: The OAuth 2.0 Authorization Framework](https://docs.authlib.org/en/stable/oauth2/specs/rfc6749.html)
90
+ - [RFC6750: The OAuth 2.0 Authorization Framework: Bearer Token Usage](https://docs.authlib.org/en/stable/oauth2/specs/rfc6750.html)
91
+ - [RFC7009: OAuth 2.0 Token Revocation](https://docs.authlib.org/en/stable/oauth2/specs/rfc7009.html)
92
+ - [RFC7523: JWT Profile for OAuth 2.0 Client Authentication and Authorization Grants](https://docs.authlib.org/en/stable/oauth2/specs/rfc7523.html)
93
+ - [RFC7591: OAuth 2.0 Dynamic Client Registration Protocol](https://docs.authlib.org/en/stable/oauth2/specs/rfc7591.html)
94
+ - [RFC7592: OAuth 2.0 Dynamic Client Registration Management Protocol](https://docs.authlib.org/en/stable/oauth2/specs/rfc7592.html)
95
+ - [RFC7636: Proof Key for Code Exchange by OAuth Public Clients](https://docs.authlib.org/en/stable/oauth2/specs/rfc7636.html)
96
+ - [RFC7662: OAuth 2.0 Token Introspection](https://docs.authlib.org/en/stable/oauth2/specs/rfc7662.html)
97
+ - [RFC8414: OAuth 2.0 Authorization Server Metadata](https://docs.authlib.org/en/stable/oauth2/specs/rfc8414.html)
98
+ - [RFC8628: OAuth 2.0 Device Authorization Grant](https://docs.authlib.org/en/stable/oauth2/specs/rfc8628.html)
99
+ - [RFC9068: JSON Web Token (JWT) Profile for OAuth 2.0 Access Tokens](https://docs.authlib.org/en/stable/oauth2/specs/rfc9068.html)
100
+ - [RFC9101: The OAuth 2.0 Authorization Framework: JWT-Secured Authorization Request (JAR)](https://docs.authlib.org/en/stable/oauth2/specs/rfc9101.html)
101
+ - [RFC9207: OAuth 2.0 Authorization Server Issuer Identification](https://docs.authlib.org/en/stable/oauth2/specs/rfc9207.html)
102
102
  - [Javascript Object Signing and Encryption](https://docs.authlib.org/en/stable/jose/index.html)
103
103
  - [RFC7515: JSON Web Signature](https://docs.authlib.org/en/stable/jose/jws.html)
104
104
  - [RFC7516: JSON Web Encryption](https://docs.authlib.org/en/stable/jose/jwe.html)
105
105
  - [RFC7517: JSON Web Key](https://docs.authlib.org/en/stable/jose/jwk.html)
106
- - [RFC7518: JSON Web Algorithms](https://docs.authlib.org/en/stable/specs/rfc7518.html)
106
+ - [RFC7518: JSON Web Algorithms](https://docs.authlib.org/en/stable/jose/specs/rfc7518.html)
107
107
  - [RFC7519: JSON Web Token](https://docs.authlib.org/en/stable/jose/jwt.html)
108
- - [RFC7638: JSON Web Key (JWK) Thumbprint](https://docs.authlib.org/en/stable/specs/rfc7638.html)
108
+ - [RFC7638: JSON Web Key (JWK) Thumbprint](https://docs.authlib.org/en/stable/jose/specs/rfc7638.html)
109
109
  - [ ] RFC7797: JSON Web Signature (JWS) Unencoded Payload Option
110
- - [RFC8037: ECDH in JWS and JWE](https://docs.authlib.org/en/stable/specs/rfc8037.html)
110
+ - [RFC8037: ECDH in JWS and JWE](https://docs.authlib.org/en/stable/jose/specs/rfc8037.html)
111
111
  - [ ] draft-madden-jose-ecdh-1pu-04: Public Key Authenticated Encryption for JOSE: ECDH-1PU
112
- - [OpenID Connect 1.0](https://docs.authlib.org/en/stable/specs/oidc.html)
112
+ - [OpenID Connect 1.0](https://docs.authlib.org/en/stable/oauth2/specs/oidc.html)
113
113
  - [x] OpenID Connect Core 1.0
114
114
  - [x] OpenID Connect Discovery 1.0
115
115
  - [x] OpenID Connect Dynamic Client Registration 1.0
@@ -118,30 +118,30 @@ Generic, spec-compliant implementation to build clients and providers:
118
118
  Connect third party OAuth providers with Authlib built-in client integrations:
119
119
 
120
120
  - Requests
121
- - [OAuth1Session](https://docs.authlib.org/en/stable/client/requests.html#requests-oauth-1-0)
122
- - [OAuth2Session](https://docs.authlib.org/en/stable/client/requests.html#requests-oauth-2-0)
123
- - [OpenID Connect](https://docs.authlib.org/en/stable/client/requests.html#requests-openid-connect)
124
- - [AssertionSession](https://docs.authlib.org/en/stable/client/requests.html#requests-service-account)
121
+ - [OAuth1Session](https://docs.authlib.org/en/stable/oauth1/client/http/requests.html)
122
+ - [OAuth2Session](https://docs.authlib.org/en/stable/oauth2/client/http/requests.html#requests-oauth-2-0)
123
+ - [OpenID Connect](https://docs.authlib.org/en/stable/oauth2/client/http/requests.html#requests-openid-connect)
124
+ - [AssertionSession](https://docs.authlib.org/en/stable/oauth2/client/http/requests.html#requests-service-account)
125
125
  - HTTPX
126
- - [AsyncOAuth1Client](https://docs.authlib.org/en/stable/client/httpx.html#httpx-oauth-1-0)
127
- - [AsyncOAuth2Client](https://docs.authlib.org/en/stable/client/httpx.html#httpx-oauth-2-0)
128
- - [OpenID Connect](https://docs.authlib.org/en/stable/client/httpx.html#httpx-oauth-2-0)
129
- - [AsyncAssertionClient](https://docs.authlib.org/en/stable/client/httpx.html#async-service-account)
130
- - [Flask OAuth Client](https://docs.authlib.org/en/stable/client/flask.html)
131
- - [Django OAuth Client](https://docs.authlib.org/en/stable/client/django.html)
132
- - [Starlette OAuth Client](https://docs.authlib.org/en/stable/client/starlette.html)
133
- - [FastAPI OAuth Client](https://docs.authlib.org/en/stable/client/fastapi.html)
126
+ - [AsyncOAuth1Client](https://docs.authlib.org/en/stable/oauth1/client/http/httpx.html)
127
+ - [AsyncOAuth2Client](https://docs.authlib.org/en/stable/oauth2/client/http/httpx.html#httpx-oauth-2-0)
128
+ - [OpenID Connect](https://docs.authlib.org/en/stable/oauth2/client/http/httpx.html#httpx-oauth-2-0)
129
+ - [AsyncAssertionClient](https://docs.authlib.org/en/stable/oauth2/client/http/httpx.html#async-service-account)
130
+ - [Flask OAuth Client](https://docs.authlib.org/en/stable/oauth2/client/web/flask.html)
131
+ - [Django OAuth Client](https://docs.authlib.org/en/stable/oauth2/client/web/django.html)
132
+ - [Starlette OAuth Client](https://docs.authlib.org/en/stable/oauth2/client/web/starlette.html)
133
+ - [FastAPI OAuth Client](https://docs.authlib.org/en/stable/oauth2/client/web/fastapi.html)
134
134
 
135
135
  Build your own OAuth 1.0, OAuth 2.0, and OpenID Connect providers:
136
136
 
137
137
  - Flask
138
- - [Flask OAuth 1.0 Provider](https://docs.authlib.org/en/stable/flask/1/)
139
- - [Flask OAuth 2.0 Provider](https://docs.authlib.org/en/stable/flask/2/)
140
- - [Flask OpenID Connect 1.0 Provider](https://docs.authlib.org/en/stable/flask/2/openid-connect.html)
138
+ - [Flask OAuth 1.0 Provider](https://docs.authlib.org/en/stable/oauth1/provider/flask/index.html)
139
+ - [Flask OAuth 2.0 Provider](https://docs.authlib.org/en/stable/oauth2/authorization-server/flask/index.html)
140
+ - [Flask OpenID Connect 1.0 Provider](https://docs.authlib.org/en/stable/oauth2/authorization-server/flask/openid-connect.html)
141
141
  - Django
142
- - [Django OAuth 1.0 Provider](https://docs.authlib.org/en/stable/django/1/)
143
- - [Django OAuth 2.0 Provider](https://docs.authlib.org/en/stable/django/2/)
144
- - [Django OpenID Connect 1.0 Provider](https://docs.authlib.org/en/stable/django/2/openid-connect.html)
142
+ - [Django OAuth 1.0 Provider](https://docs.authlib.org/en/stable/oauth1/provider/django/index.html)
143
+ - [Django OAuth 2.0 Provider](https://docs.authlib.org/en/stable/oauth2/authorization-server/django/index.html)
144
+ - [Django OpenID Connect 1.0 Provider](https://docs.authlib.org/en/stable/oauth2/authorization-server/django/openid-connect.html)
145
145
 
146
146
  ## Useful Links
147
147
 
@@ -15,6 +15,7 @@ authlib/deprecate.py
15
15
  authlib/common/__init__.py
16
16
  authlib/common/encoding.py
17
17
  authlib/common/errors.py
18
+ authlib/common/language.py
18
19
  authlib/common/security.py
19
20
  authlib/common/urls.py
20
21
  authlib/integrations/__init__.py
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: Authlib
3
- Version: 1.7.1
3
+ Version: 1.7.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
@@ -83,33 +83,33 @@ Authlib will deprecate `authlib.jose` module, please read:
83
83
 
84
84
  Generic, spec-compliant implementation to build clients and providers:
85
85
 
86
- - [The OAuth 1.0 Protocol](https://docs.authlib.org/en/stable/basic/oauth1.html)
87
- - [RFC5849: The OAuth 1.0 Protocol](https://docs.authlib.org/en/stable/specs/rfc5849.html)
88
- - [The OAuth 2.0 Authorization Framework](https://docs.authlib.org/en/stable/basic/oauth2.html)
89
- - [RFC6749: The OAuth 2.0 Authorization Framework](https://docs.authlib.org/en/stable/specs/rfc6749.html)
90
- - [RFC6750: The OAuth 2.0 Authorization Framework: Bearer Token Usage](https://docs.authlib.org/en/stable/specs/rfc6750.html)
91
- - [RFC7009: OAuth 2.0 Token Revocation](https://docs.authlib.org/en/stable/specs/rfc7009.html)
92
- - [RFC7523: JWT Profile for OAuth 2.0 Client Authentication and Authorization Grants](https://docs.authlib.org/en/stable/specs/rfc7523.html)
93
- - [RFC7591: OAuth 2.0 Dynamic Client Registration Protocol](https://docs.authlib.org/en/stable/specs/rfc7591.html)
94
- - [RFC7592: OAuth 2.0 Dynamic Client Registration Management Protocol](https://docs.authlib.org/en/stable/specs/rfc7592.html)
95
- - [RFC7636: Proof Key for Code Exchange by OAuth Public Clients](https://docs.authlib.org/en/stable/specs/rfc7636.html)
96
- - [RFC7662: OAuth 2.0 Token Introspection](https://docs.authlib.org/en/stable/specs/rfc7662.html)
97
- - [RFC8414: OAuth 2.0 Authorization Server Metadata](https://docs.authlib.org/en/stable/specs/rfc8414.html)
98
- - [RFC8628: OAuth 2.0 Device Authorization Grant](https://docs.authlib.org/en/stable/specs/rfc8628.html)
99
- - [RFC9068: JSON Web Token (JWT) Profile for OAuth 2.0 Access Tokens](https://docs.authlib.org/en/stable/specs/rfc9068.html)
100
- - [RFC9101: The OAuth 2.0 Authorization Framework: JWT-Secured Authorization Request (JAR)](https://docs.authlib.org/en/stable/specs/rfc9101.html)
101
- - [RFC9207: OAuth 2.0 Authorization Server Issuer Identification](https://docs.authlib.org/en/stable/specs/rfc9207.html)
86
+ - [The OAuth 1.0 Protocol](https://docs.authlib.org/en/stable/oauth1/index.html)
87
+ - [RFC5849: The OAuth 1.0 Protocol](https://docs.authlib.org/en/stable/oauth1/specs/rfc5849.html)
88
+ - [The OAuth 2.0 Authorization Framework](https://docs.authlib.org/en/stable/oauth2/index.html)
89
+ - [RFC6749: The OAuth 2.0 Authorization Framework](https://docs.authlib.org/en/stable/oauth2/specs/rfc6749.html)
90
+ - [RFC6750: The OAuth 2.0 Authorization Framework: Bearer Token Usage](https://docs.authlib.org/en/stable/oauth2/specs/rfc6750.html)
91
+ - [RFC7009: OAuth 2.0 Token Revocation](https://docs.authlib.org/en/stable/oauth2/specs/rfc7009.html)
92
+ - [RFC7523: JWT Profile for OAuth 2.0 Client Authentication and Authorization Grants](https://docs.authlib.org/en/stable/oauth2/specs/rfc7523.html)
93
+ - [RFC7591: OAuth 2.0 Dynamic Client Registration Protocol](https://docs.authlib.org/en/stable/oauth2/specs/rfc7591.html)
94
+ - [RFC7592: OAuth 2.0 Dynamic Client Registration Management Protocol](https://docs.authlib.org/en/stable/oauth2/specs/rfc7592.html)
95
+ - [RFC7636: Proof Key for Code Exchange by OAuth Public Clients](https://docs.authlib.org/en/stable/oauth2/specs/rfc7636.html)
96
+ - [RFC7662: OAuth 2.0 Token Introspection](https://docs.authlib.org/en/stable/oauth2/specs/rfc7662.html)
97
+ - [RFC8414: OAuth 2.0 Authorization Server Metadata](https://docs.authlib.org/en/stable/oauth2/specs/rfc8414.html)
98
+ - [RFC8628: OAuth 2.0 Device Authorization Grant](https://docs.authlib.org/en/stable/oauth2/specs/rfc8628.html)
99
+ - [RFC9068: JSON Web Token (JWT) Profile for OAuth 2.0 Access Tokens](https://docs.authlib.org/en/stable/oauth2/specs/rfc9068.html)
100
+ - [RFC9101: The OAuth 2.0 Authorization Framework: JWT-Secured Authorization Request (JAR)](https://docs.authlib.org/en/stable/oauth2/specs/rfc9101.html)
101
+ - [RFC9207: OAuth 2.0 Authorization Server Issuer Identification](https://docs.authlib.org/en/stable/oauth2/specs/rfc9207.html)
102
102
  - [Javascript Object Signing and Encryption](https://docs.authlib.org/en/stable/jose/index.html)
103
103
  - [RFC7515: JSON Web Signature](https://docs.authlib.org/en/stable/jose/jws.html)
104
104
  - [RFC7516: JSON Web Encryption](https://docs.authlib.org/en/stable/jose/jwe.html)
105
105
  - [RFC7517: JSON Web Key](https://docs.authlib.org/en/stable/jose/jwk.html)
106
- - [RFC7518: JSON Web Algorithms](https://docs.authlib.org/en/stable/specs/rfc7518.html)
106
+ - [RFC7518: JSON Web Algorithms](https://docs.authlib.org/en/stable/jose/specs/rfc7518.html)
107
107
  - [RFC7519: JSON Web Token](https://docs.authlib.org/en/stable/jose/jwt.html)
108
- - [RFC7638: JSON Web Key (JWK) Thumbprint](https://docs.authlib.org/en/stable/specs/rfc7638.html)
108
+ - [RFC7638: JSON Web Key (JWK) Thumbprint](https://docs.authlib.org/en/stable/jose/specs/rfc7638.html)
109
109
  - [ ] RFC7797: JSON Web Signature (JWS) Unencoded Payload Option
110
- - [RFC8037: ECDH in JWS and JWE](https://docs.authlib.org/en/stable/specs/rfc8037.html)
110
+ - [RFC8037: ECDH in JWS and JWE](https://docs.authlib.org/en/stable/jose/specs/rfc8037.html)
111
111
  - [ ] draft-madden-jose-ecdh-1pu-04: Public Key Authenticated Encryption for JOSE: ECDH-1PU
112
- - [OpenID Connect 1.0](https://docs.authlib.org/en/stable/specs/oidc.html)
112
+ - [OpenID Connect 1.0](https://docs.authlib.org/en/stable/oauth2/specs/oidc.html)
113
113
  - [x] OpenID Connect Core 1.0
114
114
  - [x] OpenID Connect Discovery 1.0
115
115
  - [x] OpenID Connect Dynamic Client Registration 1.0
@@ -118,30 +118,30 @@ Generic, spec-compliant implementation to build clients and providers:
118
118
  Connect third party OAuth providers with Authlib built-in client integrations:
119
119
 
120
120
  - Requests
121
- - [OAuth1Session](https://docs.authlib.org/en/stable/client/requests.html#requests-oauth-1-0)
122
- - [OAuth2Session](https://docs.authlib.org/en/stable/client/requests.html#requests-oauth-2-0)
123
- - [OpenID Connect](https://docs.authlib.org/en/stable/client/requests.html#requests-openid-connect)
124
- - [AssertionSession](https://docs.authlib.org/en/stable/client/requests.html#requests-service-account)
121
+ - [OAuth1Session](https://docs.authlib.org/en/stable/oauth1/client/http/requests.html)
122
+ - [OAuth2Session](https://docs.authlib.org/en/stable/oauth2/client/http/requests.html#requests-oauth-2-0)
123
+ - [OpenID Connect](https://docs.authlib.org/en/stable/oauth2/client/http/requests.html#requests-openid-connect)
124
+ - [AssertionSession](https://docs.authlib.org/en/stable/oauth2/client/http/requests.html#requests-service-account)
125
125
  - HTTPX
126
- - [AsyncOAuth1Client](https://docs.authlib.org/en/stable/client/httpx.html#httpx-oauth-1-0)
127
- - [AsyncOAuth2Client](https://docs.authlib.org/en/stable/client/httpx.html#httpx-oauth-2-0)
128
- - [OpenID Connect](https://docs.authlib.org/en/stable/client/httpx.html#httpx-oauth-2-0)
129
- - [AsyncAssertionClient](https://docs.authlib.org/en/stable/client/httpx.html#async-service-account)
130
- - [Flask OAuth Client](https://docs.authlib.org/en/stable/client/flask.html)
131
- - [Django OAuth Client](https://docs.authlib.org/en/stable/client/django.html)
132
- - [Starlette OAuth Client](https://docs.authlib.org/en/stable/client/starlette.html)
133
- - [FastAPI OAuth Client](https://docs.authlib.org/en/stable/client/fastapi.html)
126
+ - [AsyncOAuth1Client](https://docs.authlib.org/en/stable/oauth1/client/http/httpx.html)
127
+ - [AsyncOAuth2Client](https://docs.authlib.org/en/stable/oauth2/client/http/httpx.html#httpx-oauth-2-0)
128
+ - [OpenID Connect](https://docs.authlib.org/en/stable/oauth2/client/http/httpx.html#httpx-oauth-2-0)
129
+ - [AsyncAssertionClient](https://docs.authlib.org/en/stable/oauth2/client/http/httpx.html#async-service-account)
130
+ - [Flask OAuth Client](https://docs.authlib.org/en/stable/oauth2/client/web/flask.html)
131
+ - [Django OAuth Client](https://docs.authlib.org/en/stable/oauth2/client/web/django.html)
132
+ - [Starlette OAuth Client](https://docs.authlib.org/en/stable/oauth2/client/web/starlette.html)
133
+ - [FastAPI OAuth Client](https://docs.authlib.org/en/stable/oauth2/client/web/fastapi.html)
134
134
 
135
135
  Build your own OAuth 1.0, OAuth 2.0, and OpenID Connect providers:
136
136
 
137
137
  - Flask
138
- - [Flask OAuth 1.0 Provider](https://docs.authlib.org/en/stable/flask/1/)
139
- - [Flask OAuth 2.0 Provider](https://docs.authlib.org/en/stable/flask/2/)
140
- - [Flask OpenID Connect 1.0 Provider](https://docs.authlib.org/en/stable/flask/2/openid-connect.html)
138
+ - [Flask OAuth 1.0 Provider](https://docs.authlib.org/en/stable/oauth1/provider/flask/index.html)
139
+ - [Flask OAuth 2.0 Provider](https://docs.authlib.org/en/stable/oauth2/authorization-server/flask/index.html)
140
+ - [Flask OpenID Connect 1.0 Provider](https://docs.authlib.org/en/stable/oauth2/authorization-server/flask/openid-connect.html)
141
141
  - Django
142
- - [Django OAuth 1.0 Provider](https://docs.authlib.org/en/stable/django/1/)
143
- - [Django OAuth 2.0 Provider](https://docs.authlib.org/en/stable/django/2/)
144
- - [Django OpenID Connect 1.0 Provider](https://docs.authlib.org/en/stable/django/2/openid-connect.html)
142
+ - [Django OAuth 1.0 Provider](https://docs.authlib.org/en/stable/oauth1/provider/django/index.html)
143
+ - [Django OAuth 2.0 Provider](https://docs.authlib.org/en/stable/oauth2/authorization-server/django/index.html)
144
+ - [Django OpenID Connect 1.0 Provider](https://docs.authlib.org/en/stable/oauth2/authorization-server/django/openid-connect.html)
145
145
 
146
146
  ## Useful Links
147
147
 
@@ -45,33 +45,33 @@ Authlib will deprecate `authlib.jose` module, please read:
45
45
 
46
46
  Generic, spec-compliant implementation to build clients and providers:
47
47
 
48
- - [The OAuth 1.0 Protocol](https://docs.authlib.org/en/stable/basic/oauth1.html)
49
- - [RFC5849: The OAuth 1.0 Protocol](https://docs.authlib.org/en/stable/specs/rfc5849.html)
50
- - [The OAuth 2.0 Authorization Framework](https://docs.authlib.org/en/stable/basic/oauth2.html)
51
- - [RFC6749: The OAuth 2.0 Authorization Framework](https://docs.authlib.org/en/stable/specs/rfc6749.html)
52
- - [RFC6750: The OAuth 2.0 Authorization Framework: Bearer Token Usage](https://docs.authlib.org/en/stable/specs/rfc6750.html)
53
- - [RFC7009: OAuth 2.0 Token Revocation](https://docs.authlib.org/en/stable/specs/rfc7009.html)
54
- - [RFC7523: JWT Profile for OAuth 2.0 Client Authentication and Authorization Grants](https://docs.authlib.org/en/stable/specs/rfc7523.html)
55
- - [RFC7591: OAuth 2.0 Dynamic Client Registration Protocol](https://docs.authlib.org/en/stable/specs/rfc7591.html)
56
- - [RFC7592: OAuth 2.0 Dynamic Client Registration Management Protocol](https://docs.authlib.org/en/stable/specs/rfc7592.html)
57
- - [RFC7636: Proof Key for Code Exchange by OAuth Public Clients](https://docs.authlib.org/en/stable/specs/rfc7636.html)
58
- - [RFC7662: OAuth 2.0 Token Introspection](https://docs.authlib.org/en/stable/specs/rfc7662.html)
59
- - [RFC8414: OAuth 2.0 Authorization Server Metadata](https://docs.authlib.org/en/stable/specs/rfc8414.html)
60
- - [RFC8628: OAuth 2.0 Device Authorization Grant](https://docs.authlib.org/en/stable/specs/rfc8628.html)
61
- - [RFC9068: JSON Web Token (JWT) Profile for OAuth 2.0 Access Tokens](https://docs.authlib.org/en/stable/specs/rfc9068.html)
62
- - [RFC9101: The OAuth 2.0 Authorization Framework: JWT-Secured Authorization Request (JAR)](https://docs.authlib.org/en/stable/specs/rfc9101.html)
63
- - [RFC9207: OAuth 2.0 Authorization Server Issuer Identification](https://docs.authlib.org/en/stable/specs/rfc9207.html)
48
+ - [The OAuth 1.0 Protocol](https://docs.authlib.org/en/stable/oauth1/index.html)
49
+ - [RFC5849: The OAuth 1.0 Protocol](https://docs.authlib.org/en/stable/oauth1/specs/rfc5849.html)
50
+ - [The OAuth 2.0 Authorization Framework](https://docs.authlib.org/en/stable/oauth2/index.html)
51
+ - [RFC6749: The OAuth 2.0 Authorization Framework](https://docs.authlib.org/en/stable/oauth2/specs/rfc6749.html)
52
+ - [RFC6750: The OAuth 2.0 Authorization Framework: Bearer Token Usage](https://docs.authlib.org/en/stable/oauth2/specs/rfc6750.html)
53
+ - [RFC7009: OAuth 2.0 Token Revocation](https://docs.authlib.org/en/stable/oauth2/specs/rfc7009.html)
54
+ - [RFC7523: JWT Profile for OAuth 2.0 Client Authentication and Authorization Grants](https://docs.authlib.org/en/stable/oauth2/specs/rfc7523.html)
55
+ - [RFC7591: OAuth 2.0 Dynamic Client Registration Protocol](https://docs.authlib.org/en/stable/oauth2/specs/rfc7591.html)
56
+ - [RFC7592: OAuth 2.0 Dynamic Client Registration Management Protocol](https://docs.authlib.org/en/stable/oauth2/specs/rfc7592.html)
57
+ - [RFC7636: Proof Key for Code Exchange by OAuth Public Clients](https://docs.authlib.org/en/stable/oauth2/specs/rfc7636.html)
58
+ - [RFC7662: OAuth 2.0 Token Introspection](https://docs.authlib.org/en/stable/oauth2/specs/rfc7662.html)
59
+ - [RFC8414: OAuth 2.0 Authorization Server Metadata](https://docs.authlib.org/en/stable/oauth2/specs/rfc8414.html)
60
+ - [RFC8628: OAuth 2.0 Device Authorization Grant](https://docs.authlib.org/en/stable/oauth2/specs/rfc8628.html)
61
+ - [RFC9068: JSON Web Token (JWT) Profile for OAuth 2.0 Access Tokens](https://docs.authlib.org/en/stable/oauth2/specs/rfc9068.html)
62
+ - [RFC9101: The OAuth 2.0 Authorization Framework: JWT-Secured Authorization Request (JAR)](https://docs.authlib.org/en/stable/oauth2/specs/rfc9101.html)
63
+ - [RFC9207: OAuth 2.0 Authorization Server Issuer Identification](https://docs.authlib.org/en/stable/oauth2/specs/rfc9207.html)
64
64
  - [Javascript Object Signing and Encryption](https://docs.authlib.org/en/stable/jose/index.html)
65
65
  - [RFC7515: JSON Web Signature](https://docs.authlib.org/en/stable/jose/jws.html)
66
66
  - [RFC7516: JSON Web Encryption](https://docs.authlib.org/en/stable/jose/jwe.html)
67
67
  - [RFC7517: JSON Web Key](https://docs.authlib.org/en/stable/jose/jwk.html)
68
- - [RFC7518: JSON Web Algorithms](https://docs.authlib.org/en/stable/specs/rfc7518.html)
68
+ - [RFC7518: JSON Web Algorithms](https://docs.authlib.org/en/stable/jose/specs/rfc7518.html)
69
69
  - [RFC7519: JSON Web Token](https://docs.authlib.org/en/stable/jose/jwt.html)
70
- - [RFC7638: JSON Web Key (JWK) Thumbprint](https://docs.authlib.org/en/stable/specs/rfc7638.html)
70
+ - [RFC7638: JSON Web Key (JWK) Thumbprint](https://docs.authlib.org/en/stable/jose/specs/rfc7638.html)
71
71
  - [ ] RFC7797: JSON Web Signature (JWS) Unencoded Payload Option
72
- - [RFC8037: ECDH in JWS and JWE](https://docs.authlib.org/en/stable/specs/rfc8037.html)
72
+ - [RFC8037: ECDH in JWS and JWE](https://docs.authlib.org/en/stable/jose/specs/rfc8037.html)
73
73
  - [ ] draft-madden-jose-ecdh-1pu-04: Public Key Authenticated Encryption for JOSE: ECDH-1PU
74
- - [OpenID Connect 1.0](https://docs.authlib.org/en/stable/specs/oidc.html)
74
+ - [OpenID Connect 1.0](https://docs.authlib.org/en/stable/oauth2/specs/oidc.html)
75
75
  - [x] OpenID Connect Core 1.0
76
76
  - [x] OpenID Connect Discovery 1.0
77
77
  - [x] OpenID Connect Dynamic Client Registration 1.0
@@ -80,30 +80,30 @@ Generic, spec-compliant implementation to build clients and providers:
80
80
  Connect third party OAuth providers with Authlib built-in client integrations:
81
81
 
82
82
  - Requests
83
- - [OAuth1Session](https://docs.authlib.org/en/stable/client/requests.html#requests-oauth-1-0)
84
- - [OAuth2Session](https://docs.authlib.org/en/stable/client/requests.html#requests-oauth-2-0)
85
- - [OpenID Connect](https://docs.authlib.org/en/stable/client/requests.html#requests-openid-connect)
86
- - [AssertionSession](https://docs.authlib.org/en/stable/client/requests.html#requests-service-account)
83
+ - [OAuth1Session](https://docs.authlib.org/en/stable/oauth1/client/http/requests.html)
84
+ - [OAuth2Session](https://docs.authlib.org/en/stable/oauth2/client/http/requests.html#requests-oauth-2-0)
85
+ - [OpenID Connect](https://docs.authlib.org/en/stable/oauth2/client/http/requests.html#requests-openid-connect)
86
+ - [AssertionSession](https://docs.authlib.org/en/stable/oauth2/client/http/requests.html#requests-service-account)
87
87
  - HTTPX
88
- - [AsyncOAuth1Client](https://docs.authlib.org/en/stable/client/httpx.html#httpx-oauth-1-0)
89
- - [AsyncOAuth2Client](https://docs.authlib.org/en/stable/client/httpx.html#httpx-oauth-2-0)
90
- - [OpenID Connect](https://docs.authlib.org/en/stable/client/httpx.html#httpx-oauth-2-0)
91
- - [AsyncAssertionClient](https://docs.authlib.org/en/stable/client/httpx.html#async-service-account)
92
- - [Flask OAuth Client](https://docs.authlib.org/en/stable/client/flask.html)
93
- - [Django OAuth Client](https://docs.authlib.org/en/stable/client/django.html)
94
- - [Starlette OAuth Client](https://docs.authlib.org/en/stable/client/starlette.html)
95
- - [FastAPI OAuth Client](https://docs.authlib.org/en/stable/client/fastapi.html)
88
+ - [AsyncOAuth1Client](https://docs.authlib.org/en/stable/oauth1/client/http/httpx.html)
89
+ - [AsyncOAuth2Client](https://docs.authlib.org/en/stable/oauth2/client/http/httpx.html#httpx-oauth-2-0)
90
+ - [OpenID Connect](https://docs.authlib.org/en/stable/oauth2/client/http/httpx.html#httpx-oauth-2-0)
91
+ - [AsyncAssertionClient](https://docs.authlib.org/en/stable/oauth2/client/http/httpx.html#async-service-account)
92
+ - [Flask OAuth Client](https://docs.authlib.org/en/stable/oauth2/client/web/flask.html)
93
+ - [Django OAuth Client](https://docs.authlib.org/en/stable/oauth2/client/web/django.html)
94
+ - [Starlette OAuth Client](https://docs.authlib.org/en/stable/oauth2/client/web/starlette.html)
95
+ - [FastAPI OAuth Client](https://docs.authlib.org/en/stable/oauth2/client/web/fastapi.html)
96
96
 
97
97
  Build your own OAuth 1.0, OAuth 2.0, and OpenID Connect providers:
98
98
 
99
99
  - Flask
100
- - [Flask OAuth 1.0 Provider](https://docs.authlib.org/en/stable/flask/1/)
101
- - [Flask OAuth 2.0 Provider](https://docs.authlib.org/en/stable/flask/2/)
102
- - [Flask OpenID Connect 1.0 Provider](https://docs.authlib.org/en/stable/flask/2/openid-connect.html)
100
+ - [Flask OAuth 1.0 Provider](https://docs.authlib.org/en/stable/oauth1/provider/flask/index.html)
101
+ - [Flask OAuth 2.0 Provider](https://docs.authlib.org/en/stable/oauth2/authorization-server/flask/index.html)
102
+ - [Flask OpenID Connect 1.0 Provider](https://docs.authlib.org/en/stable/oauth2/authorization-server/flask/openid-connect.html)
103
103
  - Django
104
- - [Django OAuth 1.0 Provider](https://docs.authlib.org/en/stable/django/1/)
105
- - [Django OAuth 2.0 Provider](https://docs.authlib.org/en/stable/django/2/)
106
- - [Django OpenID Connect 1.0 Provider](https://docs.authlib.org/en/stable/django/2/openid-connect.html)
104
+ - [Django OAuth 1.0 Provider](https://docs.authlib.org/en/stable/oauth1/provider/django/index.html)
105
+ - [Django OAuth 2.0 Provider](https://docs.authlib.org/en/stable/oauth2/authorization-server/django/index.html)
106
+ - [Django OpenID Connect 1.0 Provider](https://docs.authlib.org/en/stable/oauth2/authorization-server/django/openid-connect.html)
107
107
 
108
108
  ## Useful Links
109
109
 
@@ -0,0 +1,13 @@
1
+ import re
2
+
3
+ # Structurally validates BCP 47 language tags (RFC 5646).
4
+ # Accepts private-use tags (x-...) and standard tags (2-8 alpha + optional subtags).
5
+ # Does not validate subtags against the IANA registry.
6
+ _LANGUAGE_TAG_RE = re.compile(
7
+ r"^(x(-[a-zA-Z0-9]{1,8})+|[a-zA-Z]{2,8}(-[a-zA-Z0-9]{1,8})*)$"
8
+ )
9
+
10
+
11
+ def is_valid_language_tag(tag):
12
+ """Return True if tag is a structurally valid BCP 47 language tag."""
13
+ return isinstance(tag, str) and bool(_LANGUAGE_TAG_RE.match(tag))
@@ -1,5 +1,5 @@
1
1
  name = "Authlib"
2
- version = "1.7.1"
2
+ version = "1.7.2"
3
3
  author = "Hsiaoming Yang <me@lepture.com>"
4
4
  homepage = "https://authlib.org"
5
5
  default_user_agent = f"{name}/{version} (+{homepage})"
@@ -44,7 +44,7 @@ def sign_jwt_bearer_assertion(
44
44
  if claims:
45
45
  payload.update(claims)
46
46
 
47
- return jwt.encode(header, payload, import_any_key(key))
47
+ return jwt.encode(header, payload, import_any_key(key), algorithms=[header["alg"]])
48
48
 
49
49
 
50
50
  def client_secret_jwt_sign(
@@ -1,5 +1,7 @@
1
1
  from joserfc.jwk import OctKey
2
2
  from joserfc.jwk import RSAKey
3
+ from joserfc.jwk import ECKey
4
+ from joserfc.jwk import OKPKey
3
5
 
4
6
  from authlib.common.urls import add_params_to_qs
5
7
 
@@ -100,7 +102,7 @@ class PrivateKeyJWT(ClientSecretJWT):
100
102
  alg = "RS256"
101
103
 
102
104
  def sign(self, auth, token_endpoint):
103
- if isinstance(auth.client_secret, RSAKey):
105
+ if isinstance(auth.client_secret, (RSAKey, ECKey, OKPKey)):
104
106
  key = auth.client_secret
105
107
  else:
106
108
  key = RSAKey.import_key(auth.client_secret)
@@ -1,3 +1,4 @@
1
+ from authlib.common.language import is_valid_language_tag
1
2
  from authlib.common.security import is_secure_transport
2
3
  from authlib.common.urls import is_valid_url
3
4
  from authlib.common.urls import urlparse
@@ -208,7 +209,7 @@ class AuthorizationServerMetadata(dict):
208
209
  [RFC5646]. If omitted, the set of supported languages and scripts
209
210
  is unspecified.
210
211
  """
211
- validate_array_value(self, "ui_locales_supported")
212
+ validate_language_tags_array(self, "ui_locales_supported")
212
213
 
213
214
  def validate_op_policy_uri(self):
214
215
  """OPTIONAL. URL that the authorization server provides to the
@@ -411,6 +412,15 @@ def validate_array_value(metadata, key):
411
412
  raise ValueError(f'"{key}" MUST be JSON array')
412
413
 
413
414
 
415
+ def validate_language_tags_array(metadata, key):
416
+ validate_array_value(metadata, key)
417
+ values = metadata.get(key)
418
+ if values is not None:
419
+ for tag in values:
420
+ if not is_valid_language_tag(tag):
421
+ raise ValueError(f'"{key}" MUST contain BCP 47 language tags')
422
+
423
+
414
424
  def validate_boolean_value(metadata, key):
415
425
  if key not in metadata:
416
426
  return
@@ -6,6 +6,7 @@ from joserfc.errors import InvalidClaimError
6
6
  from joserfc.errors import MissingClaimError
7
7
 
8
8
  from authlib.common.encoding import to_bytes
9
+ from authlib.common.language import is_valid_language_tag
9
10
  from authlib.oauth2.claims import JWTClaims
10
11
  from authlib.oauth2.rfc6749.util import scope_to_list
11
12
 
@@ -244,6 +245,12 @@ class UserInfo(dict):
244
245
  "phone": ["phone_number", "phone_number_verified"],
245
246
  }
246
247
 
248
+ def validate_locale(self):
249
+ """Validate the locale claim is a BCP 47 language tag."""
250
+ locale = self.get("locale")
251
+ if locale is not None and not is_valid_language_tag(locale):
252
+ raise ValueError('"locale" MUST be a BCP 47 language tag')
253
+
247
254
  def filter(self, scope: str):
248
255
  """Return a new UserInfo object containing only the claims matching the scope passed in parameter."""
249
256
  scope = scope_to_list(scope)
@@ -1,6 +1,7 @@
1
1
  from authlib.oauth2.rfc8414 import AuthorizationServerMetadata
2
2
  from authlib.oauth2.rfc8414.models import validate_array_value
3
3
  from authlib.oauth2.rfc8414.models import validate_boolean_value
4
+ from authlib.oauth2.rfc8414.models import validate_language_tags_array
4
5
 
5
6
 
6
7
  class OpenIDProviderMetadata(AuthorizationServerMetadata):
@@ -236,7 +237,7 @@ class OpenIDProviderMetadata(AuthorizationServerMetadata):
236
237
  language tag values. Not all languages and scripts are necessarily
237
238
  supported for all Claim values.
238
239
  """
239
- validate_array_value(self, "claims_locales_supported")
240
+ validate_language_tags_array(self, "claims_locales_supported")
240
241
 
241
242
  def validate_claims_parameter_supported(self):
242
243
  """OPTIONAL. Boolean value specifying whether the OP supports use of
File without changes
File without changes
File without changes
File without changes
File without changes