Authlib 1.6.9__tar.gz → 1.6.11__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.9 → authlib-1.6.11}/Authlib.egg-info/PKG-INFO +1 -1
- {authlib-1.6.9 → authlib-1.6.11}/PKG-INFO +1 -1
- {authlib-1.6.9 → authlib-1.6.11}/authlib/consts.py +1 -1
- {authlib-1.6.9 → authlib-1.6.11}/authlib/integrations/starlette_client/apps.py +5 -12
- {authlib-1.6.9 → authlib-1.6.11}/authlib/integrations/starlette_client/integration.py +12 -2
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc6749/authorization_server.py +12 -1
- {authlib-1.6.9 → authlib-1.6.11}/Authlib.egg-info/SOURCES.txt +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/Authlib.egg-info/dependency_links.txt +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/Authlib.egg-info/requires.txt +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/Authlib.egg-info/top_level.txt +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/LICENSE +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/MANIFEST.in +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/README.md +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/__init__.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/common/__init__.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/common/encoding.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/common/errors.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/common/security.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/common/urls.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/deprecate.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/integrations/__init__.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/integrations/base_client/__init__.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/integrations/base_client/async_app.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/integrations/base_client/async_openid.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/integrations/base_client/errors.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/integrations/base_client/framework_integration.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/integrations/base_client/registry.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/integrations/base_client/sync_app.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/integrations/base_client/sync_openid.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/integrations/django_client/__init__.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/integrations/django_client/apps.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/integrations/django_client/integration.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/integrations/django_oauth1/__init__.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/integrations/django_oauth1/authorization_server.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/integrations/django_oauth1/nonce.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/integrations/django_oauth1/resource_protector.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/integrations/django_oauth2/__init__.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/integrations/django_oauth2/authorization_server.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/integrations/django_oauth2/endpoints.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/integrations/django_oauth2/requests.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/integrations/django_oauth2/resource_protector.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/integrations/django_oauth2/signals.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/integrations/flask_client/__init__.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/integrations/flask_client/apps.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/integrations/flask_client/integration.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/integrations/flask_oauth1/__init__.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/integrations/flask_oauth1/authorization_server.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/integrations/flask_oauth1/cache.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/integrations/flask_oauth1/resource_protector.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/integrations/flask_oauth2/__init__.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/integrations/flask_oauth2/authorization_server.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/integrations/flask_oauth2/errors.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/integrations/flask_oauth2/requests.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/integrations/flask_oauth2/resource_protector.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/integrations/flask_oauth2/signals.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/integrations/httpx_client/__init__.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/integrations/httpx_client/assertion_client.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/integrations/httpx_client/oauth1_client.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/integrations/httpx_client/oauth2_client.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/integrations/httpx_client/utils.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/integrations/requests_client/__init__.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/integrations/requests_client/assertion_session.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/integrations/requests_client/oauth1_session.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/integrations/requests_client/oauth2_session.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/integrations/requests_client/utils.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/integrations/sqla_oauth2/__init__.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/integrations/sqla_oauth2/client_mixin.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/integrations/sqla_oauth2/functions.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/integrations/sqla_oauth2/tokens_mixins.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/integrations/starlette_client/__init__.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/jose/__init__.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/jose/drafts/__init__.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/jose/drafts/_jwe_algorithms.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/jose/drafts/_jwe_enc_cryptodome.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/jose/drafts/_jwe_enc_cryptography.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/jose/errors.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/jose/jwk.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/jose/rfc7515/__init__.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/jose/rfc7515/jws.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/jose/rfc7515/models.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/jose/rfc7516/__init__.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/jose/rfc7516/jwe.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/jose/rfc7516/models.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/jose/rfc7517/__init__.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/jose/rfc7517/_cryptography_key.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/jose/rfc7517/asymmetric_key.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/jose/rfc7517/base_key.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/jose/rfc7517/jwk.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/jose/rfc7517/key_set.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/jose/rfc7518/__init__.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/jose/rfc7518/ec_key.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/jose/rfc7518/jwe_algs.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/jose/rfc7518/jwe_encs.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/jose/rfc7518/jwe_zips.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/jose/rfc7518/jws_algs.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/jose/rfc7518/oct_key.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/jose/rfc7518/rsa_key.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/jose/rfc7518/util.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/jose/rfc7519/__init__.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/jose/rfc7519/claims.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/jose/rfc7519/jwt.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/jose/rfc8037/__init__.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/jose/rfc8037/jws_eddsa.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/jose/rfc8037/okp_key.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/jose/util.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth1/__init__.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth1/client.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth1/errors.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth1/rfc5849/__init__.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth1/rfc5849/authorization_server.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth1/rfc5849/base_server.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth1/rfc5849/client_auth.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth1/rfc5849/errors.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth1/rfc5849/models.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth1/rfc5849/parameters.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth1/rfc5849/resource_protector.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth1/rfc5849/rsa.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth1/rfc5849/signature.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth1/rfc5849/util.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth1/rfc5849/wrapper.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/__init__.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/auth.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/base.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/client.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc6749/__init__.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc6749/authenticate_client.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc6749/errors.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc6749/grants/__init__.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc6749/grants/authorization_code.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc6749/grants/base.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc6749/grants/client_credentials.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc6749/grants/implicit.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc6749/grants/refresh_token.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc6749/grants/resource_owner_password_credentials.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc6749/hooks.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc6749/models.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc6749/parameters.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc6749/requests.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc6749/resource_protector.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc6749/token_endpoint.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc6749/util.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc6749/wrappers.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc6750/__init__.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc6750/errors.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc6750/parameters.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc6750/token.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc6750/validator.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc7009/__init__.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc7009/parameters.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc7009/revocation.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc7521/__init__.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc7521/client.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc7523/__init__.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc7523/assertion.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc7523/auth.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc7523/client.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc7523/jwt_bearer.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc7523/token.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc7523/validator.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc7591/__init__.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc7591/claims.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc7591/endpoint.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc7591/errors.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc7592/__init__.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc7592/endpoint.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc7636/__init__.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc7636/challenge.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc7662/__init__.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc7662/introspection.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc7662/models.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc7662/token_validator.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc8414/__init__.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc8414/models.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc8414/well_known.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc8628/__init__.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc8628/device_code.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc8628/endpoint.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc8628/errors.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc8628/models.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc8693/__init__.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc9068/__init__.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc9068/claims.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc9068/introspection.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc9068/revocation.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc9068/token.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc9068/token_validator.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc9101/__init__.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc9101/authorization_server.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc9101/discovery.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc9101/errors.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc9101/registration.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc9207/__init__.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oauth2/rfc9207/parameter.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oidc/__init__.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oidc/core/__init__.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oidc/core/claims.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oidc/core/errors.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oidc/core/grants/__init__.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oidc/core/grants/code.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oidc/core/grants/hybrid.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oidc/core/grants/implicit.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oidc/core/grants/util.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oidc/core/models.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oidc/core/userinfo.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oidc/core/util.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oidc/discovery/__init__.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oidc/discovery/models.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oidc/discovery/well_known.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oidc/registration/__init__.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/authlib/oidc/registration/claims.py +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/pyproject.toml +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/setup.cfg +0 -0
- {authlib-1.6.9 → authlib-1.6.11}/setup.py +0 -0
|
@@ -14,11 +14,7 @@ class StarletteAppMixin:
|
|
|
14
14
|
async def save_authorize_data(self, request, **kwargs):
|
|
15
15
|
state = kwargs.pop("state", None)
|
|
16
16
|
if state:
|
|
17
|
-
|
|
18
|
-
session = None
|
|
19
|
-
else:
|
|
20
|
-
session = request.session
|
|
21
|
-
await self.framework.set_state_data(session, state, kwargs)
|
|
17
|
+
await self.framework.set_state_data(request.session, state, kwargs)
|
|
22
18
|
else:
|
|
23
19
|
raise RuntimeError("Missing state value")
|
|
24
20
|
|
|
@@ -80,13 +76,10 @@ class StarletteOAuth2App(
|
|
|
80
76
|
"state": form.get("state"),
|
|
81
77
|
}
|
|
82
78
|
|
|
83
|
-
|
|
84
|
-
session
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
state_data = await self.framework.get_state_data(session, params.get("state"))
|
|
89
|
-
await self.framework.clear_state_data(session, params.get("state"))
|
|
79
|
+
state_data = await self.framework.get_state_data(
|
|
80
|
+
request.session, params.get("state")
|
|
81
|
+
)
|
|
82
|
+
await self.framework.clear_state_data(request.session, params.get("state"))
|
|
90
83
|
params = self._format_state_params(state_data, params)
|
|
91
84
|
|
|
92
85
|
claims_options = kwargs.pop("claims_options", None)
|
|
@@ -22,6 +22,10 @@ class StarletteIntegration(FrameworkIntegration):
|
|
|
22
22
|
) -> dict[str, Any]:
|
|
23
23
|
key = f"_state_{self.name}_{state}"
|
|
24
24
|
if self.cache:
|
|
25
|
+
# require a session-bound marker to prove the callback originates
|
|
26
|
+
# from the user-agent that started the flow (RFC 6749 §10.12)
|
|
27
|
+
if session is None or session.get(key) is None:
|
|
28
|
+
return None
|
|
25
29
|
value = await self._get_cache_data(key)
|
|
26
30
|
elif session is not None:
|
|
27
31
|
value = session.get(key)
|
|
@@ -37,21 +41,27 @@ class StarletteIntegration(FrameworkIntegration):
|
|
|
37
41
|
):
|
|
38
42
|
key_prefix = f"_state_{self.name}_"
|
|
39
43
|
key = f"{key_prefix}{state}"
|
|
44
|
+
now = time.time()
|
|
40
45
|
if self.cache:
|
|
41
46
|
await self.cache.set(key, json.dumps({"data": data}), self.expires_in)
|
|
47
|
+
if session is not None:
|
|
48
|
+
# clear old state data to avoid session size growing
|
|
49
|
+
for old_key in list(session.keys()):
|
|
50
|
+
if old_key.startswith(key_prefix):
|
|
51
|
+
session.pop(old_key)
|
|
52
|
+
session[key] = {"exp": now + self.expires_in}
|
|
42
53
|
elif session is not None:
|
|
43
54
|
# clear old state data to avoid session size growing
|
|
44
55
|
for old_key in list(session.keys()):
|
|
45
56
|
if old_key.startswith(key_prefix):
|
|
46
57
|
session.pop(old_key)
|
|
47
|
-
now = time.time()
|
|
48
58
|
session[key] = {"data": data, "exp": now + self.expires_in}
|
|
49
59
|
|
|
50
60
|
async def clear_state_data(self, session: Optional[dict[str, Any]], state: str):
|
|
51
61
|
key = f"_state_{self.name}_{state}"
|
|
52
62
|
if self.cache:
|
|
53
63
|
await self.cache.delete(key)
|
|
54
|
-
|
|
64
|
+
if session is not None:
|
|
55
65
|
session.pop(key, None)
|
|
56
66
|
self._clear_session_state(session)
|
|
57
67
|
|
|
@@ -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):
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|