Skip to content

website/integrations: fix Vaultwarden SSO_SCOPES syntax#20459

Merged
dewi-tik merged 1 commit intogoauthentik:mainfrom
dkamakin:vaultwarden-integration-docs-fix
Feb 22, 2026
Merged

website/integrations: fix Vaultwarden SSO_SCOPES syntax#20459
dewi-tik merged 1 commit intogoauthentik:mainfrom
dkamakin:vaultwarden-integration-docs-fix

Conversation

@dkamakin
Copy link
Contributor

@dkamakin dkamakin commented Feb 22, 2026

Remove literal quotes to prevent injection errors and remove redundant openid scope. Otherwise, offline_access does not work and it will often ask for a login 🫠

Details

  1. The previous documentation used .env style syntax but wrapped the scopes in literal quotes (SSO_SCOPES="openid email profile offline_access"). When used in a Docker Compose array (i.e. yaml parser), Docker injects these literal quotes into the container variable, causing Vaultwarden to send malformed scope requests.
  2. openid scope is already prepended to the request, passing it explicitly in SSO_SCOPES resulted in duplicate scopes.

Before the changes (when used not in .env file):

{
    "flow": "<redacted>",
    "scopes": "openid email profile",
    "http_request": {
        "args": {
            "nonce": "<redacted>",
            "scope": "openid \"openid email profile offline_access\"",
            "state": "<redacted>",
            "client_id": "<client_id>",
            "inspector": "available",
            "redirect_uri": "https://vaultwarden.example.com/identity/connect/oidc-signin",
            "response_type": "code",
            "code_challenge": "<redacted>",
            "code_challenge_method": "S256"
        },
        "path": "/api/v3/flows/executor/default-provider-authorization-explicit-consent/",
        "method": "GET",
        "request_id": "<redacted>"
    },
    "authorized_application": {
        "pk": "<redacted>",
        "app": "authentik_core",
        "name": "Vaultwarden",
        "model_name": "application"
    }
}

After the changes:

{
    "flow": "<redacted>",
    "scopes": "offline_access profile email openid",
    "http_request": {
        "args": {
            "nonce": "<redacted>",
            "scope": "openid email profile offline_access",
            "state": "<redacted>",
            "client_id": "<client_id>",
            "inspector": "available",
            "redirect_uri": "https://vaultwarden.example.com/identity/connect/oidc-signin",
            "response_type": "code",
            "code_challenge": "<redacted>",
            "code_challenge_method": "S256"
        },
        "path": "/api/v3/flows/executor/default-provider-authorization-explicit-consent/",
        "method": "GET",
        "request_id": "<redacted>"
    },
    "authorized_application": {
        "pk": "<redacted>",
        "app": "authentik_core",
        "name": "Vaultwarden",
        "model_name": "application"
    }
}

Checklist

  • Local tests pass (ak test authentik/)
  • The code has been formatted (make lint-fix)

If an API change has been made

  • The API schema has been updated (make gen-build)

If changes to the frontend have been made

  • The code has been formatted (make web)

If applicable

  • The documentation has been updated
  • The documentation has been formatted (make docs)

Remove literal quotes to prevent injection errors and remove redundant openid scope

Signed-off-by: Daniil Kamakin <54929583+dkamakin@users.noreply.github.com>
@dkamakin dkamakin requested a review from a team as a code owner February 22, 2026 09:47
@netlify
Copy link

netlify bot commented Feb 22, 2026

Deploy Preview for authentik-integrations ready!

Name Link
🔨 Latest commit 5228015
🔍 Latest deploy log https://app.netlify.com/projects/authentik-integrations/deploys/699ad0b5f3e18400082f136e
😎 Deploy Preview https://deploy-preview-20459--authentik-integrations.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@netlify
Copy link

netlify bot commented Feb 22, 2026

Deploy Preview for authentik-docs ready!

Name Link
🔨 Latest commit 5228015
🔍 Latest deploy log https://app.netlify.com/projects/authentik-docs/deploys/699ad0b5510cb3000873f817
😎 Deploy Preview https://deploy-preview-20459--authentik-docs.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

Copy link
Contributor

@dewi-tik dewi-tik left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for catching this @dkamakin!

@dewi-tik dewi-tik enabled auto-merge (squash) February 22, 2026 12:17
@codecov
Copy link

codecov bot commented Feb 22, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 93.22%. Comparing base (1031b05) to head (5228015).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main   #20459      +/-   ##
==========================================
- Coverage   93.28%   93.22%   -0.07%     
==========================================
  Files         981      981              
  Lines       55169    55169              
