Authlib 1.6.8__tar.gz → 1.6.10__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {authlib-1.6.8 → authlib-1.6.10}/Authlib.egg-info/PKG-INFO +1 -1
- {authlib-1.6.8 → authlib-1.6.10}/PKG-INFO +1 -1
- {authlib-1.6.8 → authlib-1.6.10}/authlib/consts.py +1 -1
- {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/__init__.py +1 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc7515/jws.py +6 -4
- {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc7515/models.py +1 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc7516/jwe.py +11 -5
- {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc7516/models.py +1 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc7518/jwe_algs.py +7 -7
- {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc7518/jws_algs.py +1 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc6749/authorization_server.py +12 -1
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oidc/core/claims.py +2 -2
- {authlib-1.6.8 → authlib-1.6.10}/Authlib.egg-info/SOURCES.txt +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/Authlib.egg-info/dependency_links.txt +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/Authlib.egg-info/requires.txt +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/Authlib.egg-info/top_level.txt +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/LICENSE +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/MANIFEST.in +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/README.md +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/__init__.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/common/__init__.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/common/encoding.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/common/errors.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/common/security.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/common/urls.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/deprecate.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/__init__.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/base_client/__init__.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/base_client/async_app.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/base_client/async_openid.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/base_client/errors.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/base_client/framework_integration.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/base_client/registry.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/base_client/sync_app.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/base_client/sync_openid.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/django_client/__init__.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/django_client/apps.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/django_client/integration.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/django_oauth1/__init__.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/django_oauth1/authorization_server.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/django_oauth1/nonce.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/django_oauth1/resource_protector.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/django_oauth2/__init__.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/django_oauth2/authorization_server.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/django_oauth2/endpoints.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/django_oauth2/requests.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/django_oauth2/resource_protector.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/django_oauth2/signals.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/flask_client/__init__.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/flask_client/apps.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/flask_client/integration.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/flask_oauth1/__init__.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/flask_oauth1/authorization_server.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/flask_oauth1/cache.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/flask_oauth1/resource_protector.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/flask_oauth2/__init__.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/flask_oauth2/authorization_server.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/flask_oauth2/errors.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/flask_oauth2/requests.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/flask_oauth2/resource_protector.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/flask_oauth2/signals.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/httpx_client/__init__.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/httpx_client/assertion_client.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/httpx_client/oauth1_client.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/httpx_client/oauth2_client.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/httpx_client/utils.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/requests_client/__init__.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/requests_client/assertion_session.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/requests_client/oauth1_session.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/requests_client/oauth2_session.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/requests_client/utils.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/sqla_oauth2/__init__.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/sqla_oauth2/client_mixin.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/sqla_oauth2/functions.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/sqla_oauth2/tokens_mixins.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/starlette_client/__init__.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/starlette_client/apps.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/integrations/starlette_client/integration.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/drafts/__init__.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/drafts/_jwe_algorithms.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/drafts/_jwe_enc_cryptodome.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/drafts/_jwe_enc_cryptography.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/errors.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/jwk.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc7515/__init__.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc7516/__init__.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc7517/__init__.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc7517/_cryptography_key.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc7517/asymmetric_key.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc7517/base_key.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc7517/jwk.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc7517/key_set.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc7518/__init__.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc7518/ec_key.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc7518/jwe_encs.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc7518/jwe_zips.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc7518/oct_key.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc7518/rsa_key.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc7518/util.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc7519/__init__.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc7519/claims.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc7519/jwt.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc8037/__init__.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc8037/jws_eddsa.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/rfc8037/okp_key.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/jose/util.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth1/__init__.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth1/client.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth1/errors.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth1/rfc5849/__init__.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth1/rfc5849/authorization_server.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth1/rfc5849/base_server.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth1/rfc5849/client_auth.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth1/rfc5849/errors.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth1/rfc5849/models.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth1/rfc5849/parameters.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth1/rfc5849/resource_protector.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth1/rfc5849/rsa.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth1/rfc5849/signature.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth1/rfc5849/util.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth1/rfc5849/wrapper.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/__init__.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/auth.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/base.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/client.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc6749/__init__.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc6749/authenticate_client.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc6749/errors.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc6749/grants/__init__.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc6749/grants/authorization_code.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc6749/grants/base.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc6749/grants/client_credentials.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc6749/grants/implicit.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc6749/grants/refresh_token.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc6749/grants/resource_owner_password_credentials.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc6749/hooks.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc6749/models.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc6749/parameters.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc6749/requests.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc6749/resource_protector.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc6749/token_endpoint.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc6749/util.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc6749/wrappers.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc6750/__init__.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc6750/errors.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc6750/parameters.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc6750/token.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc6750/validator.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc7009/__init__.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc7009/parameters.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc7009/revocation.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc7521/__init__.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc7521/client.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc7523/__init__.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc7523/assertion.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc7523/auth.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc7523/client.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc7523/jwt_bearer.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc7523/token.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc7523/validator.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc7591/__init__.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc7591/claims.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc7591/endpoint.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc7591/errors.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc7592/__init__.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc7592/endpoint.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc7636/__init__.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc7636/challenge.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc7662/__init__.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc7662/introspection.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc7662/models.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc7662/token_validator.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc8414/__init__.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc8414/models.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc8414/well_known.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc8628/__init__.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc8628/device_code.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc8628/endpoint.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc8628/errors.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc8628/models.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc8693/__init__.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc9068/__init__.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc9068/claims.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc9068/introspection.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc9068/revocation.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc9068/token.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc9068/token_validator.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc9101/__init__.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc9101/authorization_server.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc9101/discovery.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc9101/errors.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc9101/registration.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc9207/__init__.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oauth2/rfc9207/parameter.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oidc/__init__.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oidc/core/__init__.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oidc/core/errors.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oidc/core/grants/__init__.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oidc/core/grants/code.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oidc/core/grants/hybrid.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oidc/core/grants/implicit.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oidc/core/grants/util.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oidc/core/models.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oidc/core/userinfo.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oidc/core/util.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oidc/discovery/__init__.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oidc/discovery/models.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oidc/discovery/well_known.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oidc/registration/__init__.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/authlib/oidc/registration/claims.py +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/pyproject.toml +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/setup.cfg +0 -0
- {authlib-1.6.8 → authlib-1.6.10}/setup.py +0 -0
|
@@ -261,16 +261,18 @@ class JsonWebSignature:
|
|
|
261
261
|
raise MissingAlgorithmError()
|
|
262
262
|
|
|
263
263
|
alg = header["alg"]
|
|
264
|
-
if self._algorithms is not None and alg not in self._algorithms:
|
|
265
|
-
raise UnsupportedAlgorithmError()
|
|
266
264
|
if alg not in self.ALGORITHMS_REGISTRY:
|
|
267
265
|
raise UnsupportedAlgorithmError()
|
|
268
266
|
|
|
269
267
|
algorithm = self.ALGORITHMS_REGISTRY[alg]
|
|
268
|
+
if self._algorithms is None:
|
|
269
|
+
if algorithm.deprecated:
|
|
270
|
+
raise UnsupportedAlgorithmError()
|
|
271
|
+
elif alg not in self._algorithms:
|
|
272
|
+
raise UnsupportedAlgorithmError()
|
|
273
|
+
|
|
270
274
|
if callable(key):
|
|
271
275
|
key = key(header, payload)
|
|
272
|
-
elif key is None and "jwk" in header:
|
|
273
|
-
key = header["jwk"]
|
|
274
276
|
key = algorithm.prepare_key(key)
|
|
275
277
|
return algorithm, key
|
|
276
278
|
|
|
@@ -697,11 +697,19 @@ class JsonWebEncryption:
|
|
|
697
697
|
raise MissingAlgorithmError()
|
|
698
698
|
|
|
699
699
|
alg = header["alg"]
|
|
700
|
-
if self._algorithms is not None and alg not in self._algorithms:
|
|
701
|
-
raise UnsupportedAlgorithmError()
|
|
702
700
|
if alg not in self.ALG_REGISTRY:
|
|
703
701
|
raise UnsupportedAlgorithmError()
|
|
704
|
-
|
|
702
|
+
|
|
703
|
+
instance = self.ALG_REGISTRY[alg]
|
|
704
|
+
|
|
705
|
+
# use all ALG_REGISTRY algorithms
|
|
706
|
+
if self._algorithms is None:
|
|
707
|
+
# do not use deprecated algorithms
|
|
708
|
+
if instance.deprecated:
|
|
709
|
+
raise UnsupportedAlgorithmError()
|
|
710
|
+
elif alg not in self._algorithms:
|
|
711
|
+
raise UnsupportedAlgorithmError()
|
|
712
|
+
return instance
|
|
705
713
|
|
|
706
714
|
def get_header_enc(self, header):
|
|
707
715
|
if "enc" not in header:
|
|
@@ -754,6 +762,4 @@ class JsonWebEncryption:
|
|
|
754
762
|
def prepare_key(alg, header, key):
|
|
755
763
|
if callable(key):
|
|
756
764
|
key = key(header, None)
|
|
757
|
-
elif key is None and "jwk" in header:
|
|
758
|
-
key = header["jwk"]
|
|
759
765
|
return alg.prepare_key(key)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import secrets
|
|
2
2
|
import struct
|
|
3
3
|
|
|
4
4
|
from cryptography.hazmat.backends import default_backend
|
|
@@ -41,7 +41,7 @@ class DirectAlgorithm(JWEAlgorithm):
|
|
|
41
41
|
def unwrap(self, enc_alg, ek, headers, key):
|
|
42
42
|
cek = key.get_op_key("decrypt")
|
|
43
43
|
if len(cek) * 8 != enc_alg.CEK_SIZE:
|
|
44
|
-
|
|
44
|
+
cek = secrets.token_bytes(enc_alg.CEK_SIZE // 8)
|
|
45
45
|
return cek
|
|
46
46
|
|
|
47
47
|
|
|
@@ -52,6 +52,7 @@ class RSAAlgorithm(JWEAlgorithm):
|
|
|
52
52
|
|
|
53
53
|
def __init__(self, name, description, pad_fn):
|
|
54
54
|
self.name = name
|
|
55
|
+
self.deprecated = name == "RSA1_5"
|
|
55
56
|
self.description = description
|
|
56
57
|
self.padding = pad_fn
|
|
57
58
|
|
|
@@ -75,11 +76,10 @@ class RSAAlgorithm(JWEAlgorithm):
|
|
|
75
76
|
return {"ek": ek, "cek": cek}
|
|
76
77
|
|
|
77
78
|
def unwrap(self, enc_alg, ek, headers, key):
|
|
78
|
-
# it will raise ValueError if failed
|
|
79
79
|
op_key = key.get_op_key("unwrapKey")
|
|
80
80
|
cek = op_key.decrypt(ek, self.padding)
|
|
81
81
|
if len(cek) * 8 != enc_alg.CEK_SIZE:
|
|
82
|
-
|
|
82
|
+
cek = secrets.token_bytes(enc_alg.CEK_SIZE // 8)
|
|
83
83
|
return cek
|
|
84
84
|
|
|
85
85
|
|
|
@@ -118,7 +118,7 @@ class AESAlgorithm(JWEAlgorithm):
|
|
|
118
118
|
self._check_key(op_key)
|
|
119
119
|
cek = aes_key_unwrap(op_key, ek, default_backend())
|
|
120
120
|
if len(cek) * 8 != enc_alg.CEK_SIZE:
|
|
121
|
-
|
|
121
|
+
cek = secrets.token_bytes(enc_alg.CEK_SIZE // 8)
|
|
122
122
|
return cek
|
|
123
123
|
|
|
124
124
|
|
|
@@ -154,7 +154,7 @@ class AESGCMAlgorithm(JWEAlgorithm):
|
|
|
154
154
|
#: The "iv" (initialization vector) Header Parameter value is the
|
|
155
155
|
#: base64url-encoded representation of the 96-bit IV value
|
|
156
156
|
iv_size = 96
|
|
157
|
-
iv =
|
|
157
|
+
iv = secrets.token_bytes(iv_size // 8)
|
|
158
158
|
|
|
159
159
|
cipher = Cipher(AES(op_key), GCM(iv), backend=default_backend())
|
|
160
160
|
enc = cipher.encryptor()
|
|
@@ -185,7 +185,7 @@ class AESGCMAlgorithm(JWEAlgorithm):
|
|
|
185
185
|
d = cipher.decryptor()
|
|
186
186
|
cek = d.update(ek) + d.finalize()
|
|
187
187
|
if len(cek) * 8 != enc_alg.CEK_SIZE:
|
|
188
|
-
|
|
188
|
+
cek = secrets.token_bytes(enc_alg.CEK_SIZE // 8)
|
|
189
189
|
return cek
|
|
190
190
|
|
|
191
191
|
|
|
@@ -241,10 +241,21 @@ class AuthorizationServer(Hookable):
|
|
|
241
241
|
if grant_cls.check_authorization_endpoint(request):
|
|
242
242
|
return _create_grant(grant_cls, extensions, request, self)
|
|
243
243
|
|
|
244
|
+
# Per RFC 6749 §4.1.2.1, only redirect with the error if the client
|
|
245
|
+
# exists and the redirect_uri has been validated against it.
|
|
246
|
+
redirect_uri = None
|
|
247
|
+
if client_id := request.payload.client_id:
|
|
248
|
+
if client := self.query_client(client_id):
|
|
249
|
+
if requested_uri := request.payload.redirect_uri:
|
|
250
|
+
if client.check_redirect_uri(requested_uri):
|
|
251
|
+
redirect_uri = requested_uri
|
|
252
|
+
else:
|
|
253
|
+
redirect_uri = client.get_default_redirect_uri()
|
|
254
|
+
|
|
244
255
|
raise UnsupportedResponseTypeError(
|
|
245
256
|
f"The response type '{request.payload.response_type}' is not supported by the server.",
|
|
246
257
|
request.payload.response_type,
|
|
247
|
-
redirect_uri=
|
|
258
|
+
redirect_uri=redirect_uri,
|
|
248
259
|
)
|
|
249
260
|
|
|
250
261
|
def get_consent_grant(self, request=None, end_user=None):
|
|
@@ -303,6 +303,6 @@ def get_claim_cls_by_response_type(response_type):
|
|
|
303
303
|
|
|
304
304
|
def _verify_hash(signature, s, alg):
|
|
305
305
|
hash_value = create_half_hash(s, alg)
|
|
306
|
-
if
|
|
307
|
-
return
|
|
306
|
+
if hash_value is None:
|
|
307
|
+
return False
|
|
308
308
|
return hmac.compare_digest(hash_value, to_bytes(signature))
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|