Authlib 1.9.2__tar.gz → 1.9.4__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.9.2 → authlib-1.9.4}/Authlib.egg-info/PKG-INFO +1 -1
- {authlib-1.9.2 → authlib-1.9.4}/PKG-INFO +1 -1
- {authlib-1.9.2 → authlib-1.9.4}/authlib/consts.py +1 -1
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/drafts/id_jag.py +20 -2
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oidc/core/grants/hybrid.py +2 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oidc/core/grants/implicit.py +2 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oidc/core/grants/util.py +23 -0
- {authlib-1.9.2 → authlib-1.9.4}/Authlib.egg-info/SOURCES.txt +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/Authlib.egg-info/dependency_links.txt +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/Authlib.egg-info/requires.txt +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/Authlib.egg-info/top_level.txt +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/LICENSE +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/MANIFEST.in +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/README.md +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/__init__.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/_joserfc_helpers.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/common/__init__.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/common/encoding.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/common/errors.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/common/language.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/common/security.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/common/urls.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/deprecate.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/__init__.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/base_client/__init__.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/base_client/async_app.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/base_client/async_openid.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/base_client/errors.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/base_client/framework_integration.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/base_client/registry.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/base_client/sync_app.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/base_client/sync_openid.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/django_client/__init__.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/django_client/apps.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/django_client/integration.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/django_oauth1/__init__.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/django_oauth1/authorization_server.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/django_oauth1/nonce.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/django_oauth1/resource_protector.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/django_oauth2/__init__.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/django_oauth2/authorization_server.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/django_oauth2/endpoints.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/django_oauth2/requests.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/django_oauth2/resource_protector.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/django_oauth2/signals.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/flask_client/__init__.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/flask_client/apps.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/flask_client/integration.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/flask_oauth1/__init__.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/flask_oauth1/authorization_server.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/flask_oauth1/cache.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/flask_oauth1/resource_protector.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/flask_oauth2/__init__.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/flask_oauth2/authorization_server.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/flask_oauth2/errors.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/flask_oauth2/requests.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/flask_oauth2/resource_protector.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/flask_oauth2/signals.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/httpx_client/__init__.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/httpx_client/_compat.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/httpx_client/assertion_client.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/httpx_client/oauth1_client.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/httpx_client/oauth2_client.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/httpx_client/utils.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/requests_client/__init__.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/requests_client/assertion_session.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/requests_client/oauth1_session.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/requests_client/oauth2_session.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/requests_client/utils.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/sqla_oauth2/__init__.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/sqla_oauth2/client_mixin.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/sqla_oauth2/functions.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/sqla_oauth2/tokens_mixins.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/starlette_client/__init__.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/starlette_client/apps.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/integrations/starlette_client/integration.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/jose/__init__.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/jose/drafts/__init__.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/jose/drafts/_jwe_algorithms.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/jose/drafts/_jwe_enc_cryptodome.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/jose/drafts/_jwe_enc_cryptography.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/jose/errors.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/jose/jwk.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/jose/rfc7515/__init__.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/jose/rfc7515/jws.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/jose/rfc7515/models.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/jose/rfc7516/__init__.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/jose/rfc7516/jwe.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/jose/rfc7516/models.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/jose/rfc7517/__init__.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/jose/rfc7517/_cryptography_key.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/jose/rfc7517/asymmetric_key.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/jose/rfc7517/base_key.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/jose/rfc7517/jwk.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/jose/rfc7517/key_set.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/jose/rfc7518/__init__.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/jose/rfc7518/ec_key.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/jose/rfc7518/jwe_algs.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/jose/rfc7518/jwe_encs.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/jose/rfc7518/jwe_zips.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/jose/rfc7518/jws_algs.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/jose/rfc7518/oct_key.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/jose/rfc7518/rsa_key.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/jose/rfc7518/util.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/jose/rfc7519/__init__.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/jose/rfc7519/claims.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/jose/rfc7519/jwt.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/jose/rfc8037/__init__.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/jose/rfc8037/jws_eddsa.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/jose/rfc8037/okp_key.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/jose/util.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth1/__init__.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth1/client.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth1/errors.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth1/rfc5849/__init__.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth1/rfc5849/authorization_server.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth1/rfc5849/base_server.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth1/rfc5849/client_auth.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth1/rfc5849/errors.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth1/rfc5849/models.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth1/rfc5849/parameters.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth1/rfc5849/resource_protector.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth1/rfc5849/rsa.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth1/rfc5849/signature.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth1/rfc5849/util.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth1/rfc5849/wrapper.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/__init__.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/auth.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/base.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/claims.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/client.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/drafts/__init__.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc6749/__init__.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc6749/authenticate_client.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc6749/authorization_server.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc6749/endpoint.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc6749/errors.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc6749/grants/__init__.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc6749/grants/authorization_code.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc6749/grants/base.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc6749/grants/client_credentials.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc6749/grants/implicit.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc6749/grants/refresh_token.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc6749/grants/resource_owner_password_credentials.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc6749/hooks.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc6749/models.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc6749/parameters.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc6749/requests.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc6749/resource_protector.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc6749/token_endpoint.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc6749/util.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc6749/wrappers.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc6750/__init__.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc6750/errors.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc6750/parameters.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc6750/token.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc6750/validator.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc7009/__init__.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc7009/parameters.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc7009/revocation.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc7521/__init__.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc7521/client.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc7523/__init__.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc7523/assertion.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc7523/auth.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc7523/client.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc7523/jwt_bearer.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc7523/token.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc7523/validator.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc7591/__init__.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc7591/claims.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc7591/endpoint.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc7591/errors.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc7592/__init__.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc7592/endpoint.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc7636/__init__.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc7636/challenge.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc7662/__init__.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc7662/introspection.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc7662/models.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc7662/token_validator.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc8414/__init__.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc8414/models.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc8414/well_known.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc8628/__init__.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc8628/device_code.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc8628/endpoint.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc8628/errors.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc8628/models.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc8693/__init__.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc9068/__init__.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc9068/claims.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc9068/introspection.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc9068/revocation.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc9068/token.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc9068/token_validator.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc9101/__init__.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc9101/authorization_server.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc9101/discovery.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc9101/errors.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc9101/registration.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc9207/__init__.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc9207/discovery.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oauth2/rfc9207/parameter.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oidc/__init__.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oidc/core/__init__.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oidc/core/authorization_request.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oidc/core/claims.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oidc/core/errors.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oidc/core/grants/__init__.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oidc/core/grants/_legacy.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oidc/core/grants/code.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oidc/core/models.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oidc/core/userinfo.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oidc/core/util.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oidc/discovery/__init__.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oidc/discovery/models.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oidc/discovery/well_known.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oidc/registration/__init__.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oidc/registration/claims.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oidc/rpinitiated/__init__.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oidc/rpinitiated/discovery.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oidc/rpinitiated/end_session.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/authlib/oidc/rpinitiated/registration.py +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/pyproject.toml +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/setup.cfg +0 -0
- {authlib-1.9.2 → authlib-1.9.4}/setup.py +0 -0
|
@@ -161,6 +161,7 @@ class IDJAGGrant(BaseGrant, TokenEndpointMixin):
|
|
|
161
161
|
raise InvalidRequestError("Missing 'assertion' in request")
|
|
162
162
|
|
|
163
163
|
claims = self._process_assertion_claims(assertion)
|
|
164
|
+
self.request.id_jag_claims = claims
|
|
164
165
|
|
|
165
166
|
client_id_claim = claims["client_id"]
|
|
166
167
|
if client.get_client_id() != client_id_claim:
|
|
@@ -328,7 +329,19 @@ class IDJAGGrant(BaseGrant, TokenEndpointMixin):
|
|
|
328
329
|
raise NotImplementedError()
|
|
329
330
|
|
|
330
331
|
def authenticate_user(self, subject):
|
|
331
|
-
"""Return the user identified by the ``sub`` claim, or *None*.
|
|
332
|
+
"""Return the user identified by the ``sub`` claim, or *None*.
|
|
333
|
+
|
|
334
|
+
Per the ID-JAG draft -06 §3.1, ``sub`` is only unique within its issuer,
|
|
335
|
+
and within its ``tenant`` for a multi-tenant issuer. When the server
|
|
336
|
+
trusts several IdPs, resolve the user with the issuer too (§4.1). The
|
|
337
|
+
verified claims are in ``self.request.id_jag_claims``::
|
|
338
|
+
|
|
339
|
+
def authenticate_user(self, subject):
|
|
340
|
+
issuer = self.request.id_jag_claims["iss"]
|
|
341
|
+
return User.query.filter_by(issuer=issuer, sub=subject).first()
|
|
342
|
+
|
|
343
|
+
:param subject: the ``sub`` claim of the ID-JAG
|
|
344
|
+
"""
|
|
332
345
|
raise NotImplementedError()
|
|
333
346
|
|
|
334
347
|
def check_jti(self, claims, jti) -> bool:
|
|
@@ -338,5 +351,10 @@ class IDJAGGrant(BaseGrant, TokenEndpointMixin):
|
|
|
338
351
|
|
|
339
352
|
def check_id_jag_permission(self, client, user, scopes) -> bool:
|
|
340
353
|
"""Application policy: return *True* if *client* may act on
|
|
341
|
-
behalf of *user* for *scopes*.
|
|
354
|
+
behalf of *user* for *scopes*.
|
|
355
|
+
|
|
356
|
+
The verified claims of the ID-JAG are in
|
|
357
|
+
``self.request.id_jag_claims``, for a policy that depends on the
|
|
358
|
+
issuer or the tenant.
|
|
359
|
+
"""
|
|
342
360
|
raise NotImplementedError()
|
|
@@ -8,6 +8,7 @@ from authlib.oauth2.rfc6749.grants.authorization_code import (
|
|
|
8
8
|
|
|
9
9
|
from .implicit import OpenIDImplicitGrant
|
|
10
10
|
from .util import is_openid_scope
|
|
11
|
+
from .util import validate_form_post_redirect_uri
|
|
11
12
|
from .util import validate_nonce
|
|
12
13
|
|
|
13
14
|
log = logging.getLogger(__name__)
|
|
@@ -56,6 +57,7 @@ class OpenIDHybridGrant(OpenIDImplicitGrant):
|
|
|
56
57
|
),
|
|
57
58
|
)
|
|
58
59
|
redirect_uri = validate_code_authorization_request(self)
|
|
60
|
+
validate_form_post_redirect_uri(self, redirect_uri)
|
|
59
61
|
if not is_openid_scope(self.request.scope):
|
|
60
62
|
raise InvalidScopeError(
|
|
61
63
|
"Missing 'openid' scope",
|
|
@@ -15,6 +15,7 @@ from ._legacy import LegacyMixin
|
|
|
15
15
|
from .util import create_half_hash
|
|
16
16
|
from .util import create_response_mode_response
|
|
17
17
|
from .util import is_openid_scope
|
|
18
|
+
from .util import validate_form_post_redirect_uri
|
|
18
19
|
from .util import validate_nonce
|
|
19
20
|
from .util import validate_request_prompt
|
|
20
21
|
|
|
@@ -69,6 +70,7 @@ class OpenIDImplicitGrant(LegacyMixin, ImplicitGrant):
|
|
|
69
70
|
|
|
70
71
|
def validate_authorization_request(self):
|
|
71
72
|
redirect_uri = super().validate_authorization_request()
|
|
73
|
+
validate_form_post_redirect_uri(self, redirect_uri)
|
|
72
74
|
if not is_openid_scope(self.request.scope):
|
|
73
75
|
raise InvalidScopeError(
|
|
74
76
|
"Missing 'openid' scope",
|
|
@@ -6,6 +6,7 @@ from authlib._joserfc_helpers import import_any_key
|
|
|
6
6
|
from authlib.common.encoding import to_native
|
|
7
7
|
from authlib.common.urls import add_params_to_uri
|
|
8
8
|
from authlib.common.urls import quote_url
|
|
9
|
+
from authlib.common.urls import urlparse
|
|
9
10
|
from authlib.oauth2.rfc6749 import InvalidRequestError
|
|
10
11
|
from authlib.oauth2.rfc6749 import scope_to_list
|
|
11
12
|
|
|
@@ -51,6 +52,28 @@ def validate_request_prompt(grant, redirect_uri, redirect_fragment=False):
|
|
|
51
52
|
return grant
|
|
52
53
|
|
|
53
54
|
|
|
55
|
+
def validate_form_post_redirect_uri(grant, redirect_uri):
|
|
56
|
+
"""Reject the ``form_post`` response mode for a non-HTTP redirect URI.
|
|
57
|
+
|
|
58
|
+
With ``form_post``, the user-agent submits an HTML form to the redirect
|
|
59
|
+
URI. A ``javascript:`` redirect URI would then run a script in the
|
|
60
|
+
origin of the authorization server.
|
|
61
|
+
|
|
62
|
+
:param grant: the grant that validates the authorization request
|
|
63
|
+
:param redirect_uri: the redirect URI of the authorization request
|
|
64
|
+
:raises InvalidRequestError: if the redirect URI scheme is not http or https
|
|
65
|
+
"""
|
|
66
|
+
response_mode = grant.request.payload.data.get(
|
|
67
|
+
"response_mode", grant.DEFAULT_RESPONSE_MODE
|
|
68
|
+
)
|
|
69
|
+
if response_mode != "form_post":
|
|
70
|
+
return
|
|
71
|
+
if urlparse.urlparse(redirect_uri).scheme not in ("http", "https"):
|
|
72
|
+
raise InvalidRequestError(
|
|
73
|
+
"The 'form_post' response mode requires an http or https redirect URI."
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
|
|
54
77
|
def validate_nonce(request, exists_nonce, required=False):
|
|
55
78
|
nonce = request.payload.data.get("nonce")
|
|
56
79
|
if not nonce:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.9.2 → authlib-1.9.4}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|