==========================================
- Hits        51467    51431      -36     
- Misses       3702     3738      +36     
Flag Coverage Δ
conformance 37.45% <ø> (+<0.01%) ⬆️
e2e 43.26% <ø> (+<0.01%) ⬆️
integration 22.38% <ø> (-0.05%) ⬇️
unit 91.50% <ø> (+<0.01%) ⬆️
unit-migrate 91.51% <ø> (-0.01%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@dewi-tik dewi-tik merged commit 7a28837 into goauthentik:main Feb 22, 2026
100 of 101 checks passed
kensternberg-authentik added a commit that referenced this pull request Feb 23, 2026
* main:
  enterprise: monkey patch pyjwt to accept mismatching key (#20402)
  enterprise/lifecycle: use datetime instead of date to track review cycles (#20283)
  root: run `npm i` with `npm@11.10.1` in all subdirectories (#20471)
  providers/oauth2: device code flow client id via auth header (#20457)
  core: bump goauthentik/fips-debian from `4419749` to `d6def0a` in /lifecycle/container (#20467)
  core: bump goauthentik/fips-python from `d973c46` to `bccefee` in /lifecycle/container (#20466)
  core, web: bump ajv from 6.12.6 to 6.14.0 in /packages/prettier-config (#20462)
  ci: bump and fix daily (#20461)
  website/integrations: fix Vaultwarden SSO_SCOPES syntax (#20459)
  stages/user_login: log correct user when session binding is broken (#20094)
kensternberg-authentik added a commit that referenced this pull request Feb 23, 2026
* main: (167 commits)
  enterprise: monkey patch pyjwt to accept mismatching key (#20402)
  enterprise/lifecycle: use datetime instead of date to track review cycles (#20283)
  root: run `npm i` with `npm@11.10.1` in all subdirectories (#20471)
  providers/oauth2: device code flow client id via auth header (#20457)
  core: bump goauthentik/fips-debian from `4419749` to `d6def0a` in /lifecycle/container (#20467)
  core: bump goauthentik/fips-python from `d973c46` to `bccefee` in /lifecycle/container (#20466)
  core, web: bump ajv from 6.12.6 to 6.14.0 in /packages/prettier-config (#20462)
  ci: bump and fix daily (#20461)
  website/integrations: fix Vaultwarden SSO_SCOPES syntax (#20459)
  stages/user_login: log correct user when session binding is broken (#20094)
  web/flow: generate a single API object for network transactions and use it for the lifetime of the FlowExecutor (#20030)
  web/flow: refactor flow executor so component selection is in an easy-to-maintain table (#19999)
  website/integrations: gatus: fix config block  (#20446)
  core: bump msgraph-sdk from 1.54.0 to 1.55.0 (#20432)
  core: bump aws-cdk-lib from 2.238.0 to 2.239.0 (#20434)
  core: bump constructs from 10.5.0 to 10.5.1 (#20433)
  core: bump goauthentik/fips-python from `c272691` to `d973c46` in /lifecycle/container (#20437)
  core: bump goauthentik/fips-debian from `b0917af` to `4419749` in /lifecycle/container (#20438)
  web/admin/bugfix: Edit Stage not working. Invoking IdentificationStageForm not working (#20429)
  core: bump ruff from 0.15.1 to 0.15.2 (#20435)
  ...
kensternberg-authentik added a commit that referenced this pull request Feb 24, 2026
* main: (104 commits)
  sources/saml: improve exception handling for saml response parsing (#20125)
  web/flow: separate flow inspector lifecycle from flow executor lifecycle (#20063)
  web/maintenance: no unknown attributes part 2 (#19014)
  website/docs: add info about make install and recovery key (#20447)
  web: bump ajv from 6.12.6 to 6.14.0 in /web (#20479)
  providers/proxy: preserve URL-encoded path characters in redirect (#20476)
  policies: measure policy process from manager (#20477)
  enterprise: monkey patch pyjwt to accept mismatching key (#20402)
  enterprise/lifecycle: use datetime instead of date to track review cycles (#20283)
  root: run `npm i` with `npm@11.10.1` in all subdirectories (#20471)
  providers/oauth2: device code flow client id via auth header (#20457)
  core: bump goauthentik/fips-debian from `4419749` to `d6def0a` in /lifecycle/container (#20467)
  core: bump goauthentik/fips-python from `d973c46` to `bccefee` in /lifecycle/container (#20466)
  core, web: bump ajv from 6.12.6 to 6.14.0 in /packages/prettier-config (#20462)
  ci: bump and fix daily (#20461)
  website/integrations: fix Vaultwarden SSO_SCOPES syntax (#20459)
  stages/user_login: log correct user when session binding is broken (#20094)
  web/flow: generate a single API object for network transactions and use it for the lifetime of the FlowExecutor (#20030)
  web/flow: refactor flow executor so component selection is in an easy-to-maintain table (#19999)
  website/integrations: gatus: fix config block  (#20446)
  ...
kensternberg-authentik added a commit that referenced this pull request Feb 25, 2026
…/soc-captchas-and-webauthn

* web/flow/20261-tidy-identification-stage: (107 commits)
  Added some visibility keys, as per @GirlBossRush
  sources/saml: improve exception handling for saml response parsing (#20125)
  web/flow: separate flow inspector lifecycle from flow executor lifecycle (#20063)
  web/maintenance: no unknown attributes part 2 (#19014)
  website/docs: add info about make install and recovery key (#20447)
  web: bump ajv from 6.12.6 to 6.14.0 in /web (#20479)
  providers/proxy: preserve URL-encoded path characters in redirect (#20476)
  Weird merge bug: same function appeared twice.
  policies: measure policy process from manager (#20477)
  enterprise: monkey patch pyjwt to accept mismatching key (#20402)
  enterprise/lifecycle: use datetime instead of date to track review cycles (#20283)
  root: run `npm i` with `npm@11.10.1` in all subdirectories (#20471)
  providers/oauth2: device code flow client id via auth header (#20457)
  core: bump goauthentik/fips-debian from `4419749` to `d6def0a` in /lifecycle/container (#20467)
  core: bump goauthentik/fips-python from `d973c46` to `bccefee` in /lifecycle/container (#20466)
  core, web: bump ajv from 6.12.6 to 6.14.0 in /packages/prettier-config (#20462)
  ci: bump and fix daily (#20461)
  website/integrations: fix Vaultwarden SSO_SCOPES syntax (#20459)
  stages/user_login: log correct user when session binding is broken (#20094)
  web/flow: generate a single API object for network transactions and use it for the lifetime of the FlowExecutor (#20030)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants