clue-api 1.0.1.dev81__tar.gz → 1.0.1.dev89__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 (91) hide show
  1. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/PKG-INFO +2 -2
  2. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/api/v1/auth.py +1 -1
  3. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/services/user_service.py +4 -2
  4. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/pyproject.toml +2 -7
  5. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/LICENSE +0 -0
  6. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/README.md +0 -0
  7. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/.gitignore +0 -0
  8. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/__init__.py +0 -0
  9. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/api/__init__.py +0 -0
  10. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/api/base.py +0 -0
  11. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/api/v1/__init__.py +0 -0
  12. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/api/v1/actions.py +0 -0
  13. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/api/v1/configs.py +0 -0
  14. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/api/v1/fetchers.py +0 -0
  15. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/api/v1/lookup.py +0 -0
  16. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/api/v1/registration.py +0 -0
  17. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/api/v1/static.py +0 -0
  18. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/app.py +0 -0
  19. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/cache/__init__.py +0 -0
  20. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/common/__init__.py +0 -0
  21. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/common/classification.py +0 -0
  22. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/common/classification.yml +0 -0
  23. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/common/dict_utils.py +0 -0
  24. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/common/exceptions.py +0 -0
  25. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/common/forge.py +0 -0
  26. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/common/json_utils.py +0 -0
  27. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/common/list_utils.py +0 -0
  28. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/common/logging/__init__.py +0 -0
  29. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/common/logging/audit.py +0 -0
  30. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/common/logging/format.py +0 -0
  31. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/common/regex.py +0 -0
  32. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/common/str_utils.py +0 -0
  33. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/common/swagger.py +0 -0
  34. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/common/uid.py +0 -0
  35. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/config.py +0 -0
  36. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/constants/__init__.py +0 -0
  37. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/constants/supported_types.py +0 -0
  38. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/cronjobs/__init__.py +0 -0
  39. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/cronjobs/plugins.py +0 -0
  40. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/error.py +0 -0
  41. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/extensions/__init__.py +0 -0
  42. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/extensions/config.py +0 -0
  43. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/gunicorn_config.py +0 -0
  44. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/healthz.py +0 -0
  45. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/helper/discover.py +0 -0
  46. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/helper/headers.py +0 -0
  47. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/helper/oauth.py +0 -0
  48. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/models/__init__.py +0 -0
  49. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/models/actions.py +0 -0
  50. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/models/config.py +0 -0
  51. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/models/fetchers.py +0 -0
  52. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/models/graph.py +0 -0
  53. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/models/model_list.py +0 -0
  54. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/models/network.py +0 -0
  55. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/models/results/__init__.py +0 -0
  56. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/models/results/base.py +0 -0
  57. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/models/results/graph.py +0 -0
  58. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/models/results/image.py +0 -0
  59. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/models/results/status.py +0 -0
  60. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/models/results/validation.py +0 -0
  61. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/models/selector.py +0 -0
  62. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/models/validators.py +0 -0
  63. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/patched.py +0 -0
  64. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/plugin/__init__.py +0 -0
  65. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/plugin/helpers/__init__.py +0 -0
  66. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/plugin/helpers/central_server.py +0 -0
  67. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/plugin/helpers/email_render.py +0 -0
  68. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/plugin/helpers/token.py +0 -0
  69. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/plugin/helpers/trino.py +0 -0
  70. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/plugin/models.py +0 -0
  71. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/plugin/utils.py +0 -0
  72. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/py.typed +0 -0
  73. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/remote/__init__.py +0 -0
  74. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/remote/datatypes/__init__.py +0 -0
  75. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/remote/datatypes/cache.py +0 -0
  76. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/remote/datatypes/events.py +0 -0
  77. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/remote/datatypes/hash.py +0 -0
  78. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/remote/datatypes/queues/__init__.py +0 -0
  79. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/remote/datatypes/queues/comms.py +0 -0
  80. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/remote/datatypes/set.py +0 -0
  81. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/remote/datatypes/user_quota_tracker.py +0 -0
  82. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/security/__init__.py +0 -0
  83. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/security/obo.py +0 -0
  84. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/security/utils.py +0 -0
  85. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/services/action_service.py +0 -0
  86. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/services/auth_service.py +0 -0
  87. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/services/config_service.py +0 -0
  88. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/services/fetcher_service.py +0 -0
  89. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/services/jwt_service.py +0 -0
  90. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/services/lookup_service.py +0 -0
  91. {clue_api-1.0.1.dev81 → clue_api-1.0.1.dev89}/clue/services/type_service.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: clue-api
3
- Version: 1.0.1.dev81
3
+ Version: 1.0.1.dev89
4
4
  Summary: Clue distributed enrichment service
