Skip to content

LaunchDarkly import accepts empty LD token #7950

Description

@sentry

Sentry Issue: FLAGSMITH-API-68H

BadSignature: No ":" found in value
(2 additional frame(s) were not displayed)
...
  File "integrations/launch_darkly/tasks.py", line 24, in process_launch_darkly_import_request
    process_import_request(import_request)
  File "integrations/launch_darkly/services.py", line 1110, in process_import_request
    ld_token = _unsign_ld_value(
  File "integrations/launch_darkly/services.py", line 56, in _unsign_ld_value
    return signing.loads(  # type: ignore[no-any-return]

{'import_request_id': 609, 'ld_project_key': 'browser-extension', 'organisation_id': 32015, 'project_id': 42860, 'event': 'import-failed', 'logger': 'launch_darkly', 'level': 'error', 'exception': 'Traceback (most recent call last):\n  File "/app/integrations/launch_darkly/tasks.py", line 24, in process_launch_darkly_import_request\n    process_import_request(import_request)\n    ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^\n  File "/app/integrations/launch_darkly/services.py", line 1110, in process_import_request\n    ld_token = _unsign_ld_value(\n        import_request.ld_token,\n        import_request.created_by.id,\n    )\n  File "/app/integrations/launch_darkly/services.py", line 56, in _unsign_ld_value\n    return signing.loads(  # type: ignore[no-any-return]\n           ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n        value,\n        ^^^^^^\n        salt=f"ld_import_{user_id}",\n        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n    )\n    ^\n  File "/build/.venv/lib/python3.13/site-packages/django/core/signing.py", line 194, in loads\n    ).unsign_object(\n      ~~~~~~~~~~~~~^\n        s,\n        ^^\n        serializer=serializer,\n        ^^^^^^^^^^^^^^^^^^^^^^\n        max_age=max_age,\n        ^^^^^^^^^^^^^^^^\n    )\n    ^\n  File "/build/.venv/lib/python3.13/site-packages/django/core/signing.py", line 267, in unsign_object\n    base64d = self.unsign(signed_obj, **kwargs).encode()\n              ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^\n  File "/build/.venv/lib/python3.13/site-packages/django/core/signing.py", line 291, in unsign\n    result = super().unsign(value)\n  File "/build/.venv/lib/python3.13/site-packages/django/core/signing.py", line 232, in unsign\n    raise BadSignature(\'No "%s" found in value\' % self.sep)\ndjango.core.signing.BadSignature: No ":" found in value', 'timestamp': '2026-07-06T14:07:26.994237Z'}

Acceptance criteria

  • The API responds with 400 if token is empty.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workinggood first issueGood for newcomers

    Type

    Fields

    No fields configured for Bug.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions