Authlib 1.9.3__tar.gz → 1.9.5__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.3 → authlib-1.9.5}/Authlib.egg-info/PKG-INFO +1 -1
- {authlib-1.9.3 → authlib-1.9.5}/PKG-INFO +1 -1
- {authlib-1.9.3 → authlib-1.9.5}/authlib/consts.py +1 -1
- {authlib-1.9.3 → authlib-1.9.5}/authlib/jose/rfc7518/oct_key.py +21 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/drafts/id_jag.py +20 -2
- {authlib-1.9.3 → authlib-1.9.5}/Authlib.egg-info/SOURCES.txt +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/Authlib.egg-info/dependency_links.txt +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/Authlib.egg-info/requires.txt +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/Authlib.egg-info/top_level.txt +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/LICENSE +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/MANIFEST.in +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/README.md +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/__init__.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/_joserfc_helpers.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/common/__init__.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/common/encoding.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/common/errors.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/common/language.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/common/security.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/common/urls.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/deprecate.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/__init__.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/base_client/__init__.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/base_client/async_app.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/base_client/async_openid.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/base_client/errors.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/base_client/framework_integration.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/base_client/registry.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/base_client/sync_app.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/base_client/sync_openid.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/django_client/__init__.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/django_client/apps.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/django_client/integration.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/django_oauth1/__init__.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/django_oauth1/authorization_server.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/django_oauth1/nonce.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/django_oauth1/resource_protector.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/django_oauth2/__init__.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/django_oauth2/authorization_server.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/django_oauth2/endpoints.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/django_oauth2/requests.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/django_oauth2/resource_protector.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/django_oauth2/signals.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/flask_client/__init__.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/flask_client/apps.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/flask_client/integration.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/flask_oauth1/__init__.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/flask_oauth1/authorization_server.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/flask_oauth1/cache.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/flask_oauth1/resource_protector.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/flask_oauth2/__init__.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/flask_oauth2/authorization_server.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/flask_oauth2/errors.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/flask_oauth2/requests.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/flask_oauth2/resource_protector.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/flask_oauth2/signals.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/httpx_client/__init__.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/httpx_client/_compat.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/httpx_client/assertion_client.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/httpx_client/oauth1_client.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/httpx_client/oauth2_client.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/httpx_client/utils.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/requests_client/__init__.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/requests_client/assertion_session.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/requests_client/oauth1_session.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/requests_client/oauth2_session.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/requests_client/utils.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/sqla_oauth2/__init__.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/sqla_oauth2/client_mixin.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/sqla_oauth2/functions.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/sqla_oauth2/tokens_mixins.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/starlette_client/__init__.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/starlette_client/apps.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/integrations/starlette_client/integration.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/jose/__init__.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/jose/drafts/__init__.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/jose/drafts/_jwe_algorithms.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/jose/drafts/_jwe_enc_cryptodome.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/jose/drafts/_jwe_enc_cryptography.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/jose/errors.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/jose/jwk.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/jose/rfc7515/__init__.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/jose/rfc7515/jws.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/jose/rfc7515/models.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/jose/rfc7516/__init__.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/jose/rfc7516/jwe.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/jose/rfc7516/models.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/jose/rfc7517/__init__.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/jose/rfc7517/_cryptography_key.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/jose/rfc7517/asymmetric_key.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/jose/rfc7517/base_key.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/jose/rfc7517/jwk.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/jose/rfc7517/key_set.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/jose/rfc7518/__init__.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/jose/rfc7518/ec_key.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/jose/rfc7518/jwe_algs.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/jose/rfc7518/jwe_encs.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/jose/rfc7518/jwe_zips.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/jose/rfc7518/jws_algs.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/jose/rfc7518/rsa_key.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/jose/rfc7518/util.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/jose/rfc7519/__init__.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/jose/rfc7519/claims.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/jose/rfc7519/jwt.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/jose/rfc8037/__init__.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/jose/rfc8037/jws_eddsa.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/jose/rfc8037/okp_key.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/jose/util.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth1/__init__.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth1/client.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth1/errors.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth1/rfc5849/__init__.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth1/rfc5849/authorization_server.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth1/rfc5849/base_server.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth1/rfc5849/client_auth.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth1/rfc5849/errors.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth1/rfc5849/models.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth1/rfc5849/parameters.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth1/rfc5849/resource_protector.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth1/rfc5849/rsa.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth1/rfc5849/signature.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth1/rfc5849/util.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth1/rfc5849/wrapper.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/__init__.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/auth.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/base.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/claims.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/client.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/drafts/__init__.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc6749/__init__.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc6749/authenticate_client.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc6749/authorization_server.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc6749/endpoint.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc6749/errors.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc6749/grants/__init__.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc6749/grants/authorization_code.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc6749/grants/base.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc6749/grants/client_credentials.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc6749/grants/implicit.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc6749/grants/refresh_token.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc6749/grants/resource_owner_password_credentials.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc6749/hooks.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc6749/models.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc6749/parameters.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc6749/requests.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc6749/resource_protector.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc6749/token_endpoint.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc6749/util.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc6749/wrappers.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc6750/__init__.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc6750/errors.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc6750/parameters.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc6750/token.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc6750/validator.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc7009/__init__.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc7009/parameters.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc7009/revocation.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc7521/__init__.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc7521/client.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc7523/__init__.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc7523/assertion.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc7523/auth.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc7523/client.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc7523/jwt_bearer.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc7523/token.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc7523/validator.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc7591/__init__.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc7591/claims.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc7591/endpoint.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc7591/errors.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc7592/__init__.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc7592/endpoint.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc7636/__init__.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc7636/challenge.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc7662/__init__.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc7662/introspection.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc7662/models.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc7662/token_validator.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc8414/__init__.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc8414/models.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc8414/well_known.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc8628/__init__.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc8628/device_code.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc8628/endpoint.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc8628/errors.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc8628/models.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc8693/__init__.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc9068/__init__.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc9068/claims.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc9068/introspection.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc9068/revocation.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc9068/token.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc9068/token_validator.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc9101/__init__.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc9101/authorization_server.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc9101/discovery.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc9101/errors.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc9101/registration.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc9207/__init__.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc9207/discovery.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oauth2/rfc9207/parameter.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oidc/__init__.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oidc/core/__init__.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oidc/core/authorization_request.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oidc/core/claims.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oidc/core/errors.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oidc/core/grants/__init__.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oidc/core/grants/_legacy.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oidc/core/grants/code.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oidc/core/grants/hybrid.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oidc/core/grants/implicit.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oidc/core/grants/util.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oidc/core/models.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oidc/core/userinfo.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oidc/core/util.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oidc/discovery/__init__.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oidc/discovery/models.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oidc/discovery/well_known.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oidc/registration/__init__.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oidc/registration/claims.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oidc/rpinitiated/__init__.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oidc/rpinitiated/discovery.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oidc/rpinitiated/end_session.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/authlib/oidc/rpinitiated/registration.py +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/pyproject.toml +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/setup.cfg +0 -0
- {authlib-1.9.3 → authlib-1.9.5}/setup.py +0 -0
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import secrets
|
|
2
2
|
|
|
3
|
+
from cryptography.exceptions import UnsupportedAlgorithm
|
|
4
|
+
from cryptography.hazmat.primitives.serialization import load_ssh_public_key
|
|
5
|
+
|
|
3
6
|
from authlib.common.encoding import to_bytes
|
|
4
7
|
from authlib.common.encoding import to_unicode
|
|
5
8
|
from authlib.common.encoding import urlsafe_b64decode
|
|
@@ -16,6 +19,21 @@ POSSIBLE_UNSAFE_KEYS = (
|
|
|
16
19
|
b"ecdsa-sha2-",
|
|
17
20
|
)
|
|
18
21
|
|
|
22
|
+
_SSH_PUBLIC_PREFIXES = (b"ssh-rsa", b"ssh-ed25519", b"ecdsa-sha2-")
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def _is_ssh_public_key(raw_key):
|
|
26
|
+
"""Tell if the asymmetric key classes would load the bytes as an SSH key."""
|
|
27
|
+
if not raw_key.startswith(_SSH_PUBLIC_PREFIXES):
|
|
28
|
+
return False
|
|
29
|
+
|
|
30
|
+
try:
|
|
31
|
+
load_ssh_public_key(raw_key)
|
|
32
|
+
except (ValueError, UnsupportedAlgorithm):
|
|
33
|
+
return False
|
|
34
|
+
|
|
35
|
+
return True
|
|
36
|
+
|
|
19
37
|
|
|
20
38
|
class OctKey(Key):
|
|
21
39
|
"""Key class of the ``oct`` key type."""
|
|
@@ -73,6 +91,9 @@ class OctKey(Key):
|
|
|
73
91
|
if any(marker in raw_key for marker in POSSIBLE_UNSAFE_KEYS):
|
|
74
92
|
raise ValueError("This key may not be safe to import")
|
|
75
93
|
|
|
94
|
+
if _is_ssh_public_key(raw_key):
|
|
95
|
+
raise ValueError("This key may not be safe to import")
|
|
96
|
+
|
|
76
97
|
@classmethod
|
|
77
98
|
def import_key(cls, raw, options=None):
|
|
78
99
|
"""Import a key from bytes, string, or dict data."""
|
|
@@ -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()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.3 → authlib-1.9.5}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|