VaultwardenにKeycloakでSSOログインする
2026-03-05
azblob://2026/03/04/eyecatch/2026-03-05-vaultwarden-sso-setup-000.jpg

Vaultwardenは、パスワードマネージャーBitwardenのサーバーをRustで再実装したOSSです。

先日SSOに正式対応したので、試してみました。

前提条件

  • Vaultwardenのバージョン1.35.0以上
  • VaultwardenはDockerでホスト
  • 認証情報のプロバイダーは以前構築したKeycloakを利用

設定方法

Keycloakの設定

  1. 左ペインの「Clients」から「Create client」をクリックします。
    Keycloakの管理画面のClientsページ。「Create client」ボタンが青枠でハイライトされている。
  2. 「Client type」を「OpenID Connect」、「Client ID」は分かりやすい文字列を設定します。今回は「vaultwarden」としました。Client IDは後の工程で使うのでメモしておきましょう。
    Create client画面。Client typeに「OpenID Connect」、Client IDに「vaultwarden」を設定している。
  3. 「Client authentication」をOnにします。
    Create clientのCapability config画面。「Client authentication」がOnに設定されハイライトされている。
  4. 「Root URL」、「Valid redirect URIs」、「Web origins」にVaultwardenのURLを入れます。「Valid redirect URIs」は末尾に「/*」が必要なので注意してください。
    Create clientのLogin settings画面。Root URL、Valid redirect URIs、Web originsにVaultwardenのURLを設定している。
  5. 「Credentials」タブで、「Client Secret」をメモしておきます。赤四角で囲った部分をクリックすると、クリップボードにコピーできます。
    vaultwardenクライアントのCredentialsタブ。Client Secretのコピーボタンがハイライトされている。
     

Vaultwardenの設定

特定の環境変数を設定することでSSOを有効にすることができます。

詳しくはドキュメントに記載があります。

ここでは、最低限必要なものだけ紹介します。

  • SSO_ENABLED: true
  • SSO_AUTHORITY: https://${keycloakのドメイン}/realms/${realm名}
  • SSO_CLIENT_ID: Keycloakの設定でメモしたClient ID
  • SSO_CLIENT_SECRET: Keycloakの設定でメモしたClient Secret

私は初回ログイン時だけ許可し、ログイン後すぐに設定を変更しました。

また、メールアドレス+パスワードだけでログインするつもりが無かったのでSSO_ONLYもtrueにしています。

最終的にDocker用のcompose.ymlは以下のようになりました。(***はマスキング、URLはブログ用サンプル)

services:
  vaultwarden:
    image: vaultwarden/server:1.35.4-alpine
    container_name: vaultwarden
    tty: true
    restart: always
    environment:
      DATABASE_URL: 'mysql://***:***@***/vaultwarden'
      DOMAIN: https://vault.example.com
      SSO_AUTHORITY: 'https://keycloak.example.com/realms/master'
      SSO_CLIENT_ID: vaultwarden
      SSO_CLIENT_SECRET: '***'
      SSO_ENABLED: true
      SSO_ONLY: true
      SSO_SCOPES: 'openid profile email offline_access'
    ports:
      - 8080:80
    volumes:
      - ./vw-data:/data

動作確認

これでVaultwardenにSSOログインができるようになりました。

Vaultwardenのログイン画面。メールアドレス入力欄と「シングルサインオンを使用する」ボタンのみが表示されている。

SSO_ONLYをtrueにしたため、シングルサインオンしか選択肢がありません。

メールアドレスを入力して、「シングルサインオンを使用する」をクリックすると、Keycloakの認証画面にリダイレクトされ、そこでログインが行われます。

ただ、個人的に1点不満があるとすれば、ドキュメント

A master password will still be required and not controlled by the SSO 

とあるように、依然マスターパスワードを要求されることですね。

せっかくSSOで認証しているので惜しいところですが、ドキュメントで明言されている以上、現時点ではこの仕様となっているようです。