usso 0.25.3__tar.gz → 0.25.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.
Files changed (26) hide show
  1. {usso-0.25.3/src/usso.egg-info → usso-0.25.4}/PKG-INFO +1 -1
  2. {usso-0.25.3 → usso-0.25.4}/pyproject.toml +1 -1
  3. {usso-0.25.3 → usso-0.25.4}/src/usso/core.py +15 -7
  4. {usso-0.25.3 → usso-0.25.4}/src/usso/fastapi/integration.py +8 -6
  5. {usso-0.25.3 → usso-0.25.4/src/usso.egg-info}/PKG-INFO +1 -1
  6. {usso-0.25.3 → usso-0.25.4}/LICENSE.txt +0 -0
  7. {usso-0.25.3 → usso-0.25.4}/README.md +0 -0
  8. {usso-0.25.3 → usso-0.25.4}/setup.cfg +0 -0
  9. {usso-0.25.3 → usso-0.25.4}/src/usso/__init__.py +0 -0
  10. {usso-0.25.3 → usso-0.25.4}/src/usso/api.py +0 -0
  11. {usso-0.25.3 → usso-0.25.4}/src/usso/async_api.py +0 -0
  12. {usso-0.25.3 → usso-0.25.4}/src/usso/async_session.py +0 -0
  13. {usso-0.25.3 → usso-0.25.4}/src/usso/b64tools.py +0 -0
  14. {usso-0.25.3 → usso-0.25.4}/src/usso/django/__init__.py +0 -0
  15. {usso-0.25.3 → usso-0.25.4}/src/usso/django/middleware.py +0 -0
  16. {usso-0.25.3 → usso-0.25.4}/src/usso/exceptions.py +0 -0
  17. {usso-0.25.3 → usso-0.25.4}/src/usso/fastapi/__init__.py +0 -0
  18. {usso-0.25.3 → usso-0.25.4}/src/usso/session.py +0 -0
  19. {usso-0.25.3 → usso-0.25.4}/src/usso.egg-info/SOURCES.txt +0 -0
  20. {usso-0.25.3 → usso-0.25.4}/src/usso.egg-info/dependency_links.txt +0 -0
  21. {usso-0.25.3 → usso-0.25.4}/src/usso.egg-info/entry_points.txt +0 -0
  22. {usso-0.25.3 → usso-0.25.4}/src/usso.egg-info/requires.txt +0 -0
  23. {usso-0.25.3 → usso-0.25.4}/src/usso.egg-info/top_level.txt +0 -0
  24. {usso-0.25.3 → usso-0.25.4}/tests/test_api.py +0 -0
  25. {usso-0.25.3 → usso-0.25.4}/tests/test_core.py +0 -0
  26. {usso-0.25.3 → usso-0.25.4}/tests/test_simple.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: usso
3
- Version: 0.25.3
3
+ Version: 0.25.4
4
4
  Summary: A plug-and-play client for integrating universal single sign-on (SSO) with Python frameworks, enabling secure and seamless authentication across microservices.
5
5
  Author-email: Mahdi Kiani <mahdikiany@gmail.com>
6
6
  Maintainer-email: Mahdi Kiani <mahdikiany@gmail.com>
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "usso"
7
- version = "0.25.3"
7
+ version = "0.25.4"
8
8
  description = "A plug-and-play client for integrating universal single sign-on (SSO) with Python frameworks, enabling secure and seamless authentication across microservices."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -147,23 +147,31 @@ class Usso:
147
147
  def __init__(
148
148
  self,
149
149
  *,
150
- jwt_config: str | dict | JWTConfig | None = None,
151
- jwt_configs: list[str] | list[dict] | list[JWTConfig] | None = None,
150
+ jwt_config: str | dict | JWTConfig | list[str] | list[dict] | list[JWTConfig] | None = None,
151
+ jwk_url: str | None = None,
152
+ secret: str | None = None,
152
153
  ):
153
- if jwt_config is None and jwt_configs is None:
154
+ if jwt_config is None:
154
155
  jwt_config = os.getenv("USSO_JWT_CONFIG")
155
156
 
156
- if jwt_config is None and jwt_configs is None:
157
- jwk_url = os.getenv("USSO_JWK_URL") or os.getenv("USSO_JWKS_URL")
157
+ if jwt_config is None:
158
158
  if not jwk_url:
159
+ jwk_url = os.getenv("USSO_JWK_URL") or os.getenv("USSO_JWKS_URL")
160
+ if jwk_url:
159
161
  self.jwt_configs = [JWTConfig(jwk_url=jwk_url)]
160
162
  return
163
+
164
+ if not secret:
165
+ secret = os.getenv("USSO_SECRET")
166
+ if secret:
167
+ self.jwt_configs = [JWTConfig(secret=secret)]
168
+ return
161
169
 
162
170
  raise ValueError(
163
171
  "\n".join(
164
172
  [
165
- "Either jwt_config or jwt_configs must be provided",
166
- "or set the environment variable USSO_JWT_CONFIG or USSO_JWK_URL",
173
+ "jwt_config or jwk_url or secret must be provided",
174
+ "or set the environment variable USSO_JWT_CONFIG or USSO_JWK_URL or USSO_SECRET",
167
175
  ]
168
176
  )
169
177
  )
@@ -27,33 +27,35 @@ def get_request_token(request: Request | WebSocket) -> UserData | None:
27
27
  return token
28
28
 
29
29
 
30
- def jwt_access_security_None(request: Request) -> UserData | None:
30
+ def jwt_access_security_None(request: Request, jwt_config = None) -> UserData | None:
31
31
  """Return the user associated with a token value."""
32
32
  token = get_request_token(request)
33
33
  if not token:
34
34
  return None
35
- return Usso().user_data_from_token(token, raise_exception=False)
35
+ return Usso(jwt_config=jwt_config).user_data_from_token(token, raise_exception=False)
36
36
 
37
37
 
38
- def jwt_access_security(request: Request) -> UserData | None:
38
+ def jwt_access_security(request: Request, jwt_config=None) -> UserData | None:
39
39
  """Return the user associated with a token value."""
40
40
  token = get_request_token(request)
41
41
  if not token:
42
42
  raise USSOException(
43
43
  status_code=HTTP_401_UNAUTHORIZED,
44
44
  error="unauthorized",
45
+ message="No token provided",
45
46
  )
46
47
 
47
- return Usso().user_data_from_token(token)
48
+ return Usso(jwt_config=jwt_config).user_data_from_token(token)
48
49
 
49
50
 
50
- def jwt_access_security_ws(websocket: WebSocket) -> UserData | None:
51
+ def jwt_access_security_ws(websocket: WebSocket, jwt_config=None) -> UserData | None:
51
52
  """Return the user associated with a token value."""
52
53
  token = get_request_token(websocket)
53
54
  if not token:
54
55
  raise USSOException(
55
56
  status_code=HTTP_401_UNAUTHORIZED,
56
57
  error="unauthorized",
58
+ message="No token provided",
57
59
  )
58
60
 
59
- return Usso().user_data_from_token(token)
61
+ return Usso(jwt_config=jwt_config).user_data_from_token(token)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: usso
3
- Version: 0.25.3
3
+ Version: 0.25.4
4
4
  Summary: A plug-and-play client for integrating universal single sign-on (SSO) with Python frameworks, enabling secure and seamless authentication across microservices.
5
5
  Author-email: Mahdi Kiani <mahdikiany@gmail.com>
6
6
  Maintainer-email: Mahdi Kiani <mahdikiany@gmail.com>
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes