[GH-ISSUE #6613] OIDC (Authentik) Login Option Des Not Appear on Desktop Browser Web Page #2486

Closed
opened 2026-03-03 02:18:52 +03:00 by kerem · 23 comments
Owner

Originally created by @pr0927 on GitHub (Dec 28, 2025).
Original GitHub issue: https://github.com/dani-garcia/vaultwarden/issues/6613

Prerequisites

Vaultwarden Support String

Your environment (Generated via diagnostics page)

  • Vaultwarden version: v1.35.0
  • Web-vault version: v2025.12.0
  • OS/Arch: linux/x86_64
  • Running within a container: true (Base: Debian)
  • Database type: PostgreSQL
  • Database version: PostgreSQL 16.4 (Debian 16.4-1.pgdg120+2) on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14) 12.2.0, 64-bit
  • Uses config.json: true
  • Uses a reverse proxy: true
  • IP Header check: true (X-Real-IP)
  • Internet access: true
  • Internet access via a proxy: false
  • DNS Check: true
  • TZ environment: America/Los_Angeles
  • Browser/Server Time Check: true
  • Server/NTP Time Check: true
  • Domain Configuration Check: true
  • HTTPS Check: true
  • Websocket Check: true
  • HTTP Response Checks: true

Config & Details (Generated via diagnostics page)

Show Config & Details

Environment settings which are overridden: DOMAIN, SIGNUPS_ALLOWED, ADMIN_TOKEN

Config:

{
  "_duo_akey": null,
  "_enable_duo": true,
  "_enable_email_2fa": true,
  "_enable_smtp": true,
  "_enable_yubico": true,
  "_icon_service_csp": "",
  "_icon_service_url": "",
  "_ip_header_enabled": true,
  "_max_note_size": 10000,
  "_smtp_img_src": "***:",
  "admin_ratelimit_max_burst": 3,
  "admin_ratelimit_seconds": 300,
  "admin_session_lifetime": 20,
  "admin_token": "***",
  "allowed_connect_src": "",
  "allowed_iframe_ancestors": "",
  "attachments_folder": "data/attachments",
  "auth_request_purge_schedule": "30 * * * * *",
  "authenticator_disable_time_drift": false,
  "data_folder": "data",
  "database_conn_init": "",
  "database_idle_timeout": 600,
  "database_max_conns": 10,
  "database_min_conns": 2,
  "database_timeout": 30,
  "database_url": "**********://*******************************************************************",
  "db_connection_retries": 15,
  "disable_2fa_remember": false,
  "disable_admin_token": false,
  "disable_icon_download": false,
  "dns_prefer_ipv6": false,
  "domain": "*****://****************",
  "domain_origin": "*****://****************",
  "domain_path": "",
  "domain_set": true,
  "duo_context_purge_schedule": "30 * * * * *",
  "duo_host": null,
  "duo_ikey": null,
  "duo_skey": null,
  "duo_use_iframe": false,
  "email_2fa_auto_fallback": true,
  "email_2fa_enforce_on_verified_invite": true,
  "email_attempts_limit": 6,
  "email_change_allowed": true,
  "email_expiration_time": 3600,
  "email_token_size": 6,
  "emergency_access_allowed": true,
  "emergency_notification_reminder_schedule": "0 3 * * * *",
  "emergency_request_timeout_schedule": "0 7 * * * *",
  "enable_db_wal": true,
  "enable_websocket": true,
  "enforce_single_org_with_reset_pw_policy": false,
  "event_cleanup_schedule": "0 10 0 * * *",
  "events_days_retain": null,
  "experimental_client_feature_flags": "",
  "extended_logging": true,
  "helo_name": null,
  "hibp_api_key": "***",
  "http_request_block_non_global_ips": true,
  "http_request_block_regex": null,
  "icon_blacklist_non_global_ips": true,
  "icon_blacklist_regex": null,
  "icon_cache_folder": "data/icon_cache",
  "icon_cache_negttl": 259200,
  "icon_cache_ttl": 2592000,
  "icon_download_timeout": 10,
  "icon_redirect_code": 302,
  "icon_service": "internal",
  "incomplete_2fa_schedule": "30 * * * * *",
  "incomplete_2fa_time_limit": 3,
  "increase_note_size_limit": false,
  "invitation_expiration_hours": 120,
  "invitation_org_name": "[redacted]",
  "invitations_allowed": true,
  "ip_header": "X-Real-IP",
  "job_poll_interval_ms": 30000,
  "log_file": null,
  "log_level": "info",
  "log_timestamp_format": "%Y-%m-%d %H:%M:%S.%3f",
  "login_ratelimit_max_burst": 10,
  "login_ratelimit_seconds": 60,
  "org_attachment_limit": null,
  "org_creation_users": "",
  "org_events_enabled": false,
  "org_groups_enabled": false,
  "password_hints_allowed": true,
  "password_iterations": 600000,
  "purge_incomplete_sso_auth": "0 20 0 * * *",
  "push_enabled": true,
  "push_identity_uri": "https://identity.bitwarden.com",
  "push_installation_id": "***",
  "push_installation_key": "***",
  "push_relay_uri": "https://push.bitwarden.com",
  "reload_templates": false,
  "require_device_email": false,
  "rsa_key_filename": "data/rsa_key",
  "send_purge_schedule": "0 5 * * * *",
  "sendmail_command": null,
  "sends_allowed": true,
  "sends_folder": "data/sends",
  "show_password_hint": false,
  "signups_allowed": false,
  "signups_domains_whitelist": "",
  "signups_verify": true,
  "signups_verify_resend_limit": 6,
  "signups_verify_resend_time": 3600,
  "smtp_accept_invalid_certs": false,
  "smtp_accept_invalid_hostnames": false,
  "smtp_auth_mechanism": "Plain",
  "smtp_debug": false,
  "smtp_embed_images": true,
  "smtp_explicit_tls": null,
  "smtp_from": "****************",
  "smtp_from_name": "*****",
  "smtp_host": "******************",
  "smtp_password": "***",
  "smtp_port": 587,
  "smtp_security": "starttls",
  "smtp_ssl": null,
  "smtp_timeout": 15,
  "smtp_username": "****************",
  "sso_allow_unknown_email_verification": false,
  "sso_audience_trusted": null,
  "sso_auth_only_not_session": false,
  "sso_authority": "*****://******************************************",
  "sso_authorize_extra_params": "",
  "sso_callback_path": "*****://*********************************************",
  "sso_client_cache_expiration": 0,
  "sso_client_id": "****************************************",
  "sso_client_secret": "***",
  "sso_debug_tokens": false,
  "sso_enabled": true,
  "sso_master_password_policy": null,
  "sso_only": false,
  "sso_pkce": true,
  "sso_scopes": "openid email profile offline_access",
  "sso_signups_match_email": true,
  "templates_folder": "data/templates",
  "tmp_folder": "data/tmp",
  "trash_auto_delete_days": null,
  "trash_purge_schedule": "0 5 0 * * *",
  "use_sendmail": false,
  "use_syslog": false,
  "user_attachment_limit": null,
  "user_send_limit": null,
  "web_vault_enabled": true,
  "web_vault_folder": "web-vault/",
  "yubico_client_id": null,
  "yubico_secret_key": null,
  "yubico_server": null
}

