VaultwardenにKeycloakでSSOログインする
Vaultwardenは、パスワードマネージャーBitwardenのサーバーをRustで再実装したOSSです。
先日SSOに正式対応したので、試してみました。
前提条件
- Vaultwardenのバージョン1.35.0以上
- VaultwardenはDockerでホスト
- 認証情報のプロバイダーは以前構築したKeycloakを利用
設定方法
Keycloakの設定
- 左ペインの「Clients」から「Create client」をクリックします。

- 「Client type」を「OpenID Connect」、「Client ID」は分かりやすい文字列を設定します。今回は「vaultwarden」としました。Client IDは後の工程で使うのでメモしておきましょう。

- 「Client authentication」をOnにします。

- 「Root URL」、「Valid redirect URIs」、「Web origins」にVaultwardenのURLを入れます。「Valid redirect URIs」は末尾に「/*」が必要なので注意してください。

- 「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ログインができるようになりました。

SSO_ONLYをtrueにしたため、シングルサインオンしか選択肢がありません。
メールアドレスを入力して、「シングルサインオンを使用する」をクリックすると、Keycloakの認証画面にリダイレクトされ、そこでログインが行われます。
ただ、個人的に1点不満があるとすれば、ドキュメントに
A master password will still be required and not controlled by the SSO
とあるように、依然マスターパスワードを要求されることですね。
せっかくSSOで認証しているので惜しいところですが、ドキュメントで明言されている以上、現時点ではこの仕様となっているようです。






![Microsoft Power BI [実践] 入門 ―― BI初心者でもすぐできる! リアルタイム分析・可視化の手引きとリファレンス](/assets/img/banner-power-bi.c9bd875.png)
![Microsoft Power Apps ローコード開発[実践]入門――ノンプログラマーにやさしいアプリ開発の手引きとリファレンス](/assets/img/banner-powerplatform-2.213ebee.png)
![Microsoft PowerPlatformローコード開発[活用]入門 ――現場で使える業務アプリのレシピ集](/assets/img/banner-powerplatform-1.a01c0c2.png)


