auth-middleware 0.4.2__tar.gz → 0.4.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.
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/.github/workflows/release.yml +27 -26
- auth_middleware-0.4.4/PKG-INFO +397 -0
- auth_middleware-0.4.4/README.md +362 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/.buildinfo +1 -1
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/.doctrees/environment.pickle +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_modules/auth_middleware/contracts/groups_provider.html +2 -2
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_modules/auth_middleware/contracts/jwt_provider.html +2 -2
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_modules/auth_middleware/contracts/permissions_provider.html +2 -2
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_modules/auth_middleware/exceptions/authentication_error.html +2 -2
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_modules/auth_middleware/exceptions/invalid_authorization_exception.html +2 -2
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_modules/auth_middleware/exceptions/invalid_credentials_exception.html +2 -2
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_modules/auth_middleware/exceptions/invalid_token_exception.html +2 -2
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_modules/auth_middleware/exceptions/password_policy_error.html +2 -2
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_modules/auth_middleware/exceptions/user_not_found_error.html +2 -2
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_modules/auth_middleware/guards/functions.html +2 -2
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_modules/auth_middleware/guards/group_checker.html +2 -2
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_modules/auth_middleware/guards/permissions_checker.html +2 -2
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_modules/auth_middleware/guards/role_checker.html +2 -2
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_modules/auth_middleware/jwt_auth_middleware.html +2 -2
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_modules/auth_middleware/jwt_bearer_manager.html +2 -2
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_modules/auth_middleware/providers/aws/cognito_authz_provider_settings.html +2 -2
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_modules/auth_middleware/providers/aws/cognito_exceptions.html +2 -2
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_modules/auth_middleware/providers/aws/cognito_groups_provider.html +2 -2
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_modules/auth_middleware/providers/aws/cognito_provider.html +2 -2
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_modules/auth_middleware/providers/aws/jwt_provider_settings.html +2 -2
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_modules/auth_middleware/providers/azure/entra_id_provider.html +2 -2
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_modules/auth_middleware/providers/azure/settings.html +2 -2
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_modules/auth_middleware/providers/sqlalchemy/sql_groups_provider.html +2 -2
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_modules/auth_middleware/providers/sqlalchemy/sql_permissions_provider.html +2 -2
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_modules/index.html +2 -2
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/documentation_options.js +1 -1
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/api.html +2 -2
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/auth-authn.html +2 -2
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/cognito_provider.html +2 -2
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/entra_id_provider.html +2 -2
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/exceptions.html +2 -2
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/extending-authz-providers.html +2 -2
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/functions.html +2 -2
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/genindex.html +2 -2
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/groups-provider.html +2 -2
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/index.html +2 -2
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/infrastructure/cognito-setup.html +2 -2
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/infrastructure/entra-id-setup.html +2 -2
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/infrastructure/google-setup.html +2 -2
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/infrastructure.html +2 -2
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/installation.html +2 -2
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/jwks-cache.html +2 -2
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/jwt_auth_middleware.html +2 -2
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/jwt_auth_provider.html +2 -2
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/jwt_bearer_manager.html +2 -2
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/middleware-configuration.html +2 -2
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/objects.inv +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/permissions-provider.html +2 -2
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/py-modindex.html +2 -2
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/search.html +2 -2
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/services.html +2 -2
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/types.html +2 -2
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/user-guide.html +2 -2
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/user-property.html +2 -2
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs_source/conf.py +1 -1
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/makefile +11 -5
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/pyproject.toml +8 -5
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/__init__.py +1 -1
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/uv.lock +12 -7
- auth_middleware-0.4.2/PKG-INFO +0 -396
- auth_middleware-0.4.2/README.md +0 -362
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/.coveragerc +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/.devcontainer/.bashrc +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/.devcontainer/Dockerfile +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/.devcontainer/QUICKSTART.md +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/.devcontainer/README.md +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/.devcontainer/devcontainer.json +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/.devcontainer/start.sh +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/.devcontainer/uv.toml +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/.devcontainer/verify-setup.sh +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/.flake8 +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/.gitignore +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/.python-version +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/.sonarlint/connectedMode.json +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/.vscode/extensions.json +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/.vscode/launch.json +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/.vscode/settings.json +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/CHANGELOG.txt +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/LICENSE +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/alembic/README +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/alembic/env.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/alembic/script.py.mako +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/alembic/versions/de961fac6f27_initial_migration.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/alembic.ini +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/.buildinfo.bak +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/.doctrees/__intersphinx_cache__/fastapi_objects.inv +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/.doctrees/__intersphinx_cache__/python_objects.inv +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/.doctrees/api.doctree +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/.doctrees/auth-authn.doctree +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/.doctrees/cognito_provider.doctree +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/.doctrees/entra_id_provider.doctree +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/.doctrees/exceptions.doctree +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/.doctrees/extending-authz-providers.doctree +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/.doctrees/functions.doctree +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/.doctrees/groups-provider.doctree +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/.doctrees/index.doctree +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/.doctrees/infrastructure/cognito-setup.doctree +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/.doctrees/infrastructure/entra-id-setup.doctree +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/.doctrees/infrastructure/google-setup.doctree +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/.doctrees/infrastructure.doctree +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/.doctrees/installation.doctree +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/.doctrees/jwks-cache.doctree +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/.doctrees/jwt_auth_middleware.doctree +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/.doctrees/jwt_auth_provider.doctree +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/.doctrees/jwt_bearer_manager.doctree +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/.doctrees/middleware-configuration.doctree +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/.doctrees/permissions-provider.doctree +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/.doctrees/services.doctree +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/.doctrees/types.doctree +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/.doctrees/user-guide.doctree +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/.doctrees/user-property.doctree +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/.keep +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/.nojekyll +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_modules/auth_middleware/exceptions/cognito_exceptions.html +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_modules/auth_middleware/functions.html +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_modules/auth_middleware/providers/authn/cognito_authz_provider_settings.html +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_modules/auth_middleware/providers/authn/cognito_provider.html +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_modules/auth_middleware/providers/authn/jwt_provider.html +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_modules/auth_middleware/providers/authn/jwt_provider_settings.html +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_modules/auth_middleware/providers/authz/cognito_groups_provider.html +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_modules/auth_middleware/providers/authz/groups_provider.html +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_modules/auth_middleware/providers/authz/permissions_provider.html +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_modules/auth_middleware/providers/authz/sql_groups_provider.html +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_modules/auth_middleware/providers/authz/sql_permissions_provider.html +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_sources/api.rst.txt +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_sources/auth-authn.rst.txt +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_sources/cognito_provider.rst.txt +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_sources/entra_id_provider.rst.txt +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_sources/exceptions.rst.txt +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_sources/extending-authz-providers.rst.txt +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_sources/functions.rst.txt +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_sources/groups-provider.rst.txt +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_sources/index.rst.txt +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_sources/infrastructure/cognito-setup.rst.txt +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_sources/infrastructure/entra-id-setup.rst.txt +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_sources/infrastructure/google-setup.rst.txt +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_sources/infrastructure.rst.txt +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_sources/installation.rst.txt +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_sources/jwks-cache.rst.txt +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_sources/jwt_auth_middleware.rst.txt +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_sources/jwt_auth_provider.rst.txt +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_sources/jwt_bearer_manager.rst.txt +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_sources/middleware-configuration.rst.txt +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_sources/permissions-provider.rst.txt +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_sources/services.rst.txt +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_sources/types.rst.txt +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_sources/user-guide.rst.txt +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_sources/user-property.rst.txt +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/_sphinx_javascript_frameworks_compat.js +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/base-stemmer.js +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/basic.css +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/css/badge_only.css +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/css/fonts/fontawesome-webfont.eot +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/css/fonts/fontawesome-webfont.svg +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/css/fonts/fontawesome-webfont.ttf +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/css/fonts/fontawesome-webfont.woff +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/css/fonts/lato-bold-italic.woff +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/css/fonts/lato-bold-italic.woff2 +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/css/fonts/lato-bold.woff +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/css/fonts/lato-bold.woff2 +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/css/fonts/lato-normal-italic.woff +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/css/fonts/lato-normal-italic.woff2 +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/css/fonts/lato-normal.woff +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/css/fonts/lato-normal.woff2 +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/css/theme.css +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/doctools.js +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/english-stemmer.js +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/file.png +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/fonts/Lato/lato-bold.eot +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/fonts/Lato/lato-bold.ttf +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/fonts/Lato/lato-bold.woff +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/fonts/Lato/lato-bold.woff2 +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/fonts/Lato/lato-bolditalic.eot +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/fonts/Lato/lato-bolditalic.ttf +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/fonts/Lato/lato-bolditalic.woff +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/fonts/Lato/lato-bolditalic.woff2 +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/fonts/Lato/lato-italic.eot +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/fonts/Lato/lato-italic.ttf +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/fonts/Lato/lato-italic.woff +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/fonts/Lato/lato-italic.woff2 +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/fonts/Lato/lato-regular.eot +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/fonts/Lato/lato-regular.ttf +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/fonts/Lato/lato-regular.woff +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/fonts/Lato/lato-regular.woff2 +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/jquery.js +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/js/badge_only.js +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/js/html5shiv-printshiv.min.js +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/js/html5shiv.min.js +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/js/theme.js +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/js/versions.js +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/language_data.js +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/minus.png +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/plus.png +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/pygments.css +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/searchtools.js +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/_static/sphinx_highlight.js +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs/searchindex.js +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs_source/Makefile +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs_source/api.rst +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs_source/auth-authn.rst +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs_source/cognito_provider.rst +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs_source/entra_id_provider.rst +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs_source/exceptions.rst +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs_source/extending-authz-providers.rst +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs_source/functions.rst +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs_source/groups-provider.rst +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs_source/index.rst +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs_source/infrastructure/cognito-setup.rst +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs_source/infrastructure/entra-id-setup.rst +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs_source/infrastructure/google-setup.rst +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs_source/infrastructure.rst +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs_source/installation.rst +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs_source/jwks-cache.rst +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs_source/jwt_auth_middleware.rst +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs_source/jwt_auth_provider.rst +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs_source/jwt_bearer_manager.rst +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs_source/make.bat +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs_source/middleware-configuration.rst +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs_source/permissions-provider.rst +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs_source/services.rst +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs_source/types.rst +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs_source/user-guide.rst +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/docs_source/user-property.rst +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/examples/__init__.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/examples/audit_example.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/examples/auth_examples.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/examples/jwks_cache_example.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/examples/m2m_detection_example.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/examples/metrics_example.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/examples/rate_limiting_example.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/scripts/README.md +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/scripts/update_version.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/sonar-project.properties +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/auth_provider.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/basic_auth_middleware.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/cli.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/commands/__init__.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/constants.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/contracts/__init__.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/contracts/credentials_repository.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/contracts/groups_provider.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/contracts/jwt_provider.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/contracts/permissions_provider.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/contracts/profile_provider.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/contracts/roles_provider.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/exceptions/__init__.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/exceptions/authentication_error.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/exceptions/invalid_authorization_exception.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/exceptions/invalid_credentials_exception.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/exceptions/invalid_token_exception.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/exceptions/password_policy_error.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/exceptions/user_not_found_error.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/guards/__init__.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/guards/functions.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/guards/group_checker.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/guards/permissions_checker.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/guards/role_checker.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/jwt_auth_middleware.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/jwt_bearer_manager.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/logging.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/providers/__init__.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/providers/aws/__init__.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/providers/aws/aws_credentials.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/providers/aws/aws_exception.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/providers/aws/cognito_authz_provider_settings.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/providers/aws/cognito_exceptions.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/providers/aws/cognito_groups_as_roles_provider.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/providers/aws/cognito_groups_provider.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/providers/aws/cognito_profile_provider.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/providers/aws/cognito_provider.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/providers/aws/identity_pool_client.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/providers/aws/identity_pool_provider.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/providers/aws/identity_pool_settings.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/providers/aws/jwt_provider_settings.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/providers/aws/services/__init__.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/providers/aws/services/cognito_auth_models.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/providers/aws/services/cognito_auth_service.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/providers/aws/services/m2m_detector.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/providers/aws/utils.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/providers/azure/__init__.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/providers/azure/azure_exception.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/providers/azure/entra_id_provider.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/providers/azure/settings.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/providers/azure/utils.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/providers/sqlalchemy/__init__.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/providers/sqlalchemy/async_database.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/providers/sqlalchemy/async_database_settings.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/providers/sqlalchemy/sql_base_model.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/providers/sqlalchemy/sql_groups_provider.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/providers/sqlalchemy/sql_permissions_provider.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/repository/__init__.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/repository/json_credentials_repository.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/repository/settings.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/services/__init__.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/services/audit.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/services/metrics.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/services/rate_limiter.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/settings.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/types/__init__.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/types/jwt.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/types/user.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/src/auth_middleware/types/user_credentials.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/0.APITesting/_Auth/(No) Get Id Token.bru +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/0.APITesting/_Auth/Get Token (client credentials).bru +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/0.APITesting/_Auth/Login.bru +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/0.APITesting/bruno.json +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/0.APITesting/environments/Development.bru +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/__init__.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/commands/__init__.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/commands/test_cli.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/conftest.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/contracts/__init__.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/contracts/test_abstract_stubs.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/contracts/test_auth_provider.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/contracts/test_groups_provider.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/contracts/test_jwt_provider.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/contracts/test_jwt_provider_settings.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/contracts/test_permissions_provider.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/exceptions/__init__.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/exceptions/test_exceptions.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/guards/__init__.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/guards/test_functions.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/guards/test_group_checker.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/guards/test_permissions_checker.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/guards/test_role_checker.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/providers/__init__.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/providers/aws/__init__.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/providers/aws/test_aws_credentials.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/providers/aws/test_cognito_auth_service.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/providers/aws/test_cognito_groups_as_roles_provider.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/providers/aws/test_cognito_profile_provider.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/providers/aws/test_cognito_provider.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/providers/aws/test_cognito_provider_clean.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/providers/aws/test_cognito_utils.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/providers/aws/test_identity_pool_client.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/providers/aws/test_identity_pool_provider.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/providers/aws/test_identity_pool_settings.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/providers/aws/test_jwks_cache_improvements.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/providers/aws/test_m2m_detector.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/providers/azure/__init__.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/providers/azure/test_entra_id_init.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/providers/azure/test_entra_id_provider.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/providers/azure/test_entra_id_settings.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/providers/azure/test_entra_id_utils.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/providers/sqlalchemy/__init__.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/providers/sqlalchemy/test_async_database.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/providers/sqlalchemy/test_sql_groups_provider.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/providers/sqlalchemy/test_sql_permissions_provider.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/repository/__init__.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/repository/test_json_credentials_repository.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/repository/test_repository_settings.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/services/__init__.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/services/test_audit.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/services/test_metrics.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/services/test_rate_limiter.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/test_basic_auth_middleware.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/test_basic_auth_middleware_clean.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/test_dummy.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/test_jwt_auth_middleware.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/test_jwt_bearer_manager.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/test_logging.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/types/__init__.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/types/test_jwt_types.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/types/test_types.py +0 -0
- {auth_middleware-0.4.2 → auth_middleware-0.4.4}/tests/types/test_user_m2m.py +0 -0
|
@@ -13,17 +13,19 @@ on:
|
|
|
13
13
|
tags:
|
|
14
14
|
description: "Manual launch"
|
|
15
15
|
|
|
16
|
+
env:
|
|
17
|
+
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
|
|
18
|
+
|
|
16
19
|
jobs:
|
|
17
20
|
TestBuildAndPublish:
|
|
18
21
|
runs-on: ubuntu-latest
|
|
22
|
+
permissions:
|
|
23
|
+
contents: write
|
|
19
24
|
steps:
|
|
20
25
|
- name: Checkout code
|
|
21
26
|
uses: actions/checkout@v4
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
run: |
|
|
25
|
-
echo "Release tag: ${{ github.event.release.tag_name }}"
|
|
26
|
-
echo "Release description: ${{ github.event.release.body }}"
|
|
27
|
+
with:
|
|
28
|
+
fetch-depth: 0
|
|
27
29
|
|
|
28
30
|
- name: Install uv
|
|
29
31
|
uses: astral-sh/setup-uv@v5
|
|
@@ -33,28 +35,12 @@ jobs:
|
|
|
33
35
|
with:
|
|
34
36
|
python-version-file: "pyproject.toml"
|
|
35
37
|
|
|
36
|
-
- name:
|
|
38
|
+
- name: Read version
|
|
39
|
+
id: version
|
|
37
40
|
run: |
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
echo "
|
|
41
|
-
new_v=$(python3 -c "v='$v'; p=v.split('.'); p[-1]=str(int(p[-1])+1); print('.'.join(p))")
|
|
42
|
-
echo "New version: $new_v"
|
|
43
|
-
sed -i "s/^version = \"$v\"/version = \"$new_v\"/" pyproject.toml
|
|
44
|
-
echo "Bumped version to $new_v"
|
|
45
|
-
|
|
46
|
-
- name: Sync version across files
|
|
47
|
-
run: |
|
|
48
|
-
uv run python scripts/update_version.py
|
|
49
|
-
echo "Synchronized version across all project files"
|
|
50
|
-
|
|
51
|
-
- name: Commit and push version update
|
|
52
|
-
run: |
|
|
53
|
-
git config --global user.name 'GitHub Action'
|
|
54
|
-
git config --global user.email 'action@github.com'
|
|
55
|
-
git add pyproject.toml src/auth_middleware/__init__.py docs_source/conf.py
|
|
56
|
-
git commit -m "Update version across all files" || echo "No changes to commit"
|
|
57
|
-
git push origin HEAD
|
|
41
|
+
VERSION=$(python3 -c "import tomllib; d=tomllib.load(open('pyproject.toml','rb')); print(d['project']['version'])")
|
|
42
|
+
echo "VERSION=$VERSION" >> $GITHUB_ENV
|
|
43
|
+
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
|
58
44
|
|
|
59
45
|
- name: Install the project
|
|
60
46
|
run: uv sync --all-extras --group dev --group docs
|
|
@@ -81,3 +67,18 @@ jobs:
|
|
|
81
67
|
- name: Publish on pypi
|
|
82
68
|
run: |
|
|
83
69
|
uv publish --token ${{ secrets.PYPI_TOKEN }}
|
|
70
|
+
|
|
71
|
+
- name: Create and push git tag
|
|
72
|
+
run: |
|
|
73
|
+
git config --global user.name 'GitHub Action'
|
|
74
|
+
git config --global user.email 'action@github.com'
|
|
75
|
+
git tag "v${{ steps.version.outputs.version }}" || echo "Tag already exists"
|
|
76
|
+
git push origin "v${{ steps.version.outputs.version }}" || echo "Tag already pushed"
|
|
77
|
+
|
|
78
|
+
- name: Create GitHub Release
|
|
79
|
+
uses: softprops/action-gh-release@v2
|
|
80
|
+
with:
|
|
81
|
+
tag_name: v${{ steps.version.outputs.version }}
|
|
82
|
+
name: v${{ steps.version.outputs.version }}
|
|
83
|
+
files: dist/*
|
|
84
|
+
generate_release_notes: true
|
|
@@ -0,0 +1,397 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: auth-middleware
|
|
3
|
+
Version: 0.4.4
|
|
4
|
+
Summary: Async Auth Middleware for FastAPI/Starlette
|
|
5
|
+
Project-URL: Homepage, https://impalah.github.io/auth-middleware/
|
|
6
|
+
Project-URL: Documentation, https://impalah.github.io/auth-middleware/
|
|
7
|
+
Project-URL: Repository, https://github.com/impalah/auth-middleware
|
|
8
|
+
Project-URL: Source, https://github.com/impalah/auth-middleware
|
|
9
|
+
Author-email: impalah <impalah@gmail.com>
|
|
10
|
+
License: MIT
|
|
11
|
+
License-File: LICENSE
|
|
12
|
+
Keywords: auth,fastapi,middleware,starlette
|
|
13
|
+
Classifier: Development Status :: 4 - Beta
|
|
14
|
+
Classifier: Framework :: FastAPI
|
|
15
|
+
Classifier: Intended Audience :: Developers
|
|
16
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
17
|
+
Classifier: Programming Language :: Python :: 3
|
|
18
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
19
|
+
Classifier: Topic :: System :: Systems Administration :: Authentication/Directory
|
|
20
|
+
Requires-Python: >=3.14
|
|
21
|
+
Requires-Dist: click>=8.3.1
|
|
22
|
+
Requires-Dist: fastapi>=0.128.0
|
|
23
|
+
Requires-Dist: httpx>=0.28.1
|
|
24
|
+
Requires-Dist: joserfc>=1.6.3
|
|
25
|
+
Requires-Dist: loguru>=0.7.3
|
|
26
|
+
Requires-Dist: pydantic-settings>=2.12.0
|
|
27
|
+
Requires-Dist: pydantic[email]>=2.12.5
|
|
28
|
+
Requires-Dist: python-dotenv>=1.2.1
|
|
29
|
+
Requires-Dist: svix-ksuid>=0.6.2
|
|
30
|
+
Provides-Extra: sqlalchemy
|
|
31
|
+
Requires-Dist: aiomysql>=0.3.2; extra == 'sqlalchemy'
|
|
32
|
+
Requires-Dist: asyncpg>=0.31.0; extra == 'sqlalchemy'
|
|
33
|
+
Requires-Dist: sqlalchemy[asyncio]>=2.0.46; extra == 'sqlalchemy'
|
|
34
|
+
Description-Content-Type: text/markdown
|
|
35
|
+
|
|
36
|
+
# Auth Middleware
|
|
37
|
+
|
|
38
|
+
[](https://badge.fury.io/py/auth-middleware)
|
|
39
|
+
[](https://www.python.org/downloads/)
|
|
40
|
+
[](https://opensource.org/licenses/MIT)
|
|
41
|
+
[](https://github.com/impalah/auth-middleware)
|
|
42
|
+
|
|
43
|
+
**Async Authentication and Authorization Middleware for FastAPI/Starlette Applications**
|
|
44
|
+
|
|
45
|
+
Auth Middleware is a comprehensive, production-ready authentication and authorization solution for FastAPI and Starlette applications. It provides a pluggable architecture that supports multiple identity providers and authorization backends with async-first design principles.
|
|
46
|
+
|
|
47
|
+
## Features
|
|
48
|
+
|
|
49
|
+
### **Authentication Providers**
|
|
50
|
+
|
|
51
|
+
- **AWS Cognito** — Full integration with Amazon Cognito User Pools
|
|
52
|
+
- **AWS Cognito Identity Pool** — Exchange User Pool tokens for temporary AWS credentials
|
|
53
|
+
- **Azure Entra ID** — Microsoft Azure Active Directory authentication
|
|
54
|
+
- **Generic JWT** — Support for any JWT-based identity provider
|
|
55
|
+
- **Basic Auth** — Username/password authentication via `BasicAuthMiddleware`
|
|
56
|
+
- **Custom Providers** — Extensible architecture via the `JWTProvider` contract
|
|
57
|
+
|
|
58
|
+
### **Authorization & Access Control**
|
|
59
|
+
|
|
60
|
+
- **Group-based Authorization** — Role-based access control with user groups
|
|
61
|
+
- **Role-based Authorization** — Fine-grained role system
|
|
62
|
+
- **Permission-based Authorization** — Fine-grained permission system
|
|
63
|
+
- **SQL Backend Support** — PostgreSQL and MySQL for groups/permissions storage via SQLAlchemy
|
|
64
|
+
- **Cognito Groups Integration** — Direct integration with AWS Cognito groups (`cognito:groups` claim)
|
|
65
|
+
- **Cognito Groups-as-Roles** — Map Cognito groups directly to roles
|
|
66
|
+
- **Custom Authorization Providers** — Build your own via the `GroupsProvider`, `RolesProvider` and `PermissionsProvider` contracts
|
|
67
|
+
|
|
68
|
+
### **Performance & Reliability**
|
|
69
|
+
|
|
70
|
+
- **Async-First Design** — Built for high-performance async applications
|
|
71
|
+
- **JWKS Caching** — Intelligent caching of JSON Web Key Sets
|
|
72
|
+
- **Connection Pooling** — Efficient database and HTTP connections
|
|
73
|
+
- **Lazy Loading** — User groups and permissions loaded on-demand
|
|
74
|
+
- **Error Resilience** — Graceful degradation on provider failures
|
|
75
|
+
|
|
76
|
+
### **Developer Experience**
|
|
77
|
+
|
|
78
|
+
- **Type-Safe** — Full type hints throughout, compatible with mypy strict mode
|
|
79
|
+
- **FastAPI Integration** — Native dependency injection support
|
|
80
|
+
- **Middleware Pattern** — Standard ASGI middleware implementation
|
|
81
|
+
- **Environment Configuration** — 12-factor app configuration support
|
|
82
|
+
- **Comprehensive Documentation** — Detailed guides and API reference
|
|
83
|
+
|
|
84
|
+
## Installation
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
# pip
|
|
88
|
+
pip install auth-middleware
|
|
89
|
+
|
|
90
|
+
# poetry
|
|
91
|
+
poetry add auth-middleware
|
|
92
|
+
|
|
93
|
+
# uv (recommended)
|
|
94
|
+
uv add auth-middleware
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## Quick Start
|
|
98
|
+
|
|
99
|
+
### JWT Authentication with AWS Cognito
|
|
100
|
+
|
|
101
|
+
```python
|
|
102
|
+
from fastapi import FastAPI, Depends, Request
|
|
103
|
+
from auth_middleware import JwtAuthMiddleware
|
|
104
|
+
from auth_middleware.guards import require_user, require_groups
|
|
105
|
+
from auth_middleware.providers.aws.cognito_provider import CognitoProvider
|
|
106
|
+
from auth_middleware.providers.aws.cognito_authz_provider_settings import CognitoAuthzProviderSettings
|
|
107
|
+
|
|
108
|
+
app = FastAPI()
|
|
109
|
+
|
|
110
|
+
auth_settings = CognitoAuthzProviderSettings(
|
|
111
|
+
user_pool_id="us-east-1_abcdef123",
|
|
112
|
+
user_pool_region="us-east-1",
|
|
113
|
+
jwt_token_verification_disabled=False,
|
|
114
|
+
)
|
|
115
|
+
|
|
116
|
+
app.add_middleware(
|
|
117
|
+
JwtAuthMiddleware,
|
|
118
|
+
auth_provider=CognitoProvider(settings=auth_settings),
|
|
119
|
+
)
|
|
120
|
+
|
|
121
|
+
# Requires valid authentication
|
|
122
|
+
@app.get("/protected", dependencies=[Depends(require_user())])
|
|
123
|
+
async def protected_endpoint(request: Request):
|
|
124
|
+
user = request.state.current_user
|
|
125
|
+
return {"message": f"Hello {user.name}", "user_id": user.id}
|
|
126
|
+
|
|
127
|
+
# Requires group membership
|
|
128
|
+
@app.get("/admin", dependencies=[Depends(require_groups(["admin", "moderator"]))])
|
|
129
|
+
async def admin_endpoint(request: Request):
|
|
130
|
+
return {"message": "Admin access granted"}
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### Azure Entra ID
|
|
134
|
+
|
|
135
|
+
Set the required environment variables (read at module load time):
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
AUTH_PROVIDER_AZURE_ENTRA_ID_TENANT_ID=your-tenant-id
|
|
139
|
+
AUTH_PROVIDER_AZURE_ENTRA_ID_AUDIENCE_ID=your-app-client-id
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
```python
|
|
143
|
+
from auth_middleware import JwtAuthMiddleware
|
|
144
|
+
from auth_middleware.providers.azure.entra_id_provider import EntraIDProvider
|
|
145
|
+
|
|
146
|
+
app.add_middleware(
|
|
147
|
+
JwtAuthMiddleware,
|
|
148
|
+
auth_provider=EntraIDProvider(),
|
|
149
|
+
)
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### Basic Auth
|
|
153
|
+
|
|
154
|
+
```python
|
|
155
|
+
from auth_middleware import BasicAuthMiddleware
|
|
156
|
+
from auth_middleware.contracts import CredentialsRepository
|
|
157
|
+
|
|
158
|
+
class MyCredentialsRepository(CredentialsRepository):
|
|
159
|
+
async def get_credentials(self, username: str):
|
|
160
|
+
# Return stored credentials for the given username
|
|
161
|
+
...
|
|
162
|
+
|
|
163
|
+
app.add_middleware(
|
|
164
|
+
BasicAuthMiddleware,
|
|
165
|
+
credentials_repository=MyCredentialsRepository(),
|
|
166
|
+
)
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
## Configuration
|
|
170
|
+
|
|
171
|
+
### Environment Variables
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
# Core middleware — always read from environment
|
|
175
|
+
AUTH_MIDDLEWARE_DISABLED=false
|
|
176
|
+
AUTH_MIDDLEWARE_LOG_LEVEL=INFO
|
|
177
|
+
|
|
178
|
+
# Azure Entra ID — always read from environment at module load (required when using EntraIDProvider)
|
|
179
|
+
AUTH_PROVIDER_AZURE_ENTRA_ID_TENANT_ID=your-tenant-id
|
|
180
|
+
AUTH_PROVIDER_AZURE_ENTRA_ID_AUDIENCE_ID=your-client-id
|
|
181
|
+
|
|
182
|
+
# AWS Cognito — optional; alternative to passing values programmatically to CognitoAuthzProviderSettings
|
|
183
|
+
# USER_POOL_ID=us-east-1_abcdef123
|
|
184
|
+
# USER_POOL_REGION=us-east-1
|
|
185
|
+
# JWKS_CACHE_INTERVAL=20 # minutes, default 20
|
|
186
|
+
# JWKS_CACHE_USAGES=1000 # verifications before refresh, default 1000
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
### SQL-backed Groups and Permissions
|
|
190
|
+
|
|
191
|
+
```python
|
|
192
|
+
from auth_middleware.providers.aws.cognito_provider import CognitoProvider
|
|
193
|
+
from auth_middleware.providers.sqlalchemy.sql_groups_provider import SqlGroupsProvider
|
|
194
|
+
from auth_middleware.providers.sqlalchemy.sql_permissions_provider import SqlPermissionsProvider
|
|
195
|
+
from auth_middleware.providers.sqlalchemy.async_database import AsyncDatabase
|
|
196
|
+
from auth_middleware.providers.sqlalchemy.async_database_settings import AsyncDatabaseSettings
|
|
197
|
+
|
|
198
|
+
AsyncDatabase.configure(AsyncDatabaseSettings(
|
|
199
|
+
database_url="postgresql+asyncpg://user:pass@localhost/mydb"
|
|
200
|
+
))
|
|
201
|
+
|
|
202
|
+
auth_provider = CognitoProvider(
|
|
203
|
+
settings=auth_settings,
|
|
204
|
+
groups_provider=SqlGroupsProvider(),
|
|
205
|
+
permissions_provider=SqlPermissionsProvider(),
|
|
206
|
+
)
|
|
207
|
+
|
|
208
|
+
app.add_middleware(JwtAuthMiddleware, auth_provider=auth_provider)
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
### Cognito Groups Provider
|
|
212
|
+
|
|
213
|
+
```python
|
|
214
|
+
from auth_middleware.providers.aws.cognito_provider import CognitoProvider
|
|
215
|
+
from auth_middleware.providers.aws.cognito_groups_provider import CognitoGroupsProvider
|
|
216
|
+
|
|
217
|
+
# Groups extracted directly from the cognito:groups JWT claim
|
|
218
|
+
auth_provider = CognitoProvider(
|
|
219
|
+
settings=auth_settings,
|
|
220
|
+
groups_provider=CognitoGroupsProvider,
|
|
221
|
+
)
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
## Usage Examples
|
|
225
|
+
|
|
226
|
+
### Accessing User Information
|
|
227
|
+
|
|
228
|
+
```python
|
|
229
|
+
@app.get("/profile", dependencies=[Depends(require_user())])
|
|
230
|
+
async def get_profile(request: Request):
|
|
231
|
+
user = request.state.current_user
|
|
232
|
+
return {
|
|
233
|
+
"id": user.id,
|
|
234
|
+
"name": user.name,
|
|
235
|
+
"email": user.email,
|
|
236
|
+
"groups": await user.groups,
|
|
237
|
+
"permissions": await user.permissions,
|
|
238
|
+
}
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
### Role and Permission Guards
|
|
242
|
+
|
|
243
|
+
```python
|
|
244
|
+
from auth_middleware.guards import require_roles, require_permissions
|
|
245
|
+
|
|
246
|
+
@app.get("/reports", dependencies=[Depends(require_roles(["analyst", "manager"]))])
|
|
247
|
+
async def get_reports(request: Request):
|
|
248
|
+
return {"message": "Reports access granted"}
|
|
249
|
+
|
|
250
|
+
@app.post("/admin/users", dependencies=[Depends(require_permissions(["user.create"]))])
|
|
251
|
+
async def create_user(request: Request):
|
|
252
|
+
return {"message": "User creation allowed"}
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
### curl
|
|
256
|
+
|
|
257
|
+
```bash
|
|
258
|
+
curl -H "Authorization: Bearer YOUR_JWT_TOKEN" \
|
|
259
|
+
http://localhost:8000/protected
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
## Package Structure
|
|
263
|
+
|
|
264
|
+
```
|
|
265
|
+
auth_middleware/
|
|
266
|
+
├── jwt_auth_middleware.py # JwtAuthMiddleware (ASGI)
|
|
267
|
+
├── basic_auth_middleware.py # BasicAuthMiddleware (ASGI)
|
|
268
|
+
├── constants.py # AUTH_SCHEME_BASIC, AUTH_SCHEME_BEARER
|
|
269
|
+
├── contracts/ # Abstract base classes
|
|
270
|
+
│ ├── jwt_provider.py # JWTProvider
|
|
271
|
+
│ ├── groups_provider.py # GroupsProvider
|
|
272
|
+
│ ├── roles_provider.py # RolesProvider
|
|
273
|
+
│ ├── permissions_provider.py # PermissionsProvider
|
|
274
|
+
│ ├── profile_provider.py # ProfileProvider
|
|
275
|
+
│ └── credentials_repository.py # CredentialsRepository
|
|
276
|
+
├── guards/ # FastAPI dependency guards
|
|
277
|
+
│ ├── functions.py # require_user, require_groups, require_roles,
|
|
278
|
+
│ │ # require_permissions, get_current_user
|
|
279
|
+
│ ├── group_checker.py # GroupChecker
|
|
280
|
+
│ ├── role_checker.py # RoleChecker
|
|
281
|
+
│ └── permissions_checker.py # PermissionsChecker
|
|
282
|
+
├── providers/
|
|
283
|
+
│ ├── aws/ # AWS Cognito & Identity Pool
|
|
284
|
+
│ │ ├── cognito_provider.py
|
|
285
|
+
│ │ ├── cognito_groups_provider.py
|
|
286
|
+
│ │ ├── cognito_groups_as_roles_provider.py
|
|
287
|
+
│ │ ├── cognito_profile_provider.py
|
|
288
|
+
│ │ ├── cognito_authz_provider_settings.py
|
|
289
|
+
│ │ ├── identity_pool_provider.py
|
|
290
|
+
│ │ └── services/ # Cognito auth service, M2M detector
|
|
291
|
+
│ ├── azure/ # Azure Entra ID
|
|
292
|
+
│ │ ├── entra_id_provider.py
|
|
293
|
+
│ │ └── settings.py
|
|
294
|
+
│ └── sqlalchemy/ # SQL-backed authorization
|
|
295
|
+
│ ├── sql_groups_provider.py
|
|
296
|
+
│ ├── sql_permissions_provider.py
|
|
297
|
+
│ ├── async_database.py
|
|
298
|
+
│ └── async_database_settings.py
|
|
299
|
+
└── exceptions/ # InvalidTokenException, AuthenticationError, …
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
## Architecture
|
|
303
|
+
|
|
304
|
+
```mermaid
|
|
305
|
+
graph TD
|
|
306
|
+
A[HTTP Request] --> B[JwtAuthMiddleware\nor BasicAuthMiddleware]
|
|
307
|
+
B --> C[JWTBearerManager]
|
|
308
|
+
C --> D[JWTProvider\nCognitoProvider · EntraIdProvider · IdentityPoolProvider]
|
|
309
|
+
D --> E[Token Validation\nJWKS cache]
|
|
310
|
+
E --> F[User object]
|
|
311
|
+
F --> G[GroupsProvider\nCognitoGroupsProvider · SqlGroupsProvider]
|
|
312
|
+
F --> H[PermissionsProvider\nSqlPermissionsProvider]
|
|
313
|
+
F --> I[RolesProvider\nCognitoGroupsAsRolesProvider]
|
|
314
|
+
G --> J[request.state.current_user]
|
|
315
|
+
H --> J
|
|
316
|
+
I --> J
|
|
317
|
+
J --> K[Guards\nrequire_user · require_groups\nrequire_roles · require_permissions]
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
## Core Components
|
|
321
|
+
|
|
322
|
+
| Component | Import path | Description |
|
|
323
|
+
| --------- | ----------- | ----------- |
|
|
324
|
+
| `JwtAuthMiddleware` | `auth_middleware` | ASGI middleware for JWT authentication |
|
|
325
|
+
| `BasicAuthMiddleware` | `auth_middleware` | ASGI middleware for Basic Auth |
|
|
326
|
+
| `JWTProvider` | `auth_middleware.contracts` | Abstract base for JWT providers |
|
|
327
|
+
| `GroupsProvider` | `auth_middleware.contracts` | Abstract base for group authorization |
|
|
328
|
+
| `RolesProvider` | `auth_middleware.contracts` | Abstract base for role authorization |
|
|
329
|
+
| `PermissionsProvider` | `auth_middleware.contracts` | Abstract base for permission authorization |
|
|
330
|
+
| `CredentialsRepository` | `auth_middleware.contracts` | Abstract base for Basic Auth credential lookup |
|
|
331
|
+
| `require_user` | `auth_middleware.guards` | Guard: requires authenticated user |
|
|
332
|
+
| `require_groups` | `auth_middleware.guards` | Guard: requires group membership |
|
|
333
|
+
| `require_roles` | `auth_middleware.guards` | Guard: requires role membership |
|
|
334
|
+
| `require_permissions` | `auth_middleware.guards` | Guard: requires specific permissions |
|
|
335
|
+
| `get_current_user` | `auth_middleware.guards` | Dependency: returns current user or `None` |
|
|
336
|
+
| `CognitoProvider` | `auth_middleware.providers.aws.cognito_provider` | AWS Cognito JWT provider |
|
|
337
|
+
| `CognitoGroupsProvider` | `auth_middleware.providers.aws.cognito_groups_provider` | Groups from `cognito:groups` claim |
|
|
338
|
+
| `CognitoGroupsAsRolesProvider` | `auth_middleware.providers.aws.cognito_groups_as_roles_provider` | Cognito groups mapped as roles |
|
|
339
|
+
| `IdentityPoolProvider` | `auth_middleware.providers.aws.identity_pool_provider` | Cognito + Identity Pool |
|
|
340
|
+
| `EntraIDProvider` | `auth_middleware.providers.azure.entra_id_provider` | Azure Entra ID JWT provider |
|
|
341
|
+
| `SqlGroupsProvider` | `auth_middleware.providers.sqlalchemy.sql_groups_provider` | DB-backed groups |
|
|
342
|
+
| `SqlPermissionsProvider` | `auth_middleware.providers.sqlalchemy.sql_permissions_provider` | DB-backed permissions |
|
|
343
|
+
|
|
344
|
+
### Authenticated User Properties
|
|
345
|
+
|
|
346
|
+
Available on `request.state.current_user`:
|
|
347
|
+
|
|
348
|
+
| Property | Type | Description |
|
|
349
|
+
| -------- | ---- | ----------- |
|
|
350
|
+
| `id` | `str` | Unique identifier from the identity provider |
|
|
351
|
+
| `name` | `str \| None` | Display name |
|
|
352
|
+
| `email` | `EmailStr \| None` | Email address |
|
|
353
|
+
| `groups` | `list[str]` (async) | User groups |
|
|
354
|
+
| `roles` | `list[str]` (async) | User roles |
|
|
355
|
+
| `permissions` | `list[str]` (async) | User permissions |
|
|
356
|
+
|
|
357
|
+
## Development
|
|
358
|
+
|
|
359
|
+
```bash
|
|
360
|
+
# Clone and set up
|
|
361
|
+
git clone https://github.com/impalah/auth-middleware.git
|
|
362
|
+
cd auth-middleware
|
|
363
|
+
make venv
|
|
364
|
+
|
|
365
|
+
# Quality checks
|
|
366
|
+
make test # run test suite
|
|
367
|
+
make type-check # mypy strict
|
|
368
|
+
make lint # ruff
|
|
369
|
+
make check # all checks at once
|
|
370
|
+
|
|
371
|
+
# Build & publish
|
|
372
|
+
make build
|
|
373
|
+
make publish
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
## Contributing
|
|
377
|
+
|
|
378
|
+
1. Fork the repository
|
|
379
|
+
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
|
|
380
|
+
3. Commit your changes (`git commit -m 'feat: add amazing feature'`)
|
|
381
|
+
4. Push the branch (`git push origin feature/amazing-feature`)
|
|
382
|
+
5. Open a Pull Request
|
|
383
|
+
|
|
384
|
+
## License
|
|
385
|
+
|
|
386
|
+
MIT — see [LICENSE](LICENSE) for details.
|
|
387
|
+
|
|
388
|
+
## Links
|
|
389
|
+
|
|
390
|
+
- **Documentation**: [https://impalah.github.io/auth-middleware/](https://impalah.github.io/auth-middleware/)
|
|
391
|
+
- **PyPI Package**: [https://pypi.org/project/auth-middleware/](https://pypi.org/project/auth-middleware/)
|
|
392
|
+
- **Source Code**: [https://github.com/impalah/auth-middleware](https://github.com/impalah/auth-middleware)
|
|
393
|
+
- **Bug Reports**: [GitHub Issues](https://github.com/impalah/auth-middleware/issues)
|
|
394
|
+
|
|
395
|
+
---
|
|
396
|
+
|
|
397
|
+
Created by [impalah](https://github.com/impalah) — Made for modern Python async applications
|