Vaultwarden Build Version

1.35

Deployment method

Official Container Image

Custom deployment method

No response

Reverse Proxy

Nginx Proxy Manager

Host/Server Operating System

Linux

Operating System Version

Debian

Clients

Web Vault

Client Version

No response

Steps To Reproduce

  1. Go to main Vaultwarden address.
  2. Weirdly get prompted to put in e-mail address.
  3. Get taken to login page where an option is shown to login with a device.
  4. See that there is no OIDC login option.

Expected Result

I expected to see an OIDC login option.

Actual Result

I don't see an OIDC login option - I do on mobile, and I do within the Firefox browser extension - but not in any desktop web browser.

Logs


Screenshots or Videos

Image Image

Additional Context

Apologies in advance for the poor practice of putting some of this info in environment variables (was one of my first Docker containers, some legacy security practices...), planning on fixing this shortly with a .env file, but for now, my Docker compose:

services:
  postgres-vaultwarden:
    image: postgres:16.4
    container_name: postgres-vaultwarden
    labels:
      - "com.centurylinklabs.watchtower.monitor-only=true"
    user: 1000:1000
    restart: unless-stopped
    shm_size: 256mb
    environment:
      POSTGRES_USER: vaultwarden_user
      POSTGRES_PASSWORD: [redacted]
      POSTGRES_DB: vaultwarden_db
      TZ: America/Los_Angeles
    volumes:
      - /data/postgres-vaultwarden/data:/var/lib/postgresql/data
    ports:
      - "5433:5432"
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U vaultwarden_user -d vaultwarden_db"]
      interval: 30s
      timeout: 10s
      retries: 5
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    labels:
      - "com.centurylinklabs.watchtower.monitor-only=true"
    environment:
      DOMAIN: "https://vault.[domain.tld]"  # required when using a reverse proxy; your domain; vaultwarden needs to know it's https to work properly with attachments
      SIGNUPS_ALLOWED: false # Deactivate this with "false" after you have created your account so that no strangers can register
      PUSH_ENABLED: true
      PUSH_INSTALLATION_ID: [redacted]
      PUSH_INSTALLATION_KEY: [redacted]
      DATABASE_URL: "postgresql://vaultwarden_user:[redacted]@postgres-vaultwarden:5432/vaultwarden_db"
      POSTGRES_USER: vaultwarden_user
      POSTGRES_PASSWORD: [redacted]
      POSTGRES_IP: postgres-vaultwarden
      POSTGRES_PORT: 5432
      POSTGRES_DB: vaultwarden_db
      JWT_SECRET: [redacted]
      TZ: America/Los_Angeles
      ADMIN_TOKEN: [redacted]
      SSO_ENABLED: true
      SSO_AUTHORITY: "https://auth.domain.tld/application/o/vaultwarden/"
      SSO_CLIENT_ID: [redacted]
      SSO_CLIENT_SECRET: [redacted]
      SSO_SCOPES: "openid email profile offline_access"
      SSO_ALLOW_UNKNOWN_EMAIL_VERIFICATION: false
      SSO_CLIENT_CACHE_EXPIRATION: 0
      SSO_ONLY: false # Set to true to disable email+master password login and require SSO
      SSO_SIGNUPS_MATCH_EMAIL: true # Match first SSO login to existing account by email
    ports:
      - 11001:80 # you can replace the 11001 with your preferred port
    volumes:
      - /data/vaultwarden/data:/data
    depends_on:
      postgres-vaultwarden:
        condition: service_healthy
    restart: unless-stopped
