Authlib 1.6.2__tar.gz → 1.6.3__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.2 → authlib-1.6.3}/Authlib.egg-info/PKG-INFO +1 -1
- {authlib-1.6.2 → authlib-1.6.3}/PKG-INFO +1 -1
- {authlib-1.6.2 → authlib-1.6.3}/authlib/consts.py +1 -1
- {authlib-1.6.2 → authlib-1.6.3}/authlib/integrations/sqla_oauth2/client_mixin.py +4 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oidc/core/grants/code.py +13 -2
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oidc/core/grants/implicit.py +21 -0
- {authlib-1.6.2 → authlib-1.6.3}/pyproject.toml +7 -1
- {authlib-1.6.2 → authlib-1.6.3}/Authlib.egg-info/SOURCES.txt +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/Authlib.egg-info/dependency_links.txt +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/Authlib.egg-info/requires.txt +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/Authlib.egg-info/top_level.txt +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/LICENSE +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/MANIFEST.in +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/README.md +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/__init__.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/common/__init__.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/common/encoding.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/common/errors.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/common/security.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/common/urls.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/deprecate.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/integrations/__init__.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/integrations/base_client/__init__.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/integrations/base_client/async_app.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/integrations/base_client/async_openid.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/integrations/base_client/errors.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/integrations/base_client/framework_integration.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/integrations/base_client/registry.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/integrations/base_client/sync_app.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/integrations/base_client/sync_openid.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/integrations/django_client/__init__.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/integrations/django_client/apps.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/integrations/django_client/integration.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/integrations/django_oauth1/__init__.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/integrations/django_oauth1/authorization_server.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/integrations/django_oauth1/nonce.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/integrations/django_oauth1/resource_protector.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/integrations/django_oauth2/__init__.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/integrations/django_oauth2/authorization_server.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/integrations/django_oauth2/endpoints.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/integrations/django_oauth2/requests.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/integrations/django_oauth2/resource_protector.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/integrations/django_oauth2/signals.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/integrations/flask_client/__init__.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/integrations/flask_client/apps.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/integrations/flask_client/integration.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/integrations/flask_oauth1/__init__.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/integrations/flask_oauth1/authorization_server.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/integrations/flask_oauth1/cache.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/integrations/flask_oauth1/resource_protector.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/integrations/flask_oauth2/__init__.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/integrations/flask_oauth2/authorization_server.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/integrations/flask_oauth2/errors.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/integrations/flask_oauth2/requests.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/integrations/flask_oauth2/resource_protector.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/integrations/flask_oauth2/signals.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/integrations/httpx_client/__init__.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/integrations/httpx_client/assertion_client.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/integrations/httpx_client/oauth1_client.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/integrations/httpx_client/oauth2_client.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/integrations/httpx_client/utils.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/integrations/requests_client/__init__.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/integrations/requests_client/assertion_session.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/integrations/requests_client/oauth1_session.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/integrations/requests_client/oauth2_session.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/integrations/requests_client/utils.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/integrations/sqla_oauth2/__init__.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/integrations/sqla_oauth2/functions.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/integrations/sqla_oauth2/tokens_mixins.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/integrations/starlette_client/__init__.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/integrations/starlette_client/apps.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/integrations/starlette_client/integration.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/jose/__init__.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/jose/drafts/__init__.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/jose/drafts/_jwe_algorithms.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/jose/drafts/_jwe_enc_cryptodome.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/jose/drafts/_jwe_enc_cryptography.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/jose/errors.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/jose/jwk.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/jose/rfc7515/__init__.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/jose/rfc7515/jws.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/jose/rfc7515/models.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/jose/rfc7516/__init__.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/jose/rfc7516/jwe.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/jose/rfc7516/models.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/jose/rfc7517/__init__.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/jose/rfc7517/_cryptography_key.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/jose/rfc7517/asymmetric_key.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/jose/rfc7517/base_key.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/jose/rfc7517/jwk.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/jose/rfc7517/key_set.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/jose/rfc7518/__init__.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/jose/rfc7518/ec_key.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/jose/rfc7518/jwe_algs.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/jose/rfc7518/jwe_encs.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/jose/rfc7518/jwe_zips.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/jose/rfc7518/jws_algs.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/jose/rfc7518/oct_key.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/jose/rfc7518/rsa_key.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/jose/rfc7518/util.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/jose/rfc7519/__init__.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/jose/rfc7519/claims.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/jose/rfc7519/jwt.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/jose/rfc8037/__init__.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/jose/rfc8037/jws_eddsa.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/jose/rfc8037/okp_key.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/jose/util.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth1/__init__.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth1/client.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth1/errors.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth1/rfc5849/__init__.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth1/rfc5849/authorization_server.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth1/rfc5849/base_server.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth1/rfc5849/client_auth.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth1/rfc5849/errors.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth1/rfc5849/models.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth1/rfc5849/parameters.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth1/rfc5849/resource_protector.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth1/rfc5849/rsa.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth1/rfc5849/signature.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth1/rfc5849/util.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth1/rfc5849/wrapper.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/__init__.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/auth.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/base.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/client.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc6749/__init__.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc6749/authenticate_client.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc6749/authorization_server.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc6749/errors.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc6749/grants/__init__.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc6749/grants/authorization_code.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc6749/grants/base.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc6749/grants/client_credentials.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc6749/grants/implicit.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc6749/grants/refresh_token.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc6749/grants/resource_owner_password_credentials.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc6749/hooks.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc6749/models.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc6749/parameters.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc6749/requests.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc6749/resource_protector.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc6749/token_endpoint.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc6749/util.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc6749/wrappers.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc6750/__init__.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc6750/errors.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc6750/parameters.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc6750/token.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc6750/validator.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc7009/__init__.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc7009/parameters.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc7009/revocation.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc7521/__init__.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc7521/client.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc7523/__init__.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc7523/assertion.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc7523/auth.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc7523/client.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc7523/jwt_bearer.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc7523/token.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc7523/validator.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc7591/__init__.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc7591/claims.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc7591/endpoint.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc7591/errors.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc7592/__init__.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc7592/endpoint.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc7636/__init__.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc7636/challenge.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc7662/__init__.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc7662/introspection.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc7662/models.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc7662/token_validator.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc8414/__init__.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc8414/models.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc8414/well_known.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc8628/__init__.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc8628/device_code.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc8628/endpoint.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc8628/errors.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc8628/models.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc8693/__init__.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc9068/__init__.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc9068/claims.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc9068/introspection.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc9068/revocation.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc9068/token.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc9068/token_validator.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc9101/__init__.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc9101/authorization_server.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc9101/discovery.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc9101/errors.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc9101/registration.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc9207/__init__.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc9207/parameter.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oidc/__init__.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oidc/core/__init__.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oidc/core/claims.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oidc/core/errors.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oidc/core/grants/__init__.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oidc/core/grants/hybrid.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oidc/core/grants/util.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oidc/core/models.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oidc/core/userinfo.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oidc/core/util.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oidc/discovery/__init__.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oidc/discovery/models.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oidc/discovery/well_known.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oidc/registration/__init__.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/authlib/oidc/registration/claims.py +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/setup.cfg +0 -0
- {authlib-1.6.2 → authlib-1.6.3}/setup.py +0 -0
|
@@ -110,6 +110,10 @@ class OAuth2ClientMixin(ClientMixin):
|
|
|
110
110
|
def software_version(self):
|
|
111
111
|
return self.client_metadata.get("software_version")
|
|
112
112
|
|
|
113
|
+
@property
|
|
114
|
+
def id_token_signed_response_alg(self):
|
|
115
|
+
return self.client_metadata.get("id_token_signed_response_alg")
|
|
116
|
+
|
|
113
117
|
def get_client_id(self):
|
|
114
118
|
return self.client_id
|
|
115
119
|
|
|
@@ -22,8 +22,12 @@ log = logging.getLogger(__name__)
|
|
|
22
22
|
class OpenIDToken:
|
|
23
23
|
def get_jwt_config(self, grant): # pragma: no cover
|
|
24
24
|
"""Get the JWT configuration for OpenIDCode extension. The JWT
|
|
25
|
-
configuration will be used to generate ``id_token``.
|
|
26
|
-
|
|
25
|
+
configuration will be used to generate ``id_token``.
|
|
26
|
+
If ``alg`` is undefined, the ``id_token_signed_response_alg`` client
|
|
27
|
+
metadata will be used. By default ``RS256`` will be used.
|
|
28
|
+
If ``key`` is undefined, the ``jwks_uri`` or ``jwks`` client metadata
|
|
29
|
+
will be used.
|
|
30
|
+
Developers MUST implement this method in subclass, e.g.::
|
|
27
31
|
|
|
28
32
|
def get_jwt_config(self, grant):
|
|
29
33
|
return {
|
|
@@ -77,6 +81,13 @@ class OpenIDToken:
|
|
|
77
81
|
config = self.get_jwt_config(grant)
|
|
78
82
|
config["aud"] = self.get_audiences(request)
|
|
79
83
|
|
|
84
|
+
# Per OpenID Connect Registration 1.0 Section 2:
|
|
85
|
+
# Use client's id_token_signed_response_alg if specified
|
|
86
|
+
if not config.get("alg") and (
|
|
87
|
+
client_alg := request.client.id_token_signed_response_alg
|
|
88
|
+
):
|
|
89
|
+
config["alg"] = client_alg
|
|
90
|
+
|
|
80
91
|
if authorization_code:
|
|
81
92
|
config["nonce"] = authorization_code.get_nonce()
|
|
82
93
|
config["auth_time"] = authorization_code.get_auth_time()
|
|
@@ -4,6 +4,7 @@ from authlib.oauth2.rfc6749 import AccessDeniedError
|
|
|
4
4
|
from authlib.oauth2.rfc6749 import ImplicitGrant
|
|
5
5
|
from authlib.oauth2.rfc6749 import InvalidScopeError
|
|
6
6
|
from authlib.oauth2.rfc6749 import OAuth2Error
|
|
7
|
+
from authlib.oauth2.rfc6749.errors import InvalidRequestError
|
|
7
8
|
from authlib.oauth2.rfc6749.hooks import hooked
|
|
8
9
|
|
|
9
10
|
from .util import create_response_mode_response
|
|
@@ -148,6 +149,26 @@ class OpenIDImplicitGrant(ImplicitGrant):
|
|
|
148
149
|
if code is not None:
|
|
149
150
|
config["code"] = code
|
|
150
151
|
|
|
152
|
+
# Per OpenID Connect Registration 1.0 Section 2:
|
|
153
|
+
# Use client's id_token_signed_response_alg if specified
|
|
154
|
+
if not config.get("alg") and (
|
|
155
|
+
client_alg := self.request.client.id_token_signed_response_alg
|
|
156
|
+
):
|
|
157
|
+
if client_alg == "none":
|
|
158
|
+
# According to oidc-registration §2 the 'none' alg is not valid in
|
|
159
|
+
# implicit flows:
|
|
160
|
+
# The value none MUST NOT be used as the ID Token alg value unless
|
|
161
|
+
# the Client uses only Response Types that return no ID Token from
|
|
162
|
+
# the Authorization Endpoint (such as when only using the
|
|
163
|
+
# Authorization Code Flow).
|
|
164
|
+
raise InvalidRequestError(
|
|
165
|
+
"id_token must be signed in implicit flows",
|
|
166
|
+
redirect_uri=self.request.payload.redirect_uri,
|
|
167
|
+
redirect_fragment=True,
|
|
168
|
+
)
|
|
169
|
+
|
|
170
|
+
config["alg"] = client_alg
|
|
171
|
+
|
|
151
172
|
user_info = self.generate_user_info(self.request.user, token["scope"])
|
|
152
173
|
id_token = generate_id_token(token, user_info, **config)
|
|
153
174
|
token["id_token"] = id_token
|
|
@@ -47,9 +47,11 @@ Blog = "https://blog.authlib.org/"
|
|
|
47
47
|
dev = [
|
|
48
48
|
"coverage",
|
|
49
49
|
"cryptography",
|
|
50
|
-
"
|
|
50
|
+
"diff-cover>=9.6.0",
|
|
51
|
+
"prek>=0.1.3",
|
|
51
52
|
"pytest",
|
|
52
53
|
"pytest-asyncio",
|
|
54
|
+
"pytest-env",
|
|
53
55
|
"tox-uv >= 1.16.0",
|
|
54
56
|
]
|
|
55
57
|
|
|
@@ -120,6 +122,10 @@ docstring-code-format = true
|
|
|
120
122
|
asyncio_default_fixture_loop_scope = "function"
|
|
121
123
|
asyncio_mode = "auto"
|
|
122
124
|
norecursedirs = ["authlib", "build", "dist", "docs", "htmlcov"]
|
|
125
|
+
pythonpath = ["."]
|
|
126
|
+
env = [
|
|
127
|
+
"DJANGO_SETTINGS_MODULE = tests.django_settings",
|
|
128
|
+
]
|
|
123
129
|
|
|
124
130
|
[tool.coverage.run]
|
|
125
131
|
branch = true
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{authlib-1.6.2 → authlib-1.6.3}/authlib/oauth2/rfc6749/grants/resource_owner_password_credentials.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|