5
5
  License: MIT
6
6
  License-File: LICENSE
@@ -20,7 +20,7 @@ Provides-Extra: server
20
20
  Requires-Dist: PyYAML (>=6.0.1,<7.0.0) ; extra == "server"
21
21
  Requires-Dist: Werkzeug (>=3.0.2,<4.0.0) ; extra == "server"
22
22
  Requires-Dist: apscheduler (>=3.10.4,<4.0.0) ; extra == "server"
23
- Requires-Dist: authlib (<1.0.0) ; extra == "server"
23
+ Requires-Dist: authlib (<2.0.0) ; extra == "server"
24
24
  Requires-Dist: bcrypt (>=4.1.2,<5.0.0) ; extra == "server"
25
25
  Requires-Dist: beautifulsoup4 (>=4.13.3,<5.0.0)
26
26
  Requires-Dist: cart (>=1.2.3,<2.0.0)
@@ -125,7 +125,7 @@ def login(**_) -> dict[str, Any]: # noqa: C901
125
125
  uri = urlparse(referer if referer else request.host_url)
126
126
  port_portion = ":" + str(uri.port) if uri.port else ""
127
127
  redirect_uri = f"{uri.scheme}://{uri.hostname}{port_portion}/login?provider={oauth_provider}"
128
- return provider.authorize_redirect(redirect_uri=redirect_uri)
128
+ return provider.authorize_redirect(redirect_uri=redirect_uri, nonce=request.args.get("nonce", None))
129
129
 
130
130
  # At this point we know the code exists, so we're good to use that to exchange for an JSON Web Token with
131
131
  # user data in it. token_data contains the access token, expiry, refresh token, and id token,
@@ -1,7 +1,7 @@
1
1
  from typing import Any
2
2
 
3
3
  import elasticapm
4
- from flask import current_app
4
+ from flask import current_app, request
5
5
 
6
6
  from clue.common.exceptions import (
7
7
  AccessDeniedException,
@@ -49,7 +49,9 @@ def parse_user_data(
49
49
  provider = oauth.create_client(oauth_provider)
50
50
 
51
51
  if "id_token" in data:
52
- data = provider.parse_id_token(data)
52
+ data = provider.parse_id_token(
53
+ data, nonce=request.args.get("nonce", data.get("userinfo", {}).get("nonce", None))
54
+ )
53
55
 
54
56
  oauth_provider_config = config.auth.oauth.providers[oauth_provider]
55
57
 
@@ -131,9 +131,6 @@ suppress-none-returning = true
131
131
  "clue/common/classification.py" = ["D", "ANN", "C901", "TRY301", "T203"]
132
132
  "clue/remote/datatypes/*" = ["D", "ANN", "C901"]
133
133
  "clue/security/__init__.py" = ["TRY301"]
134
- "plugin/interactive.py" = ["T201"]
135
- "plugin/create.py" = ["T201", "D103"]
136
- "plugin/commands.py" = ["T201", "D103"]
137
134
  "test/conftest.py" = ["E402"]
138
135
 
139
136
  ###################
@@ -149,7 +146,7 @@ log_cli_level = "WARN"
149
146
  [tool.poetry]
150
147
  package-mode = true
151
148
  name = "clue-api"
152
- version = "1.0.1.dev81"
149
+ version = "1.0.1.dev89"
153
150
  description = "Clue distributed enrichment service"
154
151
  authors = ["Canadian Centre for Cyber Security <contact@cyber.gc.ca>"]
155
152
  license = "MIT"
@@ -208,7 +205,7 @@ prometheus-client = { version = "^0.20.0", optional = true }
208
205
  apscheduler = { version = "^3.10.4", optional = true }
209
206
  pytz = { version = "^2024.1", optional = true }
210
207
  passlib = { version = "^1.7.4", optional = true }
211
- authlib = { version = "<1.0.0", optional = true }
208
+ authlib = { version = "<2.0.0", optional = true }
212
209
  flask-cors = { version = ">=4.0.1,<7.0.0", optional = true }
213
210
  flasgger = { version = "^0.9.7.1", optional = true }
214
211
  trino = "^0.336.0"
@@ -241,8 +238,6 @@ last_success = "build_scripts.last_success:main"
241
238
  check_changes = "build_scripts.check_changes:main"
242
239
  type_check = "build_scripts.type_check:main"
243
240
  coverage_report = "build_scripts.coverage_reports:main"
244
- plugin = "plugin.interactive:main"
245
- create = "plugin.create:main"
246
241
 
247
242
  [tool.poetry.group.test.dependencies]
248
243
  pytest = "^8.1.1"
File without changes
File without changes