auth-middleware 0.3.4__tar.gz → 0.3.7__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.
Files changed (361) hide show
  1. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/PKG-INFO +2 -2
  2. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/.buildinfo +1 -1
  3. auth_middleware-0.3.7/docs/.doctrees/cognito_provider.doctree +0 -0
  4. auth_middleware-0.3.7/docs/.doctrees/environment.pickle +0 -0
  5. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/.doctrees/functions.doctree +0 -0
  6. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/.doctrees/groups-provider.doctree +0 -0
  7. auth_middleware-0.3.7/docs/.doctrees/jwt_auth_provider.doctree +0 -0
  8. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/.doctrees/permissions-provider.doctree +0 -0
  9. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_modules/auth_middleware/functions.html +51 -2
  10. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_modules/auth_middleware/jwt_auth_middleware.html +2 -2
  11. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_modules/auth_middleware/jwt_bearer_manager.html +16 -7
  12. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_modules/auth_middleware/providers/authn/cognito_authz_provider_settings.html +2 -2
  13. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_modules/auth_middleware/providers/authn/cognito_provider.html +63 -66
  14. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_modules/auth_middleware/providers/authn/jwt_provider.html +8 -5
  15. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_modules/auth_middleware/providers/authn/jwt_provider_settings.html +2 -2
  16. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_modules/auth_middleware/providers/authz/cognito_groups_provider.html +9 -8
  17. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_modules/auth_middleware/providers/authz/groups_provider.html +4 -5
  18. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_modules/auth_middleware/providers/authz/permissions_provider.html +4 -5
  19. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_modules/auth_middleware/providers/authz/sql_groups_provider.html +4 -5
  20. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_modules/auth_middleware/providers/authz/sql_permissions_provider.html +4 -5
  21. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_modules/index.html +2 -2
  22. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/documentation_options.js +1 -1
  23. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/api.html +2 -2
  24. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/auth-authn.html +2 -2
  25. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/cognito_provider.html +5 -5
  26. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/entra_id_provider.html +2 -2
  27. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/exceptions.html +2 -2
  28. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/extending-authz-providers.html +2 -2
  29. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/functions.html +35 -2
  30. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/genindex.html +6 -2
  31. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/groups-provider.html +5 -5
  32. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/index.html +2 -2
  33. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/infrastructure/cognito-setup.html +2 -2
  34. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/infrastructure/entra-id-setup.html +2 -2
  35. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/infrastructure/google-setup.html +2 -2
  36. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/infrastructure.html +2 -2
  37. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/installation.html +2 -2
  38. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/jwks-cache.html +2 -2
  39. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/jwt_auth_middleware.html +2 -2
  40. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/jwt_auth_provider.html +4 -4
  41. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/jwt_bearer_manager.html +2 -2
  42. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/middleware-configuration.html +2 -2
  43. auth_middleware-0.3.7/docs/objects.inv +0 -0
  44. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/permissions-provider.html +4 -4
  45. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/py-modindex.html +2 -2
  46. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/search.html +2 -2
  47. auth_middleware-0.3.7/docs/searchindex.js +1 -0
  48. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/services.html +2 -2
  49. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/types.html +2 -2
  50. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/user-guide.html +2 -2
  51. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/user-property.html +2 -2
  52. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs_source/conf.py +1 -1
  53. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/pyproject.toml +3 -2
  54. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/__init__.py +1 -1
  55. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/auth_provider.py +2 -5
  56. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/functions.py +43 -0
  57. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/jwt_bearer_manager.py +13 -4
  58. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/providers/authn/cognito_provider.py +61 -64
  59. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/providers/authn/identity_pool_provider.py +1 -1
  60. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/providers/authn/jwt_provider.py +6 -3
  61. auth_middleware-0.3.7/src/auth_middleware/providers/authz/cognito_groups_as_roles_provider.py +53 -0
  62. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/providers/authz/cognito_groups_provider.py +7 -6
  63. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/providers/authz/groups_provider.py +2 -3
  64. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/providers/authz/permissions_provider.py +2 -3
  65. auth_middleware-0.3.7/src/auth_middleware/providers/authz/roles_provider.py +26 -0
  66. auth_middleware-0.3.7/src/auth_middleware/providers/authz/sql_base_model.py +27 -0
  67. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/providers/authz/sql_groups_provider.py +2 -3
  68. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/providers/authz/sql_permissions_provider.py +2 -3
  69. auth_middleware-0.3.7/src/auth_middleware/providers/cognito/__init__.py +3 -0
  70. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/providers/entra_id/entra_id_provider.py +16 -20
  71. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/providers/entra_id/utils.py +0 -2
  72. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/repository/credentials_repository.py +0 -4
  73. auth_middleware-0.3.7/src/auth_middleware/role_checker.py +30 -0
  74. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/services/m2m_detector.py +5 -4
  75. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/services/rate_limiter.py +52 -65
  76. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/types/user.py +47 -33
  77. auth_middleware-0.3.7/tests/test_abstract_stubs.py +69 -0
  78. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/test_cli.py +4 -2
  79. auth_middleware-0.3.7/tests/test_cognito_groups_as_roles_provider.py +103 -0
  80. auth_middleware-0.3.7/tests/test_cognito_profile_provider.py +133 -0
  81. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/test_cognito_provider.py +83 -91
  82. auth_middleware-0.3.7/tests/test_cognito_provider_clean.py +212 -0
  83. auth_middleware-0.3.7/tests/test_entra_id_provider.py +322 -0
  84. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/test_functions.py +62 -0
  85. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/test_identity_pool_provider.py +2 -2
  86. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/test_jwt_bearer_manager.py +13 -10
  87. auth_middleware-0.3.7/tests/test_role_checker.py +93 -0
  88. auth_middleware-0.3.7/tests/test_sql_groups_provider.py +119 -0
  89. auth_middleware-0.3.7/tests/test_sql_permissions_provider.py +118 -0
  90. auth_middleware-0.3.7/tests/test_user_comprehensive.py +156 -0
  91. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/uv.lock +18 -58
  92. auth_middleware-0.3.4/docs/.doctrees/cognito_provider.doctree +0 -0
  93. auth_middleware-0.3.4/docs/.doctrees/environment.pickle +0 -0
  94. auth_middleware-0.3.4/docs/.doctrees/jwt_auth_provider.doctree +0 -0
  95. auth_middleware-0.3.4/docs/objects.inv +0 -0
  96. auth_middleware-0.3.4/docs/searchindex.js +0 -1
  97. auth_middleware-0.3.4/src/auth_middleware/providers/authz/sql_base_model.py +0 -23
  98. auth_middleware-0.3.4/tests/__init__.py +0 -0
  99. auth_middleware-0.3.4/tests/test_cognito_provider_clean.py +0 -0
  100. auth_middleware-0.3.4/tests/test_sql_groups_provider.py +0 -0
  101. auth_middleware-0.3.4/tests/test_sql_permissions_provider.py +0 -0
  102. auth_middleware-0.3.4/tests/test_user_comprehensive.py +0 -0
  103. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/.coveragerc +0 -0
  104. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/.devcontainer/.bashrc +0 -0
  105. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/.devcontainer/Dockerfile +0 -0
  106. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/.devcontainer/QUICKSTART.md +0 -0
  107. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/.devcontainer/README.md +0 -0
  108. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/.devcontainer/devcontainer.json +0 -0
  109. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/.devcontainer/start.sh +0 -0
  110. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/.devcontainer/uv.toml +0 -0
  111. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/.devcontainer/verify-setup.sh +0 -0
  112. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/.flake8 +0 -0
  113. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/.github/workflows/release.yml +0 -0
  114. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/.gitignore +0 -0
  115. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/.python-version +0 -0
  116. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/.sonar/.sonar_lock +0 -0
  117. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/.sonar/report-task.txt +0 -0
  118. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/.sonarlint/connectedMode.json +0 -0
  119. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/.vscode/extensions.json +0 -0
  120. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/.vscode/launch.json +0 -0
  121. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/.vscode/settings.json +0 -0
  122. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/LICENSE +0 -0
  123. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/README.md +0 -0
  124. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/alembic/README +0 -0
  125. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/alembic/env.py +0 -0
  126. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/alembic/script.py.mako +0 -0
  127. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/alembic/versions/de961fac6f27_initial_migration.py +0 -0
  128. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/alembic.ini +0 -0
  129. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/.buildinfo.bak +0 -0
  130. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/.doctrees/__intersphinx_cache__/fastapi_objects.inv +0 -0
  131. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/.doctrees/__intersphinx_cache__/python_objects.inv +0 -0
  132. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/.doctrees/api.doctree +0 -0
  133. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/.doctrees/auth-authn.doctree +0 -0
  134. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/.doctrees/entra_id_provider.doctree +0 -0
  135. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/.doctrees/exceptions.doctree +0 -0
  136. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/.doctrees/extending-authz-providers.doctree +0 -0
  137. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/.doctrees/index.doctree +0 -0
  138. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/.doctrees/infrastructure/cognito-setup.doctree +0 -0
  139. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/.doctrees/infrastructure/entra-id-setup.doctree +0 -0
  140. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/.doctrees/infrastructure/google-setup.doctree +0 -0
  141. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/.doctrees/infrastructure.doctree +0 -0
  142. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/.doctrees/installation.doctree +0 -0
  143. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/.doctrees/jwks-cache.doctree +0 -0
  144. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/.doctrees/jwt_auth_middleware.doctree +0 -0
  145. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/.doctrees/jwt_bearer_manager.doctree +0 -0
  146. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/.doctrees/middleware-configuration.doctree +0 -0
  147. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/.doctrees/services.doctree +0 -0
  148. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/.doctrees/types.doctree +0 -0
  149. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/.doctrees/user-guide.doctree +0 -0
  150. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/.doctrees/user-property.doctree +0 -0
  151. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/.keep +0 -0
  152. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/.nojekyll +0 -0
  153. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_sources/api.rst.txt +0 -0
  154. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_sources/auth-authn.rst.txt +0 -0
  155. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_sources/cognito_provider.rst.txt +0 -0
  156. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_sources/entra_id_provider.rst.txt +0 -0
  157. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_sources/exceptions.rst.txt +0 -0
  158. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_sources/extending-authz-providers.rst.txt +0 -0
  159. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_sources/functions.rst.txt +0 -0
  160. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_sources/groups-provider.rst.txt +0 -0
  161. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_sources/index.rst.txt +0 -0
  162. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_sources/infrastructure/cognito-setup.rst.txt +0 -0
  163. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_sources/infrastructure/entra-id-setup.rst.txt +0 -0
  164. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_sources/infrastructure/google-setup.rst.txt +0 -0
  165. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_sources/infrastructure.rst.txt +0 -0
  166. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_sources/installation.rst.txt +0 -0
  167. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_sources/jwks-cache.rst.txt +0 -0
  168. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_sources/jwt_auth_middleware.rst.txt +0 -0
  169. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_sources/jwt_auth_provider.rst.txt +0 -0
  170. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_sources/jwt_bearer_manager.rst.txt +0 -0
  171. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_sources/middleware-configuration.rst.txt +0 -0
  172. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_sources/permissions-provider.rst.txt +0 -0
  173. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_sources/services.rst.txt +0 -0
  174. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_sources/types.rst.txt +0 -0
  175. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_sources/user-guide.rst.txt +0 -0
  176. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_sources/user-property.rst.txt +0 -0
  177. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/_sphinx_javascript_frameworks_compat.js +0 -0
  178. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/base-stemmer.js +0 -0
  179. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/basic.css +0 -0
  180. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/css/badge_only.css +0 -0
  181. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
  182. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
  183. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
  184. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
  185. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/css/fonts/fontawesome-webfont.eot +0 -0
  186. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/css/fonts/fontawesome-webfont.svg +0 -0
  187. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/css/fonts/fontawesome-webfont.ttf +0 -0
  188. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/css/fonts/fontawesome-webfont.woff +0 -0
  189. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
  190. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/css/fonts/lato-bold-italic.woff +0 -0
  191. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/css/fonts/lato-bold-italic.woff2 +0 -0
  192. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/css/fonts/lato-bold.woff +0 -0
  193. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/css/fonts/lato-bold.woff2 +0 -0
  194. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/css/fonts/lato-normal-italic.woff +0 -0
  195. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/css/fonts/lato-normal-italic.woff2 +0 -0
  196. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/css/fonts/lato-normal.woff +0 -0
  197. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/css/fonts/lato-normal.woff2 +0 -0
  198. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/css/theme.css +0 -0
  199. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/doctools.js +0 -0
  200. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/english-stemmer.js +0 -0
  201. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/file.png +0 -0
  202. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/fonts/Lato/lato-bold.eot +0 -0
  203. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/fonts/Lato/lato-bold.ttf +0 -0
  204. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/fonts/Lato/lato-bold.woff +0 -0
  205. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/fonts/Lato/lato-bold.woff2 +0 -0
  206. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/fonts/Lato/lato-bolditalic.eot +0 -0
  207. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/fonts/Lato/lato-bolditalic.ttf +0 -0
  208. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/fonts/Lato/lato-bolditalic.woff +0 -0
  209. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/fonts/Lato/lato-bolditalic.woff2 +0 -0
  210. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/fonts/Lato/lato-italic.eot +0 -0
  211. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/fonts/Lato/lato-italic.ttf +0 -0
  212. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/fonts/Lato/lato-italic.woff +0 -0
  213. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/fonts/Lato/lato-italic.woff2 +0 -0
  214. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/fonts/Lato/lato-regular.eot +0 -0
  215. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/fonts/Lato/lato-regular.ttf +0 -0
  216. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/fonts/Lato/lato-regular.woff +0 -0
  217. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/fonts/Lato/lato-regular.woff2 +0 -0
  218. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot +0 -0
  219. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf +0 -0
  220. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff +0 -0
  221. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 +0 -0
  222. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot +0 -0
  223. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf +0 -0
  224. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff +0 -0
  225. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 +0 -0
  226. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/jquery.js +0 -0
  227. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/js/badge_only.js +0 -0
  228. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/js/html5shiv-printshiv.min.js +0 -0
  229. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/js/html5shiv.min.js +0 -0
  230. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/js/theme.js +0 -0
  231. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/js/versions.js +0 -0
  232. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/language_data.js +0 -0
  233. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/minus.png +0 -0
  234. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/plus.png +0 -0
  235. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/pygments.css +0 -0
  236. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/searchtools.js +0 -0
  237. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs/_static/sphinx_highlight.js +0 -0
  238. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs_source/Makefile +0 -0
  239. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs_source/api.rst +0 -0
  240. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs_source/auth-authn.rst +0 -0
  241. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs_source/cognito_provider.rst +0 -0
  242. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs_source/entra_id_provider.rst +0 -0
  243. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs_source/exceptions.rst +0 -0
  244. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs_source/extending-authz-providers.rst +0 -0
  245. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs_source/functions.rst +0 -0
  246. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs_source/groups-provider.rst +0 -0
  247. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs_source/index.rst +0 -0
  248. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs_source/infrastructure/cognito-setup.rst +0 -0
  249. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs_source/infrastructure/entra-id-setup.rst +0 -0
  250. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs_source/infrastructure/google-setup.rst +0 -0
  251. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs_source/infrastructure.rst +0 -0
  252. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs_source/installation.rst +0 -0
  253. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs_source/jwks-cache.rst +0 -0
  254. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs_source/jwt_auth_middleware.rst +0 -0
  255. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs_source/jwt_auth_provider.rst +0 -0
  256. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs_source/jwt_bearer_manager.rst +0 -0
  257. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs_source/make.bat +0 -0
  258. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs_source/middleware-configuration.rst +0 -0
  259. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs_source/permissions-provider.rst +0 -0
  260. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs_source/services.rst +0 -0
  261. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs_source/types.rst +0 -0
  262. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs_source/user-guide.rst +0 -0
  263. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/docs_source/user-property.rst +0 -0
  264. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/examples/audit_example.py +0 -0
  265. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/examples/auth_examples.py +0 -0
  266. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/examples/jwks_cache_example.py +0 -0
  267. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/examples/m2m_detection_example.py +0 -0
  268. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/examples/metrics_example.py +0 -0
  269. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/examples/rate_limiting_example.py +0 -0
  270. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/makefile +0 -0
  271. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/scripts/README.md +0 -0
  272. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/scripts/update_version.py +0 -0
  273. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/sonar-project.properties +0 -0
  274. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/basic_auth_middleware.py +0 -0
  275. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/cli.py +0 -0
  276. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/commands/__init__.py +0 -0
  277. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/exceptions/__init__.py +0 -0
  278. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/exceptions/invalid_authorization_exception.py +0 -0
  279. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/exceptions/invalid_credentials_exception.py +0 -0
  280. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/exceptions/invalid_token_exception.py +0 -0
  281. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/group_checker.py +0 -0
  282. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/jwt_auth_middleware.py +0 -0
  283. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/logging.py +0 -0
  284. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/permissions_checker.py +0 -0
  285. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/providers/__init__.py +0 -0
  286. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/providers/authn/__init__.py +0 -0
  287. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/providers/authn/cognito_authz_provider_settings.py +0 -0
  288. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/providers/authn/identity_pool_client.py +0 -0
  289. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/providers/authn/identity_pool_settings.py +0 -0
  290. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/providers/authn/jwt_provider_settings.py +0 -0
  291. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/providers/authz/__init__.py +0 -0
  292. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/providers/authz/async_database.py +0 -0
  293. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/providers/authz/async_database_settings.py +0 -0
  294. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/providers/cognito/utils.py +0 -0
  295. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/providers/entra_id/__init__.py +0 -0
  296. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/providers/entra_id/settings.py +0 -0
  297. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/providers/exceptions/aws_exception.py +0 -0
  298. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/providers/exceptions/azure_exception.py +0 -0
  299. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/providers/profile/__init__.py +0 -0
  300. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/providers/profile/cognito_profile_provider.py +0 -0
  301. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/providers/profile/profile_provider.py +0 -0
  302. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/repository/__init__.py +0 -0
  303. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/repository/json_credentials_repository.py +0 -0
  304. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/repository/settings.py +0 -0
  305. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/services/__init__.py +0 -0
  306. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/services/audit.py +0 -0
  307. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/services/metrics.py +0 -0
  308. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/settings.py +0 -0
  309. {auth_middleware-0.3.4/src/auth_middleware/providers/cognito → auth_middleware-0.3.7/src/auth_middleware/types}/__init__.py +0 -0
  310. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/types/aws_credentials.py +0 -0
  311. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/types/jwt.py +0 -0
  312. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/src/auth_middleware/types/user_credentials.py +0 -0
  313. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/0.APITesting/_Auth/(No) Get Id Token.bru +0 -0
  314. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/0.APITesting/_Auth/Get Token (client credentials).bru +0 -0
  315. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/0.APITesting/_Auth/Login.bru +0 -0
  316. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/0.APITesting/bruno.json +0 -0
  317. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/0.APITesting/environments/Development.bru +0 -0
  318. {auth_middleware-0.3.4/src/auth_middleware/types → auth_middleware-0.3.7/tests}/__init__.py +0 -0
  319. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/conftest.py +0 -0
  320. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/test_async_database.py +0 -0
  321. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/test_audit.py +0 -0
  322. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/test_auth_provider.py +0 -0
  323. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/test_aws_credentials.py +0 -0
  324. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/test_base_provider_comprehensive.py +0 -0
  325. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/test_basic_auth_middleware.py +0 -0
  326. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/test_basic_auth_middleware_clean.py +0 -0
  327. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/test_cognito_utils.py +0 -0
  328. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/test_dummy.py +0 -0
  329. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/test_entra_id_init.py +0 -0
  330. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/test_entra_id_settings.py +0 -0
  331. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/test_entra_id_utils.py +0 -0
  332. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/test_exceptions.py +0 -0
  333. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/test_exceptions_comprehensive.py +0 -0
  334. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/test_functions_comprehensive.py +0 -0
  335. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/test_group_checker.py +0 -0
  336. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/test_group_checker_comprehensive.py +0 -0
  337. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/test_groups_provider.py +0 -0
  338. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/test_groups_provider_comprehensive.py +0 -0
  339. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/test_identity_pool_client.py +0 -0
  340. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/test_identity_pool_settings.py +0 -0
  341. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/test_json_credentials_repository.py +0 -0
  342. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/test_jwks_cache_improvements.py +0 -0
  343. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/test_jwt_auth_middleware.py +0 -0
  344. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/test_jwt_auth_middleware_comprehensive.py +0 -0
  345. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/test_jwt_provider.py +0 -0
  346. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/test_jwt_provider_comprehensive.py +0 -0
  347. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/test_jwt_provider_settings.py +0 -0
  348. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/test_jwt_provider_settings_comprehensive.py +0 -0
  349. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/test_jwt_types.py +0 -0
  350. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/test_jwt_types_comprehensive.py +0 -0
  351. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/test_logging.py +0 -0
  352. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/test_m2m_detector.py +0 -0
  353. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/test_metrics.py +0 -0
  354. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/test_permissions_checker.py +0 -0
  355. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/test_permissions_checker_comprehensive.py +0 -0
  356. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/test_permissions_provider.py +0 -0
  357. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/test_permissions_provider_comprehensive.py +0 -0
  358. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/test_rate_limiter.py +0 -0
  359. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/test_repository_settings.py +0 -0
  360. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/test_types.py +0 -0
  361. {auth_middleware-0.3.4 → auth_middleware-0.3.7}/tests/test_user_m2m.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: auth-middleware
3
- Version: 0.3.4
3
+ Version: 0.3.7
4
4
  Summary: Async Auth Middleware for FastAPI/Starlette
5
5
  Project-URL: Homepage, https://impalah.github.io/auth-middleware/
6
6
  Project-URL: Documentation, https://impalah.github.io/auth-middleware/
@@ -23,11 +23,11 @@ Requires-Dist: asyncpg>=0.31.0
23
23
  Requires-Dist: click>=8.3.1
24
24
  Requires-Dist: fastapi>=0.128.0
25
25
  Requires-Dist: httpx>=0.28.1
26
+ Requires-Dist: joserfc>=1.6.3
26
27
  Requires-Dist: loguru>=0.7.3
27
28
  Requires-Dist: pydantic-settings>=2.12.0
28
29
  Requires-Dist: pydantic[email]>=2.12.5
29
30
  Requires-Dist: python-dotenv>=1.2.1
30
- Requires-Dist: python-jose[cryptography]>=3.5.0
31
31
  Requires-Dist: sqlalchemy[asyncio]>=2.0.46
32
32
  Requires-Dist: svix-ksuid>=0.6.2
33
33
  Description-Content-Type: text/markdown
@@ -1,4 +1,4 @@
1
1
  # Sphinx build info version 1
2
2
  # This file records the configuration used when building these files. When it is not found, a full rebuild will be done.
3
- config: bd7f6de384b115bbe302eeff079397ea
3
+ config: 1aae05accc724cdfa9439808334fd364
4
4
  tags: 645f666f9bcd5a90fca523b33c5a78b7
@@ -5,7 +5,7 @@
5
5
  <head>
6
6
  <meta charset="utf-8" />
7
7
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
8
- <title>auth_middleware.functions &mdash; Auth Middleware 0.3.4 documentation</title>
8
+ <title>auth_middleware.functions &mdash; Auth Middleware 0.3.7 documentation</title>
9
9
  <link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
10
10
  <link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=9edc463e" />
11
11
 
@@ -13,7 +13,7 @@
13
13
  <link rel="canonical" href="/auth-middleware/_modules/auth_middleware/functions.html" />
14
14
  <script src="../../_static/jquery.js?v=5d32c60e"></script>
15
15
  <script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
16
- <script src="../../_static/documentation_options.js?v=1e28cc32"></script>
16
+ <script src="../../_static/documentation_options.js?v=29d04658"></script>
17
17
  <script src="../../_static/doctools.js?v=fd6eb6e6"></script>
18
18
  <script src="../../_static/sphinx_highlight.js?v=6ffebe34"></script>
19
19
  <script src="../../_static/js/theme.js"></script>
@@ -155,6 +155,7 @@
155
155
 
156
156
  <span class="kn">from</span><span class="w"> </span><span class="nn">auth_middleware.group_checker</span><span class="w"> </span><span class="kn">import</span> <span class="n">GroupChecker</span>
157
157
  <span class="kn">from</span><span class="w"> </span><span class="nn">auth_middleware.permissions_checker</span><span class="w"> </span><span class="kn">import</span> <span class="n">PermissionsChecker</span>
158
+ <span class="kn">from</span><span class="w"> </span><span class="nn">auth_middleware.role_checker</span><span class="w"> </span><span class="kn">import</span> <span class="n">RoleChecker</span>
158
159
  <span class="kn">from</span><span class="w"> </span><span class="nn">auth_middleware.settings</span><span class="w"> </span><span class="kn">import</span> <span class="n">settings</span>
159
160
 
160
161
 
@@ -260,6 +261,54 @@
260
261
 
261
262
 
262
263
 
264
+ <div class="viewcode-block" id="require_roles">
265
+ <a class="viewcode-back" href="../../functions.html#auth_middleware.functions.require_roles">[docs]</a>
266
+ <span class="k">def</span><span class="w"> </span><span class="nf">require_roles</span><span class="p">(</span><span class="n">allowed_roles</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">str</span><span class="p">])</span> <span class="o">-&gt;</span> <span class="n">Callable</span><span class="p">[</span><span class="o">...</span><span class="p">,</span> <span class="n">Any</span><span class="p">]:</span>
267
+ <span class="w"> </span><span class="sd">&quot;&quot;&quot;Check if the user has the required roles</span>
268
+
269
+ <span class="sd"> Args:</span>
270
+ <span class="sd"> allowed_roles (List[str]): a list of required roles</span>
271
+ <span class="sd"> &quot;&quot;&quot;</span>
272
+
273
+ <span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">_role_checker</span><span class="p">(</span><span class="n">request</span><span class="p">:</span> <span class="n">Request</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
274
+ <span class="w"> </span><span class="sd">&quot;&quot;&quot;Calls the RoleChecker class to check if</span>
275
+ <span class="sd"> the user has the required roles</span>
276
+
277
+ <span class="sd"> Args:</span>
278
+ <span class="sd"> request (Request): FastAPI request object</span>
279
+
280
+ <span class="sd"> Returns:</span>
281
+ <span class="sd"> RoleChecker: role checker object</span>
282
+ <span class="sd"> &quot;&quot;&quot;</span>
283
+ <span class="n">checker</span> <span class="o">=</span> <span class="n">RoleChecker</span><span class="p">(</span><span class="n">allowed_roles</span><span class="p">)</span>
284
+ <span class="k">await</span> <span class="n">checker</span><span class="p">(</span><span class="n">request</span><span class="p">)</span>
285
+
286
+ <span class="k">return</span> <span class="n">_role_checker</span></div>
287
+
288
+
289
+
290
+ <div class="viewcode-block" id="has_roles">
291
+ <a class="viewcode-back" href="../../functions.html#auth_middleware.functions.has_roles">[docs]</a>
292
+ <span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">has_roles</span><span class="p">(</span><span class="n">request</span><span class="p">:</span> <span class="n">Request</span><span class="p">,</span> <span class="n">allowed_roles</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">str</span><span class="p">])</span> <span class="o">-&gt;</span> <span class="nb">bool</span><span class="p">:</span>
293
+ <span class="w"> </span><span class="sd">&quot;&quot;&quot;Check if the user has the required roles asynchronously</span>
294
+
295
+ <span class="sd"> Args:</span>
296
+ <span class="sd"> request (Request): FastAPI request object</span>
297
+ <span class="sd"> allowed_roles (List[str]): a list of required roles</span>
298
+
299
+ <span class="sd"> Returns:</span>
300
+ <span class="sd"> bool: True if the user has the required roles, False otherwise</span>
301
+ <span class="sd"> &quot;&quot;&quot;</span>
302
+ <span class="n">checker</span> <span class="o">=</span> <span class="n">RoleChecker</span><span class="p">(</span><span class="n">allowed_roles</span><span class="o">=</span><span class="n">allowed_roles</span><span class="p">)</span>
303
+ <span class="k">try</span><span class="p">:</span>
304
+ <span class="k">await</span> <span class="n">checker</span><span class="p">(</span><span class="n">request</span><span class="p">)</span>
305
+ <span class="k">return</span> <span class="kc">True</span>
306
+ <span class="k">except</span> <span class="n">HTTPException</span><span class="p">:</span>
307
+ <span class="k">return</span> <span class="kc">False</span></div>
308
+
309
+
310
+
311
+
263
312
  <div class="viewcode-block" id="require_user">
264
313
  <a class="viewcode-back" href="../../functions.html#auth_middleware.functions.require_user">[docs]</a>
265
314
  <span class="k">def</span><span class="w"> </span><span class="nf">require_user</span><span class="p">()</span> <span class="o">-&gt;</span> <span class="n">Callable</span><span class="p">[</span><span class="o">...</span><span class="p">,</span> <span class="n">Any</span><span class="p">]:</span>
@@ -5,7 +5,7 @@
5
5
  <head>
6
6
  <meta charset="utf-8" />
7
7
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
8
- <title>auth_middleware.jwt_auth_middleware &mdash; Auth Middleware 0.3.4 documentation</title>
8
+ <title>auth_middleware.jwt_auth_middleware &mdash; Auth Middleware 0.3.7 documentation</title>
9
9
  <link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
10
10
  <link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=9edc463e" />
11
11
 
@@ -13,7 +13,7 @@
13
13
  <link rel="canonical" href="/auth-middleware/_modules/auth_middleware/jwt_auth_middleware.html" />
14
14
  <script src="../../_static/jquery.js?v=5d32c60e"></script>
15
15
  <script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
16
- <script src="../../_static/documentation_options.js?v=1e28cc32"></script>
16
+ <script src="../../_static/documentation_options.js?v=29d04658"></script>
17
17
  <script src="../../_static/doctools.js?v=fd6eb6e6"></script>
18
18
  <script src="../../_static/sphinx_highlight.js?v=6ffebe34"></script>
19
19
  <script src="../../_static/js/theme.js"></script>
@@ -5,7 +5,7 @@
5
5
  <head>
6
6
  <meta charset="utf-8" />
7
7
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
8
- <title>auth_middleware.jwt_bearer_manager &mdash; Auth Middleware 0.3.4 documentation</title>
8
+ <title>auth_middleware.jwt_bearer_manager &mdash; Auth Middleware 0.3.7 documentation</title>
9
9
  <link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=b86133f3" />
10
10
  <link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=9edc463e" />
11
11
 
@@ -13,7 +13,7 @@
13
13
  <link rel="canonical" href="/auth-middleware/_modules/auth_middleware/jwt_bearer_manager.html" />
14
14
  <script src="../../_static/jquery.js?v=5d32c60e"></script>
15
15
  <script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
16
- <script src="../../_static/documentation_options.js?v=1e28cc32"></script>
16
+ <script src="../../_static/documentation_options.js?v=29d04658"></script>
17
17
  <script src="../../_static/doctools.js?v=fd6eb6e6"></script>
18
18
  <script src="../../_static/sphinx_highlight.js?v=6ffebe34"></script>
19
19
  <script src="../../_static/js/theme.js"></script>
@@ -151,9 +151,12 @@
151
151
  <div itemprop="articleBody">
152
152
 
153
153
  <h1>Source code for auth_middleware.jwt_bearer_manager</h1><div class="highlight"><pre>
154
- <span></span><span class="kn">from</span><span class="w"> </span><span class="nn">fastapi</span><span class="w"> </span><span class="kn">import</span> <span class="n">HTTPException</span>
154
+ <span></span><span class="kn">import</span><span class="w"> </span><span class="nn">base64</span>
155
+ <span class="kn">import</span><span class="w"> </span><span class="nn">json</span>
156
+
157
+ <span class="kn">from</span><span class="w"> </span><span class="nn">fastapi</span><span class="w"> </span><span class="kn">import</span> <span class="n">HTTPException</span>
155
158
  <span class="kn">from</span><span class="w"> </span><span class="nn">fastapi.security</span><span class="w"> </span><span class="kn">import</span> <span class="n">HTTPAuthorizationCredentials</span><span class="p">,</span> <span class="n">HTTPBearer</span>
156
- <span class="kn">from</span><span class="w"> </span><span class="nn">jose</span><span class="w"> </span><span class="kn">import</span> <span class="n">JWTError</span><span class="p">,</span> <span class="n">jwt</span>
159
+ <span class="kn">from</span><span class="w"> </span><span class="nn">joserfc.errors</span><span class="w"> </span><span class="kn">import</span> <span class="n">JoseError</span>
157
160
  <span class="kn">from</span><span class="w"> </span><span class="nn">starlette.requests</span><span class="w"> </span><span class="kn">import</span> <span class="n">Request</span>
158
161
  <span class="kn">from</span><span class="w"> </span><span class="nn">starlette.status</span><span class="w"> </span><span class="kn">import</span> <span class="n">HTTP_403_FORBIDDEN</span>
159
162
 
@@ -216,15 +219,21 @@
216
219
  <span class="n">message</span><span class="p">,</span> <span class="n">signature</span> <span class="o">=</span> <span class="n">jwt_token</span><span class="o">.</span><span class="n">rsplit</span><span class="p">(</span><span class="s2">&quot;.&quot;</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
217
220
 
218
221
  <span class="k">try</span><span class="p">:</span>
222
+ <span class="n">_parts</span> <span class="o">=</span> <span class="n">jwt_token</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;.&quot;</span><span class="p">)</span>
223
+
224
+ <span class="k">def</span><span class="w"> </span><span class="nf">_b64d</span><span class="p">(</span><span class="n">part</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">dict</span><span class="p">:</span> <span class="c1"># type: ignore[return]</span>
225
+ <span class="n">padded</span> <span class="o">=</span> <span class="n">part</span> <span class="o">+</span> <span class="s2">&quot;=&quot;</span> <span class="o">*</span> <span class="p">(</span><span class="o">-</span><span class="nb">len</span><span class="p">(</span><span class="n">part</span><span class="p">)</span> <span class="o">%</span> <span class="mi">4</span><span class="p">)</span>
226
+ <span class="k">return</span> <span class="n">json</span><span class="o">.</span><span class="n">loads</span><span class="p">(</span><span class="n">base64</span><span class="o">.</span><span class="n">urlsafe_b64decode</span><span class="p">(</span><span class="n">padded</span><span class="p">))</span>
227
+
219
228
  <span class="n">jwt_credentials</span> <span class="o">=</span> <span class="n">JWTAuthorizationCredentials</span><span class="p">(</span>
220
229
  <span class="n">jwt_token</span><span class="o">=</span><span class="n">jwt_token</span><span class="p">,</span>
221
- <span class="n">header</span><span class="o">=</span><span class="n">jwt</span><span class="o">.</span><span class="n">get_unverified_header</span><span class="p">(</span><span class="n">jwt_token</span><span class="p">),</span>
222
- <span class="n">claims</span><span class="o">=</span><span class="n">jwt</span><span class="o">.</span><span class="n">get_unverified_claims</span><span class="p">(</span><span class="n">jwt_token</span><span class="p">),</span>
230
+ <span class="n">header</span><span class="o">=</span><span class="n">_b64d</span><span class="p">(</span><span class="n">_parts</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span>
231
+ <span class="n">claims</span><span class="o">=</span><span class="n">_b64d</span><span class="p">(</span><span class="n">_parts</span><span class="p">[</span><span class="mi">1</span><span class="p">]),</span>
223
232
  <span class="n">signature</span><span class="o">=</span><span class="n">signature</span><span class="p">,</span>
224
233
  <span class="n">message</span><span class="o">=</span><span class="n">message</span><span class="p">,</span>
225
234
  <span class="p">)</span>
226
235
 
227
- <span class="k">except</span> <span class="n">JWTError</span> <span class="k">as</span> <span class="n">jwt_err</span><span class="p">:</span>
236
+ <span class="k">except</span> <span class="p">(</span><span class="n">JoseError</span><span class="p">,</span> <span class="ne">Exception</span><span class="p">)</span> <span class="k">as</span> <span class="n">jwt_err</span><span class="p">:</span>
228
237
  <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s2">&quot;Error in JWTBearerManager: JWTError&quot;</span><span class="p">)</span>
229
238
  <span class="k">raise</span> <span class="n">InvalidTokenException</span><span class="p">(</span>
230
239
  <span class="n">status_code</span><span class="o">=</span><span class="n">HTTP_403_FORBIDDEN</span><span class="p">,</span>
@@ -5,7 +5,7 @@
5
5
  <head>
6
6
  <meta charset="utf-8" />
7
7
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
8
- <title>auth_middleware.providers.authn.cognito_authz_provider_settings &mdash; Auth Middleware 0.3.4 documentation</title>
8
+ <title>auth_middleware.providers.authn.cognito_authz_provider_settings &mdash; Auth Middleware 0.3.7 documentation</title>
9
9
  <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=b86133f3" />
10
10
  <link rel="stylesheet" type="text/css" href="../../../../_static/css/theme.css?v=9edc463e" />
11
11
 
@@ -13,7 +13,7 @@
13
13
  <link rel="canonical" href="/auth-middleware/_modules/auth_middleware/providers/authn/cognito_authz_provider_settings.html" />
14
14
  <script src="../../../../_static/jquery.js?v=5d32c60e"></script>
15
15
  <script src="../../../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
16
- <script src="../../../../_static/documentation_options.js?v=1e28cc32"></script>
16
+ <script src="../../../../_static/documentation_options.js?v=29d04658"></script>
17
17
  <script src="../../../../_static/doctools.js?v=fd6eb6e6"></script>
18
18
  <script src="../../../../_static/sphinx_highlight.js?v=6ffebe34"></script>
19
19
  <script src="../../../../_static/js/theme.js"></script>
@@ -5,7 +5,7 @@
5
5
  <head>
6
6
  <meta charset="utf-8" />
7
7
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
8
- <title>auth_middleware.providers.authn.cognito_provider &mdash; Auth Middleware 0.3.4 documentation</title>
8
+ <title>auth_middleware.providers.authn.cognito_provider &mdash; Auth Middleware 0.3.7 documentation</title>
9
9
  <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=b86133f3" />
10
10
  <link rel="stylesheet" type="text/css" href="../../../../_static/css/theme.css?v=9edc463e" />
11
11
 
@@ -13,7 +13,7 @@
13
13
  <link rel="canonical" href="/auth-middleware/_modules/auth_middleware/providers/authn/cognito_provider.html" />
14
14
  <script src="../../../../_static/jquery.js?v=5d32c60e"></script>
15
15
  <script src="../../../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
16
- <script src="../../../../_static/documentation_options.js?v=1e28cc32"></script>
16
+ <script src="../../../../_static/documentation_options.js?v=29d04658"></script>
17
17
  <script src="../../../../_static/doctools.js?v=fd6eb6e6"></script>
18
18
  <script src="../../../../_static/sphinx_highlight.js?v=6ffebe34"></script>
19
19
  <script src="../../../../_static/js/theme.js"></script>
@@ -151,12 +151,15 @@
151
151
  <div itemprop="articleBody">
152
152
 
153
153
  <h1>Source code for auth_middleware.providers.authn.cognito_provider</h1><div class="highlight"><pre>
154
- <span></span><span class="kn">from</span><span class="w"> </span><span class="nn">time</span><span class="w"> </span><span class="kn">import</span> <span class="n">time</span><span class="p">,</span> <span class="n">time_ns</span>
154
+ <span></span><span class="kn">from</span><span class="w"> </span><span class="nn">time</span><span class="w"> </span><span class="kn">import</span> <span class="n">time_ns</span>
155
155
 
156
156
  <span class="kn">import</span><span class="w"> </span><span class="nn">httpx</span>
157
- <span class="kn">from</span><span class="w"> </span><span class="nn">jose</span><span class="w"> </span><span class="kn">import</span> <span class="n">jwk</span>
158
- <span class="kn">from</span><span class="w"> </span><span class="nn">jose.utils</span><span class="w"> </span><span class="kn">import</span> <span class="n">base64url_decode</span>
157
+ <span class="kn">from</span><span class="w"> </span><span class="nn">joserfc</span><span class="w"> </span><span class="kn">import</span> <span class="n">jwt</span> <span class="k">as</span> <span class="n">joserfc_jwt</span>
158
+ <span class="kn">from</span><span class="w"> </span><span class="nn">joserfc.errors</span><span class="w"> </span><span class="kn">import</span> <span class="n">JoseError</span>
159
+ <span class="kn">from</span><span class="w"> </span><span class="nn">joserfc.jwk</span><span class="w"> </span><span class="kn">import</span> <span class="n">import_key</span>
159
160
 
161
+ <span class="kn">from</span><span class="w"> </span><span class="nn">auth_middleware.providers.authz.roles_provider</span><span class="w"> </span><span class="kn">import</span> <span class="n">RolesProvider</span>
162
+ <span class="kn">from</span><span class="w"> </span><span class="nn">auth_middleware.providers.cognito</span><span class="w"> </span><span class="kn">import</span> <span class="n">COGNITO_USERNAME_CLAIM</span>
160
163
  <span class="kn">from</span><span class="w"> </span><span class="nn">auth_middleware.logging</span><span class="w"> </span><span class="kn">import</span> <span class="n">logger</span>
161
164
  <span class="kn">from</span><span class="w"> </span><span class="nn">auth_middleware.providers.authn.cognito_authz_provider_settings</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span>
162
165
  <span class="n">CognitoAuthzProviderSettings</span><span class="p">,</span>
@@ -171,6 +174,32 @@
171
174
  <span class="kn">from</span><span class="w"> </span><span class="nn">auth_middleware.types.user</span><span class="w"> </span><span class="kn">import</span> <span class="n">User</span>
172
175
 
173
176
 
177
+ <span class="n">T_Provider</span> <span class="o">=</span> <span class="n">PermissionsProvider</span> <span class="o">|</span> <span class="n">GroupsProvider</span> <span class="o">|</span> <span class="n">ProfileProvider</span>
178
+
179
+
180
+ <span class="k">def</span><span class="w"> </span><span class="nf">_resolve_provider</span><span class="p">(</span>
181
+ <span class="n">provider</span><span class="p">:</span> <span class="nb">type</span><span class="p">[</span><span class="n">T_Provider</span><span class="p">]</span> <span class="o">|</span> <span class="n">T_Provider</span> <span class="o">|</span> <span class="kc">None</span><span class="p">,</span>
182
+ <span class="n">base_class</span><span class="p">:</span> <span class="nb">type</span><span class="p">[</span><span class="n">T_Provider</span><span class="p">],</span>
183
+ <span class="n">allow_missing</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
184
+ <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">T_Provider</span> <span class="o">|</span> <span class="kc">None</span><span class="p">:</span>
185
+ <span class="w"> </span><span class="sd">&quot;&quot;&quot;Instantiate *provider* if it is a class; return it as-is if already an</span>
186
+ <span class="sd"> instance; raise ValueError if it is neither (unless *allow_missing* is True,</span>
187
+ <span class="sd"> in which case ``None`` is returned silently).&quot;&quot;&quot;</span>
188
+ <span class="k">if</span> <span class="n">provider</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
189
+ <span class="k">return</span> <span class="kc">None</span>
190
+ <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">provider</span><span class="p">,</span> <span class="nb">type</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">issubclass</span><span class="p">(</span><span class="n">provider</span><span class="p">,</span> <span class="n">base_class</span><span class="p">):</span>
191
+ <span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Initializing </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="n">base_class</span><span class="o">.</span><span class="vm">__name__</span><span class="p">)</span>
192
+ <span class="k">return</span> <span class="n">provider</span><span class="p">()</span>
193
+ <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">provider</span><span class="p">,</span> <span class="n">base_class</span><span class="p">):</span>
194
+ <span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Setting </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="n">base_class</span><span class="o">.</span><span class="vm">__name__</span><span class="p">)</span>
195
+ <span class="k">return</span> <span class="n">provider</span>
196
+ <span class="k">if</span> <span class="n">allow_missing</span><span class="p">:</span>
197
+ <span class="k">return</span> <span class="kc">None</span>
198
+ <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>
199
+ <span class="sa">f</span><span class="s2">&quot;provider must be a </span><span class="si">{</span><span class="n">base_class</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2"> instance or subclass thereof&quot;</span>
200
+ <span class="p">)</span>
201
+
202
+
174
203
  <div class="viewcode-block" id="CognitoProvider">
175
204
  <a class="viewcode-back" href="../../../../cognito_provider.html#auth_middleware.providers.authn.cognito_provider.CognitoProvider">[docs]</a>
176
205
  <span class="k">class</span><span class="w"> </span><span class="nc">CognitoProvider</span><span class="p">(</span><span class="n">JWTProvider</span><span class="p">):</span>
@@ -183,6 +212,7 @@
183
212
  <span class="o">|</span> <span class="n">PermissionsProvider</span>
184
213
  <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
185
214
  <span class="n">groups_provider</span><span class="p">:</span> <span class="nb">type</span><span class="p">[</span><span class="n">GroupsProvider</span><span class="p">]</span> <span class="o">|</span> <span class="n">GroupsProvider</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
215
+ <span class="n">roles_provider</span><span class="p">:</span> <span class="nb">type</span><span class="p">[</span><span class="n">RolesProvider</span><span class="p">]</span> <span class="o">|</span> <span class="n">RolesProvider</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
186
216
  <span class="n">profile_provider</span><span class="p">:</span> <span class="nb">type</span><span class="p">[</span><span class="n">ProfileProvider</span><span class="p">]</span> <span class="o">|</span> <span class="n">ProfileProvider</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
187
217
  <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">CognitoProvider</span><span class="p">:</span>
188
218
  <span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Creating CognitoProvider instance&quot;</span><span class="p">)</span>
@@ -200,6 +230,7 @@
200
230
  <span class="o">|</span> <span class="n">PermissionsProvider</span>
201
231
  <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
202
232
  <span class="n">groups_provider</span><span class="p">:</span> <span class="nb">type</span><span class="p">[</span><span class="n">GroupsProvider</span><span class="p">]</span> <span class="o">|</span> <span class="n">GroupsProvider</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
233
+ <span class="n">roles_provider</span><span class="p">:</span> <span class="nb">type</span><span class="p">[</span><span class="n">RolesProvider</span><span class="p">]</span> <span class="o">|</span> <span class="n">RolesProvider</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
203
234
  <span class="n">profile_provider</span><span class="p">:</span> <span class="nb">type</span><span class="p">[</span><span class="n">ProfileProvider</span><span class="p">]</span> <span class="o">|</span> <span class="n">ProfileProvider</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
204
235
  <span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
205
236
  <span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Initializing CognitoProvider instance&quot;</span><span class="p">)</span>
@@ -208,59 +239,20 @@
208
239
  <span class="k">if</span> <span class="ow">not</span> <span class="n">settings</span><span class="p">:</span>
209
240
  <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Settings must be provided&quot;</span><span class="p">)</span>
210
241
 
211
- <span class="c1"># TODO: Refactor this</span>
212
- <span class="c1"># Lazy initialization for PermissionsProvider</span>
213
- <span class="n">final_permissions_provider</span><span class="p">:</span> <span class="n">PermissionsProvider</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
214
- <span class="k">if</span> <span class="n">permissions_provider</span><span class="p">:</span>
215
- <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">permissions_provider</span><span class="p">,</span> <span class="nb">type</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">issubclass</span><span class="p">(</span>
216
- <span class="n">permissions_provider</span><span class="p">,</span> <span class="n">PermissionsProvider</span>
217
- <span class="p">):</span>
218
- <span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Initializing PermissionsProvider&quot;</span><span class="p">)</span>
219
- <span class="n">final_permissions_provider</span> <span class="o">=</span> <span class="n">permissions_provider</span><span class="p">()</span>
220
- <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">permissions_provider</span><span class="p">,</span> <span class="n">PermissionsProvider</span><span class="p">):</span>
221
- <span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Setting PermissionsProvider&quot;</span><span class="p">)</span>
222
- <span class="n">final_permissions_provider</span> <span class="o">=</span> <span class="n">permissions_provider</span>
223
- <span class="k">else</span><span class="p">:</span>
224
- <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>
225
- <span class="s2">&quot;permissions_provider must be a PermissionsProvider &quot;</span>
226
- <span class="s2">&quot;or a subclass thereof&quot;</span>
227
- <span class="p">)</span>
228
-
229
- <span class="c1"># TODO: Refactor this</span>
230
- <span class="c1"># Lazy initialization for GroupsProvider</span>
231
- <span class="n">final_groups_provider</span><span class="p">:</span> <span class="n">GroupsProvider</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
232
- <span class="k">if</span> <span class="n">groups_provider</span><span class="p">:</span>
233
- <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">groups_provider</span><span class="p">,</span> <span class="nb">type</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">issubclass</span><span class="p">(</span>
234
- <span class="n">groups_provider</span><span class="p">,</span> <span class="n">GroupsProvider</span>
235
- <span class="p">):</span>
236
- <span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Initializing GroupsProvider&quot;</span><span class="p">)</span>
237
- <span class="n">final_groups_provider</span> <span class="o">=</span> <span class="n">groups_provider</span><span class="p">()</span>
238
- <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">groups_provider</span><span class="p">,</span> <span class="n">GroupsProvider</span><span class="p">):</span>
239
- <span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Setting GroupsProvider&quot;</span><span class="p">)</span>
240
- <span class="n">final_groups_provider</span> <span class="o">=</span> <span class="n">groups_provider</span>
241
-
242
- <span class="c1"># Lazy initialization for ProfileProvider</span>
243
- <span class="n">final_profile_provider</span><span class="p">:</span> <span class="n">ProfileProvider</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span>
244
- <span class="k">if</span> <span class="n">profile_provider</span><span class="p">:</span>
245
- <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">profile_provider</span><span class="p">,</span> <span class="nb">type</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">issubclass</span><span class="p">(</span>
246
- <span class="n">profile_provider</span><span class="p">,</span> <span class="n">ProfileProvider</span>
247
- <span class="p">):</span>
248
- <span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Initializing ProfileProvider&quot;</span><span class="p">)</span>
249
- <span class="n">final_profile_provider</span> <span class="o">=</span> <span class="n">profile_provider</span><span class="p">()</span>
250
- <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">profile_provider</span><span class="p">,</span> <span class="n">ProfileProvider</span><span class="p">):</span>
251
- <span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Setting ProfileProvider&quot;</span><span class="p">)</span>
252
- <span class="n">final_profile_provider</span> <span class="o">=</span> <span class="n">profile_provider</span>
253
- <span class="k">else</span><span class="p">:</span>
254
- <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>
255
- <span class="s2">&quot;profile_provider must be a ProfileProvider &quot;</span>
256
- <span class="s2">&quot;or a subclass thereof&quot;</span>
257
- <span class="p">)</span>
258
-
259
242
  <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span>
260
243
  <span class="n">settings</span><span class="o">=</span><span class="n">settings</span><span class="p">,</span>
261
- <span class="n">permissions_provider</span><span class="o">=</span><span class="n">final_permissions_provider</span><span class="p">,</span>
262
- <span class="n">groups_provider</span><span class="o">=</span><span class="n">final_groups_provider</span><span class="p">,</span>
263
- <span class="n">profile_provider</span><span class="o">=</span><span class="n">final_profile_provider</span><span class="p">,</span>
244
+ <span class="n">permissions_provider</span><span class="o">=</span><span class="n">_resolve_provider</span><span class="p">(</span>
245
+ <span class="n">permissions_provider</span><span class="p">,</span> <span class="n">PermissionsProvider</span>
246
+ <span class="p">),</span>
247
+ <span class="n">groups_provider</span><span class="o">=</span><span class="n">_resolve_provider</span><span class="p">(</span>
248
+ <span class="n">groups_provider</span><span class="p">,</span> <span class="n">GroupsProvider</span><span class="p">,</span> <span class="n">allow_missing</span><span class="o">=</span><span class="kc">True</span>
249
+ <span class="p">),</span>
250
+ <span class="n">roles_provider</span><span class="o">=</span><span class="n">_resolve_provider</span><span class="p">(</span>
251
+ <span class="n">roles_provider</span><span class="p">,</span> <span class="n">RolesProvider</span><span class="p">,</span> <span class="n">allow_missing</span><span class="o">=</span><span class="kc">True</span>
252
+ <span class="p">),</span>
253
+ <span class="n">profile_provider</span><span class="o">=</span><span class="n">_resolve_provider</span><span class="p">(</span>
254
+ <span class="n">profile_provider</span><span class="p">,</span> <span class="n">ProfileProvider</span>
255
+ <span class="p">),</span>
264
256
  <span class="p">)</span>
265
257
  <span class="bp">self</span><span class="o">.</span><span class="n">_initialized</span> <span class="o">=</span> <span class="kc">True</span></div>
266
258
 
@@ -341,15 +333,12 @@
341
333
  <span class="p">)</span>
342
334
  <span class="k">raise</span> <span class="n">AWSException</span><span class="p">(</span><span class="s2">&quot;No public key found!&quot;</span><span class="p">)</span>
343
335
 
344
- <span class="n">hmac_key</span> <span class="o">=</span> <span class="n">jwk</span><span class="o">.</span><span class="n">construct</span><span class="p">(</span><span class="n">hmac_key_candidate</span><span class="p">)</span>
345
-
346
- <span class="n">decoded_signature</span> <span class="o">=</span> <span class="n">base64url_decode</span><span class="p">(</span><span class="n">token</span><span class="o">.</span><span class="n">signature</span><span class="o">.</span><span class="n">encode</span><span class="p">())</span>
347
-
348
- <span class="c1"># if crypto is OK, then check expiry date</span>
349
- <span class="k">if</span> <span class="n">hmac_key</span><span class="o">.</span><span class="n">verify</span><span class="p">(</span><span class="n">token</span><span class="o">.</span><span class="n">message</span><span class="o">.</span><span class="n">encode</span><span class="p">(),</span> <span class="n">decoded_signature</span><span class="p">):</span>
350
- <span class="k">return</span> <span class="nb">bool</span><span class="p">(</span><span class="n">token</span><span class="o">.</span><span class="n">claims</span><span class="p">[</span><span class="s2">&quot;exp&quot;</span><span class="p">]</span> <span class="o">&gt;</span> <span class="n">time</span><span class="p">())</span>
351
-
352
- <span class="k">return</span> <span class="kc">False</span></div>
336
+ <span class="n">key</span> <span class="o">=</span> <span class="n">import_key</span><span class="p">(</span><span class="n">hmac_key_candidate</span><span class="p">)</span>
337
+ <span class="k">try</span><span class="p">:</span>
338
+ <span class="n">joserfc_jwt</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="n">token</span><span class="o">.</span><span class="n">jwt_token</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">algorithms</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;RS256&quot;</span><span class="p">])</span>
339
+ <span class="k">return</span> <span class="kc">True</span>
340
+ <span class="k">except</span> <span class="n">JoseError</span><span class="p">:</span>
341
+ <span class="k">return</span> <span class="kc">False</span></div>
353
342
 
354
343
 
355
344
  <div class="viewcode-block" id="CognitoProvider.create_user_from_token">
@@ -368,7 +357,7 @@
368
357
  <span class="n">client_id</span> <span class="o">=</span> <span class="n">M2MTokenDetector</span><span class="o">.</span><span class="n">get_client_id</span><span class="p">(</span><span class="n">token</span><span class="p">)</span> <span class="k">if</span> <span class="n">is_m2m</span> <span class="k">else</span> <span class="kc">None</span>
369
358
 
370
359
  <span class="n">name_property</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="p">(</span>
371
- <span class="s2">&quot;username&quot;</span> <span class="k">if</span> <span class="s2">&quot;username&quot;</span> <span class="ow">in</span> <span class="n">token</span><span class="o">.</span><span class="n">claims</span> <span class="k">else</span> <span class="s2">&quot;cognito:username&quot;</span>
360
+ <span class="s2">&quot;username&quot;</span> <span class="k">if</span> <span class="s2">&quot;username&quot;</span> <span class="ow">in</span> <span class="n">token</span><span class="o">.</span><span class="n">claims</span> <span class="k">else</span> <span class="n">COGNITO_USERNAME_CLAIM</span>
372
361
  <span class="p">)</span>
373
362
 
374
363
  <span class="c1"># Get groups directly using the groups provider</span>
@@ -377,10 +366,17 @@
377
366
  <span class="c1"># M2M tokens typically don&#39;t have groups</span>
378
367
  <span class="n">groups</span> <span class="o">=</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">_groups_provider</span><span class="o">.</span><span class="n">fetch_groups</span><span class="p">(</span><span class="n">token</span><span class="p">)</span>
379
368
 
369
+ <span class="c1"># Get roles directly using the roles provider</span>
370
+ <span class="n">roles</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span>
371
+ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_roles_provider</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">is_m2m</span><span class="p">:</span>
372
+ <span class="c1"># M2M tokens typically don&#39;t have roles</span>
373
+ <span class="n">roles</span> <span class="o">=</span> <span class="k">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">_roles_provider</span><span class="o">.</span><span class="n">fetch_roles</span><span class="p">(</span><span class="n">token</span><span class="p">)</span>
374
+
380
375
  <span class="k">return</span> <span class="n">User</span><span class="p">(</span>
381
376
  <span class="n">token</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">token</span><span class="p">),</span>
382
377
  <span class="n">jwt_credentials</span><span class="o">=</span><span class="n">token</span><span class="p">,</span>
383
378
  <span class="n">groups_provider</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_groups_provider</span><span class="p">,</span>
379
+ <span class="n">roles_provider</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_roles_provider</span><span class="p">,</span>
384
380
  <span class="n">permissions_provider</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_permissions_provider</span><span class="p">,</span>
385
381
  <span class="n">profile_provider</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_profile_provider</span><span class="p">,</span>
386
382
  <span class="nb">id</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">claims</span><span class="p">[</span><span class="s2">&quot;sub&quot;</span><span class="p">],</span>
@@ -391,6 +387,7 @@
391
387
  <span class="p">),</span>
392
388
  <span class="n">email</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">claims</span><span class="p">[</span><span class="s2">&quot;email&quot;</span><span class="p">]</span> <span class="k">if</span> <span class="s2">&quot;email&quot;</span> <span class="ow">in</span> <span class="n">token</span><span class="o">.</span><span class="n">claims</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span>
393
389
  <span class="n">groups</span><span class="o">=</span><span class="n">groups</span><span class="p">,</span>
390
+ <span class="n">roles</span><span class="o">=</span><span class="n">roles</span><span class="p">,</span>
394
391
  <span class="n">is_m2m</span><span class="o">=</span><span class="n">is_m2m</span><span class="p">,</span>
395
392
  <span class="n">client_id</span><span class="o">=</span><span class="n">client_id</span><span class="p">,</span>
396
393
  <span class="p">)</span></div>