Originally created by @pr0927 on GitHub (Dec 28, 2025). Original GitHub issue: https://github.com/dani-garcia/vaultwarden/issues/6613 ### Prerequisites - [x] I have searched the existing **Closed _AND_ Open** [Issues](https://github.com/dani-garcia/vaultwarden/issues?q=is%3Aissue%20) **_AND_** [Discussions](https://github.com/dani-garcia/vaultwarden/discussions?discussions_q=) - [x] I have searched and read the [documentation](https://github.com/dani-garcia/vaultwarden/wiki/) ### Vaultwarden Support String ### Your environment (Generated via diagnostics page) * Vaultwarden version: v1.35.0 * Web-vault version: v2025.12.0 * OS/Arch: linux/x86_64 * Running within a container: true (Base: Debian) * Database type: PostgreSQL * Database version: PostgreSQL 16.4 (Debian 16.4-1.pgdg120+2) on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14) 12.2.0, 64-bit * Uses config.json: true * Uses a reverse proxy: true * IP Header check: true (X-Real-IP) * Internet access: true * Internet access via a proxy: false * DNS Check: true * TZ environment: America/Los_Angeles * Browser/Server Time Check: true * Server/NTP Time Check: true * Domain Configuration Check: true * HTTPS Check: true * Websocket Check: true * HTTP Response Checks: true ### Config & Details (Generated via diagnostics page) <details><summary>Show Config & Details</summary> **Environment settings which are overridden:** DOMAIN, SIGNUPS_ALLOWED, ADMIN_TOKEN **Config:** ```json { "_duo_akey": null, "_enable_duo": true, "_enable_email_2fa": true, "_enable_smtp": true, "_enable_yubico": true, "_icon_service_csp": "", "_icon_service_url": "", "_ip_header_enabled": true, "_max_note_size": 10000, "_smtp_img_src": "***:", "admin_ratelimit_max_burst": 3, "admin_ratelimit_seconds": 300, "admin_session_lifetime": 20, "admin_token": "***", "allowed_connect_src": "", "allowed_iframe_ancestors": "", "attachments_folder": "data/attachments", "auth_request_purge_schedule": "30 * * * * *", "authenticator_disable_time_drift": false, "data_folder": "data", "database_conn_init": "", "database_idle_timeout": 600, "database_max_conns": 10, "database_min_conns": 2, "database_timeout": 30, "database_url": "**********://*******************************************************************", "db_connection_retries": 15, "disable_2fa_remember": false, "disable_admin_token": false, "disable_icon_download": false, "dns_prefer_ipv6": false, "domain": "*****://****************", "domain_origin": "*****://****************", "domain_path": "", "domain_set": true, "duo_context_purge_schedule": "30 * * * * *", "duo_host": null, "duo_ikey": null, "duo_skey": null, "duo_use_iframe": false, "email_2fa_auto_fallback": true, "email_2fa_enforce_on_verified_invite": true, "email_attempts_limit": 6, "email_change_allowed": true, "email_expiration_time": 3600, "email_token_size": 6, "emergency_access_allowed": true, "emergency_notification_reminder_schedule": "0 3 * * * *", "emergency_request_timeout_schedule": "0 7 * * * *", "enable_db_wal": true, "enable_websocket": true, "enforce_single_org_with_reset_pw_policy": false, "event_cleanup_schedule": "0 10 0 * * *", "events_days_retain": null, "experimental_client_feature_flags": "", "extended_logging": true, "helo_name": null, "hibp_api_key": "***", "http_request_block_non_global_ips": true, "http_request_block_regex": null, "icon_blacklist_non_global_ips": true, "icon_blacklist_regex": null, "icon_cache_folder": "data/icon_cache", "icon_cache_negttl": 259200, "icon_cache_ttl": 2592000, "icon_download_timeout": 10, "icon_redirect_code": 302, "icon_service": "internal", "incomplete_2fa_schedule": "30 * * * * *", "incomplete_2fa_time_limit": 3, "increase_note_size_limit": false, "invitation_expiration_hours": 120, "invitation_org_name": "[redacted]", "invitations_allowed": true, "ip_header": "X-Real-IP", "job_poll_interval_ms": 30000, "log_file": null, "log_level": "info", "log_timestamp_format": "%Y-%m-%d %H:%M:%S.%3f", "login_ratelimit_max_burst": 10, "login_ratelimit_seconds": 60, "org_attachment_limit": null, "org_creation_users": "", "org_events_enabled": false, "org_groups_enabled": false, "password_hints_allowed": true, "password_iterations": 600000, "purge_incomplete_sso_auth": "0 20 0 * * *", "push_enabled": true, "push_identity_uri": "https://identity.bitwarden.com", "push_installation_id": "***", "push_installation_key": "***", "push_relay_uri": "https://push.bitwarden.com", "reload_templates": false, "require_device_email": false, "rsa_key_filename": "data/rsa_key", "send_purge_schedule": "0 5 * * * *", "sendmail_command": null, "sends_allowed": true, "sends_folder": "data/sends", "show_password_hint": false, "signups_allowed": false, "signups_domains_whitelist": "", "signups_verify": true, "signups_verify_resend_limit": 6, "signups_verify_resend_time": 3600, "smtp_accept_invalid_certs": false, "smtp_accept_invalid_hostnames": false, "smtp_auth_mechanism": "Plain", "smtp_debug": false, "smtp_embed_images": true, "smtp_explicit_tls": null, "smtp_from": "****************", "smtp_from_name": "*****", "smtp_host": "******************", "smtp_password": "***", "smtp_port": 587, "smtp_security": "starttls", "smtp_ssl": null, "smtp_timeout": 15, "smtp_username": "****************", "sso_allow_unknown_email_verification": false, "sso_audience_trusted": null, "sso_auth_only_not_session": false, "sso_authority": "*****://******************************************", "sso_authorize_extra_params": "", "sso_callback_path": "*****://*********************************************", "sso_client_cache_expiration": 0, "sso_client_id": "****************************************", "sso_client_secret": "***", "sso_debug_tokens": false, "sso_enabled": true, "sso_master_password_policy": null, "sso_only": false, "sso_pkce": true, "sso_scopes": "openid email profile offline_access", "sso_signups_match_email": true, "templates_folder": "data/templates", "tmp_folder": "data/tmp", "trash_auto_delete_days": null, "trash_purge_schedule": "0 5 0 * * *", "use_sendmail": false, "use_syslog": false, "user_attachment_limit": null, "user_send_limit": null, "web_vault_enabled": true, "web_vault_folder": "web-vault/", "yubico_client_id": null, "yubico_secret_key": null, "yubico_server": null } ``` </details> ### Vaultwarden Build Version 1.35 ### Deployment method Official Container Image ### Custom deployment method _No response_ ### Reverse Proxy Nginx Proxy Manager ### Host/Server Operating System Linux ### Operating System Version Debian ### Clients Web Vault ### Client Version _No response_ ### Steps To Reproduce 1. Go to main Vaultwarden address. 2. Weirdly get prompted to put in e-mail address. 3. Get taken to login page where an option is shown to login with a device. 4. See that there is no OIDC login option. ### Expected Result I expected to see an OIDC login option. ### Actual Result I don't see an OIDC login option - I do on mobile, and I do within the Firefox browser extension - but not in any desktop web browser. ### Logs ```text ``` ### Screenshots or Videos <img width="1920" height="970" alt="Image" src="https://github.com/user-attachments/assets/b26114e2-a4cf-48f5-9eb9-91dcf2db92e2" /> <img width="1920" height="970" alt="Image" src="https://github.com/user-attachments/assets/a2bdccbf-b2e2-4919-adab-98f221b9fa8f" /> ### Additional Context Apologies in advance for the poor practice of putting some of this info in environment variables (was one of my first Docker containers, some legacy security practices...), planning on fixing this shortly with a .env file, but for now, my Docker compose: ``` services: postgres-vaultwarden: image: postgres:16.4 container_name: postgres-vaultwarden labels: - "com.centurylinklabs.watchtower.monitor-only=true" user: 1000:1000 restart: unless-stopped shm_size: 256mb environment: POSTGRES_USER: vaultwarden_user POSTGRES_PASSWORD: [redacted] POSTGRES_DB: vaultwarden_db TZ: America/Los_Angeles volumes: - /data/postgres-vaultwarden/data:/var/lib/postgresql/data ports: - "5433:5432" healthcheck: test: ["CMD-SHELL", "pg_isready -U vaultwarden_user -d vaultwarden_db"] interval: 30s timeout: 10s retries: 5 vaultwarden: image: vaultwarden/server:latest container_name: vaultwarden labels: - "com.centurylinklabs.watchtower.monitor-only=true" environment: DOMAIN: "https://vault.[domain.tld]" # required when using a reverse proxy; your domain; vaultwarden needs to know it's https to work properly with attachments SIGNUPS_ALLOWED: false # Deactivate this with "false" after you have created your account so that no strangers can register PUSH_ENABLED: true PUSH_INSTALLATION_ID: [redacted] PUSH_INSTALLATION_KEY: [redacted] DATABASE_URL: "postgresql://vaultwarden_user:[redacted]@postgres-vaultwarden:5432/vaultwarden_db" POSTGRES_USER: vaultwarden_user POSTGRES_PASSWORD: [redacted] POSTGRES_IP: postgres-vaultwarden POSTGRES_PORT: 5432 POSTGRES_DB: vaultwarden_db JWT_SECRET: [redacted] TZ: America/Los_Angeles ADMIN_TOKEN: [redacted] SSO_ENABLED: true SSO_AUTHORITY: "https://auth.domain.tld/application/o/vaultwarden/" SSO_CLIENT_ID: [redacted] SSO_CLIENT_SECRET: [redacted] SSO_SCOPES: "openid email profile offline_access" SSO_ALLOW_UNKNOWN_EMAIL_VERIFICATION: false SSO_CLIENT_CACHE_EXPIRATION: 0 SSO_ONLY: false # Set to true to disable email+master password login and require SSO SSO_SIGNUPS_MATCH_EMAIL: true # Match first SSO login to existing account by email ports: - 11001:80 # you can replace the 11001 with your preferred port volumes: - /data/vaultwarden/data:/data depends_on: postgres-vaultwarden: condition: service_healthy restart: unless-stopped ```
kerem 2026-03-03 02:18:52 +03:00
  • closed this issue
  • added the
    bug
    label
Author
Owner

@dani-garcia commented on GitHub (Dec 28, 2025):

If you see the option within other clients, it's likely your web browser has some old configuration cached. Can you try opening the web vault in private mode? That should make sure that some stale config is not messing things for you

<!-- gh-comment-id:3694961446 --> @dani-garcia commented on GitHub (Dec 28, 2025): If you see the option within other clients, it's likely your web browser has some old configuration cached. Can you try opening the web vault in private mode? That should make sure that some stale config is not messing things for you
Author
Owner

@pr0927 commented on GitHub (Dec 28, 2025):

Whoa what was a quick response - I did try it in Firefox, and I tried in Chromium too (also in a private window) - same deal.

Could NPM be playing a role?

<!-- gh-comment-id:3694962224 --> @pr0927 commented on GitHub (Dec 28, 2025): Whoa what was a quick response - I did try it in Firefox, and I tried in Chromium too (also in a private window) - same deal. Could NPM be playing a role?
Author
Owner

@dani-garcia commented on GitHub (Dec 28, 2025):

Hmm weird, I wonder if you bypass the button and go directly to the SSO login page, does it work?

https://vault.your.domain/#/sso

If that works, then as far as I know we're hiding the button with CSS, so you can check if the CSS is being generated correctly:

https://vault.your.domain/css/vaultwarden.css

If you see a vw-sso-login class in that css then something is going funky there.

<!-- gh-comment-id:3694968826 --> @dani-garcia commented on GitHub (Dec 28, 2025): Hmm weird, I wonder if you bypass the button and go directly to the SSO login page, does it work? ``` https://vault.your.domain/#/sso ``` If that works, then as far as I know we're hiding the button with CSS, so you can check if the CSS is being generated correctly: ``` https://vault.your.domain/css/vaultwarden.css ``` If you see a `vw-sso-login` class in that css then something is going funky there.
Author
Owner

@pr0927 commented on GitHub (Dec 28, 2025):

Interesting, I get this when I visit that URL:

Image

My CSS:

.providers-2fa-3,app-root a[routerlink="/signup"],bit-nav-logo bit-nav-item .bwi-shield,bit-dialog div.tw-ml-4:has(bit-form-control input),bit-dialog div.tw-col-span-4:has(input[formcontrolname*=access],input[formcontrolname*=manage]),app-security>app-two-factor-setup>form,app-org-reports-home>app-report-list>div.tw-inline-grid>div:nth-child(6),app-org-account form.ng-untouched:nth-child(5),app-organization-plans>form>bit-section:nth-child(2),bit-nav-item[route="settings/two-factor"],a[href$="/settings/two-factor"],.vw-other-login,.vw-or-text,.vw-passkey-login,app-change-password app-webauthn-login-settings,.vw-sso-login,.vw-email-sso,a[href$="/settings/sponsored-families"],bit-nav-item[route="settings/subscription"],.vw-hide,head{display:none !important}bit-nav-logo bit-nav-item a:before{content:"";background-image:url("../images/icon-white.svg");background-repeat:no-repeat;background-position:center center;height:32px;display:block}
<!-- gh-comment-id:3694971364 --> @pr0927 commented on GitHub (Dec 28, 2025): Interesting, I get this when I visit that URL: <img width="1920" height="965" alt="Image" src="https://github.com/user-attachments/assets/4902c4c3-a458-4958-bc64-6f726cbe3ce3" /> My CSS: ``` .providers-2fa-3,app-root a[routerlink="/signup"],bit-nav-logo bit-nav-item .bwi-shield,bit-dialog div.tw-ml-4:has(bit-form-control input),bit-dialog div.tw-col-span-4:has(input[formcontrolname*=access],input[formcontrolname*=manage]),app-security>app-two-factor-setup>form,app-org-reports-home>app-report-list>div.tw-inline-grid>div:nth-child(6),app-org-account form.ng-untouched:nth-child(5),app-organization-plans>form>bit-section:nth-child(2),bit-nav-item[route="settings/two-factor"],a[href$="/settings/two-factor"],.vw-other-login,.vw-or-text,.vw-passkey-login,app-change-password app-webauthn-login-settings,.vw-sso-login,.vw-email-sso,a[href$="/settings/sponsored-families"],bit-nav-item[route="settings/subscription"],.vw-hide,head{display:none !important}bit-nav-logo bit-nav-item a:before{content:"";background-image:url("../images/icon-white.svg");background-repeat:no-repeat;background-position:center center;height:32px;display:block} ```
Author
Owner

@csickendieck commented on GitHub (Dec 28, 2025):

I just updated it, following authentic's instructions based on the Vaultwarden Wiki.

It's the same for me. Also in Edge and Opera.

CSS class:

.providers-2fa-3,.providers-2fa-1,app-user-layout app-danger-zone button:nth-child(1),bit-nav-logo bit-nav-item .bwi-shield,bit-dialog div.tw-ml-4:has(bit-form-control input),bit-dialog div.tw-col-span-4:has(input[formcontrolname*=access],input[formcontrolname*=manage]),app-security>app-two-factor-setup>form,app-org-reports-home>app-report-list>div.tw-inline-grid>div:nth-child(6),app-org-account form.ng-untouched:nth-child(5),app-organization-plans>form>bit-section:nth-child(2),bit-nav-item[route="settings/two-factor"],a[href$="/settings/two-factor"],.vw-other-login,.vw-or-text,.vw-passkey-login,app-user-layout app-password-settings app-webauthn-login-settings,.vw-sso-login,.vw-email-sso,a[href$="/settings/sponsored-families"],bit-nav-item[route="settings/subscription"],.vw-hide,head{display:none !important}bit-nav-logo bit-nav-item a:before{content:"";background-image:url("../images/icon-white.svg");background-repeat:no-repeat;background-position:center center;height:32px;display:block}

Bypassing the login page:

Image
<!-- gh-comment-id:3694971422 --> @csickendieck commented on GitHub (Dec 28, 2025): I just updated it, following authentic's instructions based on the Vaultwarden Wiki. It's the same for me. Also in Edge and Opera. CSS class: `.providers-2fa-3,.providers-2fa-1,app-user-layout app-danger-zone button:nth-child(1),bit-nav-logo bit-nav-item .bwi-shield,bit-dialog div.tw-ml-4:has(bit-form-control input),bit-dialog div.tw-col-span-4:has(input[formcontrolname*=access],input[formcontrolname*=manage]),app-security>app-two-factor-setup>form,app-org-reports-home>app-report-list>div.tw-inline-grid>div:nth-child(6),app-org-account form.ng-untouched:nth-child(5),app-organization-plans>form>bit-section:nth-child(2),bit-nav-item[route="settings/two-factor"],a[href$="/settings/two-factor"],.vw-other-login,.vw-or-text,.vw-passkey-login,app-user-layout app-password-settings app-webauthn-login-settings,.vw-sso-login,.vw-email-sso,a[href$="/settings/sponsored-families"],bit-nav-item[route="settings/subscription"],.vw-hide,head{display:none !important}bit-nav-logo bit-nav-item a:before{content:"";background-image:url("../images/icon-white.svg");background-repeat:no-repeat;background-position:center center;height:32px;display:block}` Bypassing the login page: <img width="626" height="593" alt="Image" src="https://github.com/user-attachments/assets/99fa0a51-e7ab-4df3-a678-82b06c4b98a0" />
Author
Owner

@csickendieck commented on GitHub (Dec 28, 2025):

@pr0927 Could you please check your admin page and the OpenID Connect SSO settings?

Is it enabled? It wasn't enabled for me, so I enabled it, even though the environment variables were correct in the first step.

This resolved the local IP address issue. However, I'm still getting a redirect error. So what, authentic is configured for the domain.

Local IP address: Seems to be working.

Domain: SSO still isn't working (see screenshots above). I'm also using the Nginx Proxy Manager.

<!-- gh-comment-id:3694993412 --> @csickendieck commented on GitHub (Dec 28, 2025): @pr0927 Could you please check your admin page and the OpenID Connect SSO settings? Is it enabled? It wasn't enabled for me, so I enabled it, even though the environment variables were correct in the first step. This resolved the local IP address issue. However, I'm still getting a redirect error. So what, authentic is configured for the domain. Local IP address: Seems to be working. Domain: SSO still isn't working (see screenshots above). I'm also using the Nginx Proxy Manager.
Author
Owner

@m-spitfire commented on GitHub (Dec 28, 2025):

I have the same issue with @pr0927 where I can see SSO option in other clients, and it works, however the web client doesn't show the button. The sso link also works - where I get the page and after entering my email I login. I think it's a css issue

Image

The page doesn't show the button, even though it's in the html. The reason is they are under a div with class tw-hidden.

<!-- gh-comment-id:3695014088 --> @m-spitfire commented on GitHub (Dec 28, 2025): I have the same issue with @pr0927 where I can see SSO option in other clients, and it works, however the web client doesn't show the button. The sso link also works - where I get the page and after entering my email I login. I think it's a css issue <img width="1190" height="476" alt="Image" src="https://github.com/user-attachments/assets/b66cff5b-49ae-4f23-9e6f-76773466aee4" /> The page doesn't show the button, even though it's in the html. The reason is they are under a div with class `tw-hidden`.
Author
Owner

@ljhardy commented on GitHub (Dec 28, 2025):

Slightly different problem, maybe related, this is my initial login screen, even though I have SSO_ONLY: set to false:

Image

When I fill in the email address and hit "Use single sign-in", it directs me to my SSO (Authentik), then back to vaultwarden for my Authenticator code, then right back to the initial login screen, above.

<!-- gh-comment-id:3695051410 --> @ljhardy commented on GitHub (Dec 28, 2025): Slightly different problem, maybe related, this is my initial login screen, even though I have SSO_ONLY: set to false: <img width="923" height="613" alt="Image" src="https://github.com/user-attachments/assets/b6329a1b-2965-4eec-b797-a18a6e89113a" /> When I fill in the email address and hit "Use single sign-in", it directs me to my SSO (Authentik), then back to vaultwarden for my Authenticator code, then right back to the initial login screen, above.
Author
Owner

@radokristof commented on GitHub (Dec 28, 2025):

I had the same issue. I was using Cloudflare proxy and it had some old assets configured, that's why private browsing, clearing cache, etc.. did not work.
Clearing Cloudflare cache for my domain worked and SSO button appeared.

<!-- gh-comment-id:3695055732 --> @radokristof commented on GitHub (Dec 28, 2025): I had the same issue. I was using Cloudflare proxy and it had some old assets configured, that's why private browsing, clearing cache, etc.. did not work. Clearing Cloudflare cache for my domain worked and SSO button appeared.
Author
Owner

@dani-garcia commented on GitHub (Dec 28, 2025):

Yeah, my guess is there's some proxy cache causing issues, if you open https://vault.your.domain/css/vaultwarden.css and see .vw-sso-login in it, try opening https://vault.your.domain/css/vaultwarden.css?abc=123 to try to bust the proxy and browser caches. If the result from that doesn't have the .vw-sso-login class in it, then your issue is with some caching layer somewhere. We're putting headers on that file to be cached for a day, so it might be causing issues: github.com/dani-garcia/vaultwarden@eb2a56aea1/src/api/web.rs (L102-L103)

<!-- gh-comment-id:3695065059 --> @dani-garcia commented on GitHub (Dec 28, 2025): Yeah, my guess is there's some proxy cache causing issues, if you open `https://vault.your.domain/css/vaultwarden.css` and see `.vw-sso-login` in it, try opening `https://vault.your.domain/css/vaultwarden.css?abc=123` to try to bust the proxy and browser caches. If the result from that doesn't have the `.vw-sso-login` class in it, then your issue is with some caching layer somewhere. We're putting headers on that file to be cached for a day, so it might be causing issues: https://github.com/dani-garcia/vaultwarden/blob/eb2a56aea101f8e747228ebe497a5576ab44662b/src/api/web.rs#L102-L103
Author
Owner

@pr0927 commented on GitHub (Dec 28, 2025):

@pr0927 Could you please check your admin page and the OpenID Connect SSO settings?

Is it enabled? It wasn't enabled for me, so I enabled it, even though the environment variables were correct in the first step.

This resolved the local IP address issue. However, I'm still getting a redirect error. So what, authentic is configured for the domain.

Local IP address: Seems to be working.

Domain: SSO still isn't working (see screenshots above). I'm also using the Nginx Proxy Manager.

Yep enabled in there. I never tried it with local IP, only my external domain address.

I had the same issue. I was using Cloudflare proxy and it had some old assets configured, that's why private browsing, clearing cache, etc.. did not work. Clearing Cloudflare cache for my domain worked and SSO button appeared.

Oh! Going to give this a try then.

Yeah, my guess is there's some proxy cache causing issues, if you open https://vault.your.domain/css/vaultwarden.css and see .vw-sso-login in it, try opening https://vault.your.domain/css/vaultwarden.css?abc=123 to try to bust the proxy and browser caches. If the result from that doesn't have the .vw-sso-login class in it, then your issue is with some caching layer somewhere. We're putting headers on that file to be cached for a day, so it might be causing issues:

vaultwarden/src/api/web.rs

Lines 102 to 103 in eb2a56a
// Cache for one day should be enough and not too much
Cached::ttl(Css(css), 86_400, false)

Yep changing to the "=123" URL made that bit disappear.

<!-- gh-comment-id:3695068668 --> @pr0927 commented on GitHub (Dec 28, 2025): > [@pr0927](https://github.com/pr0927) Could you please check your admin page and the OpenID Connect SSO settings? > > Is it enabled? It wasn't enabled for me, so I enabled it, even though the environment variables were correct in the first step. > > This resolved the local IP address issue. However, I'm still getting a redirect error. So what, authentic is configured for the domain. > > Local IP address: Seems to be working. > > Domain: SSO still isn't working (see screenshots above). I'm also using the Nginx Proxy Manager. Yep enabled in there. I never tried it with local IP, only my external domain address. > I had the same issue. I was using Cloudflare proxy and it had some old assets configured, that's why private browsing, clearing cache, etc.. did not work. Clearing Cloudflare cache for my domain worked and SSO button appeared. Oh! Going to give this a try then. > Yeah, my guess is there's some proxy cache causing issues, if you open `https://vault.your.domain/css/vaultwarden.css` and see `.vw-sso-login` in it, try opening `https://vault.your.domain/css/vaultwarden.css?abc=123` to try to bust the proxy and browser caches. If the result from that doesn't have the `.vw-sso-login` class in it, then your issue is with some caching layer somewhere. We're putting headers on that file to be cached for a day, so it might be causing issues: > > [vaultwarden/src/api/web.rs](https://github.com/dani-garcia/vaultwarden/blob/eb2a56aea101f8e747228ebe497a5576ab44662b/src/api/web.rs#L102-L103) > > Lines 102 to 103 in [eb2a56a](/dani-garcia/vaultwarden/commit/eb2a56aea101f8e747228ebe497a5576ab44662b) > // Cache for one day should be enough and not too much > Cached::ttl(Css(css), 86_400, false) Yep changing to the "=123" URL made that bit disappear.
Author
Owner

@ljhardy commented on GitHub (Dec 28, 2025):

In my case, after I changed the token lifetime to something longer that 5 minutes, I got farther along in the process. After clearing the cache etc. AND changing the token lifetime as indicated in the wiki, it seems to be working!!

Image
<!-- gh-comment-id:3695070849 --> @ljhardy commented on GitHub (Dec 28, 2025): In my case, after I changed the token lifetime to something longer that 5 minutes, I got farther along in the process. After clearing the cache etc. AND changing the token lifetime as indicated in the wiki, it seems to be working!! <img width="1073" height="364" alt="Image" src="https://github.com/user-attachments/assets/420c63e5-819c-489e-8146-3a8049461e95" />
Author
Owner

@pr0927 commented on GitHub (Dec 28, 2025):

Alright clearing the Cloudflare cache like @radokristof suggested worked. But interestingly, I can't proceed on this page until I put my e-mail address in - when I click on "Use single sign-on" I get this:

Image

Once I do put in my e-mail address and choose that, it proceeds to Authentik. That part worked fine and after I put my master password in, I got into my vault.

One thing to note - I saw this same page on mobile when re-logging into my Bitwarden Android app:

Image

BUT, that empty box was filled with some "dummy" placeholder text - I submitted it and it worked. Should I even be seeing that page? If so, what should be put in there? Did the cache cleanse make it unlikely to see it again?

<!-- gh-comment-id:3695072542 --> @pr0927 commented on GitHub (Dec 28, 2025): Alright clearing the Cloudflare cache like @radokristof suggested worked. But interestingly, I can't proceed on this page until I put my e-mail address in - when I click on "Use single sign-on" I get this: <img width="1080" height="965" alt="Image" src="https://github.com/user-attachments/assets/fb4e9bf6-f7b0-4bc6-8d26-6ccb5c546c37" /> Once I do put in my e-mail address and choose that, it proceeds to Authentik. That part worked fine and after I put my master password in, I got into my vault. One thing to note - I saw this same page on mobile when re-logging into my Bitwarden Android app: <img width="1920" height="965" alt="Image" src="https://github.com/user-attachments/assets/e1d64b31-53a3-4cd2-b471-327318e13da1" /> BUT, that empty box was filled with some "dummy" placeholder text - I submitted it and it worked. Should I even be seeing that page? If so, what should be put in there? Did the cache cleanse make it unlikely to see it again?
Author
Owner

@csickendieck commented on GitHub (Dec 28, 2025):

The Cloudflare cache and the token lifetime, that was it in my case. Just clear the Cloudflare cache haven't worked.

Thank you so much @radokristof @dani-garcia @ljhardy @pr0927. You're great.

<!-- gh-comment-id:3695088396 --> @csickendieck commented on GitHub (Dec 28, 2025): The Cloudflare cache and the token lifetime, that was it in my case. Just clear the Cloudflare cache haven't worked. Thank you so much @radokristof @dani-garcia @ljhardy @pr0927. You're great.
Author
Owner

@buzzard10 commented on GitHub (Dec 29, 2025):

Is it really required to enter email address? It would be great if we could skip this part..

<!-- gh-comment-id:3697000849 --> @buzzard10 commented on GitHub (Dec 29, 2025): Is it really required to enter email address? It would be great if we could skip this part..
Author
Owner

@austin-dudzik commented on GitHub (Dec 29, 2025):

Can also confirm that it is indeed Cloudflare's side, as I have the same setup using Authentik and CF Tunnels, and was not seeing the SSO button either after environment variable changes, leading me here.

It's as easy as going into the Cloudflare dashboard, navigating to the domain, then Caching -> Configuration -> Purge Cache -> Purge Everything.

<!-- gh-comment-id:3697399803 --> @austin-dudzik commented on GitHub (Dec 29, 2025): Can also confirm that it is indeed Cloudflare's side, as I have the same setup using Authentik and CF Tunnels, and was not seeing the SSO button either after environment variable changes, leading me here. It's as easy as going into the Cloudflare dashboard, navigating to the domain, then Caching -> Configuration -> Purge Cache -> Purge Everything.
Author
Owner

@austin-dudzik commented on GitHub (Dec 29, 2025):

Is it really required to enter email address? It would be great if we could skip this part..

@buzzard10 Yes, I believe there wouldn't really be any way around not requiring the email address, as it appears the official Bitwarden web vault (vault.bitwarden.com) also behaves the same way when selecting single sign-on before entering an email address.

The change would need to come from Bitwarden's side.

Image
<!-- gh-comment-id:3697406925 --> @austin-dudzik commented on GitHub (Dec 29, 2025): > Is it really required to enter email address? It would be great if we could skip this part.. @buzzard10 Yes, I believe there wouldn't really be any way around not requiring the email address, as it appears the official Bitwarden web vault ([vault.bitwarden.com](https://vault.bitwarden.com)) also behaves the same way when selecting single sign-on before entering an email address. The change would need to come from Bitwarden's side. <img width="3474" height="1808" alt="Image" src="https://github.com/user-attachments/assets/eed50971-710a-4291-a3fb-ab4f90819459" />
Author
Owner

@buzzard10 commented on GitHub (Dec 31, 2025):

I don't get it, what's the point of turning on the SSO, if you still have to enter your email address (which can be simply read from SSO response) & master password.

<!-- gh-comment-id:3702247263 --> @buzzard10 commented on GitHub (Dec 31, 2025): I don't get it, what's the point of turning on the SSO, if you still have to enter your email address (which can be simply read from SSO response) & master password.
Author
Owner

@h725rk commented on GitHub (Jan 1, 2026):

I have the same problem.
I deleted the cache of cloudflare and my browser. The Access token validity is on 10 Minutes, already when setting it up.
If I use the following link https://vw.mydomain.de/#/sso it will be redirected to my authentik and the login works. After the login in authentik it will be a redirect to vaultwarden and I have to use my MFA, after after I entered this, I go back to the normal page.

Here is my Docker Config for VW:


volumes:
  vaultwarden:

services:
  vaultwarden:
    container_name: vaultwarden
    image: ghcr.io/dani-garcia/vaultwarden:testing
    restart: unless-stopped
    user: 1002:1002

    volumes:
      - vaultwarden:/data/
    ports:
      - 8081:80
    environment:
      - DOMAIN=https://vaultwarden.domain.de
      - LOGIN_RATELIMIT_MAX_BURST=6
      - LOGIN_RATELIMIT_SECONDS=600
      - LOG_FILE=/data/log/vaultwarden.log
      - LOG_LEVEL=info
      - ADMIN_RATELIMIT_MAX_BURST=6
      - ADMIN_RATELIMIT_SECONDS=600
      - ADMIN_TOKEN=<Secret>
      - SENDS_ALLOWED=true
      - EMERGENCY_ACCESS_ALLOWED=true
      - WEB_VAULT_ENABLED=true
      - SIGNUPS_ALLOWED=false
      - SIGNUPS_VERIFY=true
      - SIGNUPS_VERIFY_RESEND_TIME=3600
      - SIGNUPS_VERIFY_RESEND_LIMIT=5
      - SMTP_HOST=mxe869.netcup.net
      - SMTP_FROM=<MAIL_FROM>
      - SMTP_FROM_NAME=Vaultwarden
      - SMTP_SECURITY=force_tls
      - SMTP_PORT=465
      - SMTP_USERNAME=<MAIL_Username>
      - SMTP_PASSWORD=<MAIL_Password>
      - SMTP_AUTH_MECHANISM="Login"
      - TZ=Europe/Berlin
      - SSO_ENABLED=true
      - SSO_AUTHORITY=https://authentik.<Domain>/application/o/<SLUG>/
      - SSO_CLIENT_ID=<SSO_ID>
      - SSO_CLIENT_SECRET=<SSO_SECRET>
      - SSO_SCOPES="openid email profile offline_access"
      - SSO_ALLOW_UNKNOWN_EMAIL_VERIFICATION=false
      - SSO_CLIENT_CACHE_EXPIRATION=0
      - SSO_ONLY=false
      - SSO_SIGNUPS_MATCH_EMAIL=true
    logging:
      driver: "syslog"
      options:
        tag: "vaultwarden"
<!-- gh-comment-id:3703778779 --> @h725rk commented on GitHub (Jan 1, 2026): I have the same problem. I deleted the cache of cloudflare and my browser. The Access token validity is on 10 Minutes, already when setting it up. If I use the following link https://vw.mydomain.de/#/sso it will be redirected to my authentik and the login works. After the login in authentik it will be a redirect to vaultwarden and I have to use my MFA, after after I entered this, I go back to the normal page. Here is my Docker Config for VW: ``` volumes: vaultwarden: services: vaultwarden: container_name: vaultwarden image: ghcr.io/dani-garcia/vaultwarden:testing restart: unless-stopped user: 1002:1002 volumes: - vaultwarden:/data/ ports: - 8081:80 environment: - DOMAIN=https://vaultwarden.domain.de - LOGIN_RATELIMIT_MAX_BURST=6 - LOGIN_RATELIMIT_SECONDS=600 - LOG_FILE=/data/log/vaultwarden.log - LOG_LEVEL=info - ADMIN_RATELIMIT_MAX_BURST=6 - ADMIN_RATELIMIT_SECONDS=600 - ADMIN_TOKEN=<Secret> - SENDS_ALLOWED=true - EMERGENCY_ACCESS_ALLOWED=true - WEB_VAULT_ENABLED=true - SIGNUPS_ALLOWED=false - SIGNUPS_VERIFY=true - SIGNUPS_VERIFY_RESEND_TIME=3600 - SIGNUPS_VERIFY_RESEND_LIMIT=5 - SMTP_HOST=mxe869.netcup.net - SMTP_FROM=<MAIL_FROM> - SMTP_FROM_NAME=Vaultwarden - SMTP_SECURITY=force_tls - SMTP_PORT=465 - SMTP_USERNAME=<MAIL_Username> - SMTP_PASSWORD=<MAIL_Password> - SMTP_AUTH_MECHANISM="Login" - TZ=Europe/Berlin - SSO_ENABLED=true - SSO_AUTHORITY=https://authentik.<Domain>/application/o/<SLUG>/ - SSO_CLIENT_ID=<SSO_ID> - SSO_CLIENT_SECRET=<SSO_SECRET> - SSO_SCOPES="openid email profile offline_access" - SSO_ALLOW_UNKNOWN_EMAIL_VERIFICATION=false - SSO_CLIENT_CACHE_EXPIRATION=0 - SSO_ONLY=false - SSO_SIGNUPS_MATCH_EMAIL=true logging: driver: "syslog" options: tag: "vaultwarden" ```
Author
Owner

@h725rk commented on GitHub (Jan 1, 2026):

OK, after deleting the cache and all cookies, I got the SSO Page. But after login with authentik, VW needs a MFA and after this my vault is blocked and needs the master password.
Does I have to delete the MFA on VW and VW does not block the vault automatically?

<!-- gh-comment-id:3703949724 --> @h725rk commented on GitHub (Jan 1, 2026): OK, after deleting the cache and all cookies, I got the SSO Page. But after login with authentik, VW needs a MFA and after this my vault is blocked and needs the master password. Does I have to delete the MFA on VW and VW does not block the vault automatically?
Author
Owner

@ljhardy commented on GitHub (Jan 1, 2026):

My understanding is that the master password is required to decrypt stuff on disk so it appears that for most the OIDC integration is of minimal value.

<!-- gh-comment-id:3703952364 --> @ljhardy commented on GitHub (Jan 1, 2026): My understanding is that the master password is required to decrypt stuff on disk so it appears that for most the OIDC integration is of minimal value.
Author
Owner

@h725rk commented on GitHub (Jan 1, 2026):

OK, than i will be ask every time after the vault is lock out.
Thats not a good solution.

<!-- gh-comment-id:3703959014 --> @h725rk commented on GitHub (Jan 1, 2026): OK, than i will be ask every time after the vault is lock out. Thats not a good solution.
Author
Owner

@m-spitfire commented on GitHub (Jan 1, 2026):

I think this issue is resolved. I also just cleared the cache in cloudflare and everything now works fine.

<!-- gh-comment-id:3703975727 --> @m-spitfire commented on GitHub (Jan 1, 2026): I think this issue is resolved. I also just cleared the cache in cloudflare and everything now works fine.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/vaultwarden#2486
No description provided.