Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

VaultWardenのSSOを試すメモ #4

Open
bridge-y opened this issue Sep 25, 2023 · 6 comments
Open

VaultWardenのSSOを試すメモ #4

bridge-y opened this issue Sep 25, 2023 · 6 comments

Comments

@bridge-y
Copy link
Owner

bridge-y commented Sep 25, 2023

概要

  • VaultWarden は Bitwarden をセルフホストしやすいように Rust で実装した OSS。

  • Bitwarden のすべての機能を実装しているわけではない。

    • 作者は SSO をはじめとする一部の機能はコントリビュートがない限り実装されない、と述べている。
      出典: Home · dani-garcia/vaultwarden Wiki の Missing features より。
  • SSO を望む声は一定数あり、issue やプルリクエストが見受けられる。

  • 上記プルリクエストの実装をローカル環境で試してみる。

@bridge-y
Copy link
Owner Author

bridge-y commented Sep 25, 2023

Timshel/vaultwarden: Unofficial Bitwarden compatible server written in Rust, formerly known as bitwarden_rs

  • 2つのフロントエンド実装がある

    1. Bitwarden と同じ認証フロー(e-mail入力 → 遷移後のパスワードを入力する画面でSSOのボタンが表示される)
    2. デフォルトのURLを /sso に変更
      SSOを利用してログインするか、という問いの画面が表示される。
      「キャンセル」をクリックすると、通常の認証フロー(e-mail入力→パスワード入力)となる。
  • SSO を有効にしていても、マスターパスワードの設定は必要

  • SSO(IdP 側)で2FAを有効にしていても、VaultWarden側で2FAを設定できてしまう。

    • SSOで2FAを有効、かつ、SSOを必須にしている場合は、管理者ページや環境変数でVaultWardenの2FAを無効にしてよさそう。
      • SSO 必須: SSO_ONLY=true とする。(下記の "SSO 関連の環境変数" を参照)
  • Dockerfile のビルドに時間がかかる

    • 自分の環境では30分くらい
  • リポジトリでは Keycloak をつかって SSO をテストしているが、authentik でも SSO が動作することを確認できた

  • モバイルアプリ(Android)で SSO でログインできることを確認できた。

SSO 関連の環境変数

vaultwarden/.env.template at 09a399f8c5badb3200759622a543fcb106840404 · Timshel/vaultwarden

## SSO settings (OpenID Connect)
## Controls whether users can login using an OpenID Connect identity provider
# SSO_ENABLED=true
## Prevent users from logging in directly without going through SSO
# SSO_ONLY=false
## Auto accept organization invitation, if set to false you will need
##	- to let user log using email+Master password (SSO_ONLY=false)
##	- use a patched frontend to allow the invitation to be preserved across the sso redirection
# SSO_ACCEPTALL_INVITES=false
## Base URL of the OIDC server (auto-discovery is used)
# SSO_AUTHORITY=https://auth.example.com
## Set your Client ID and Client Key
# SSO_CLIENT_ID=11111
# SSO_CLIENT_SECRET=AAAAAAAAAAAAAAAAAAAAAAAA
## Optional SSO public key for JWT validation
# SSO_KEY_FILEPATH=%DATA_FOLDER%/sso_key.pub.pem

@bridge-y
Copy link
Owner Author

bridge-y commented Sep 25, 2023

SSO_ONLY=true にした場合

e-mail + マスターパスワード による認証を試みると、エラーメッセージが表示される。

SSOが必須であるというエラーメッセージ

モバイルアプリでも同様のエラーメッセージが表示される。

@bridge-y
Copy link
Owner Author

bridge-y commented Sep 25, 2023

フロントエンド実装2(デフォルトの表示ページが/sso

初期アクセス画面でSSOを促される。
キャンセルすると、通常の認証フロー(e-mail + マスターパスワード)となる。

初期ページ

こちらの実装を使用するには、以下のように Dockerfile を書き換える。(READMEより)

sed -i 's/oidc_button_web_vault/oidc_overide_web_vault/' Dockerfile

@bridge-y
Copy link
Owner Author

bridge-y commented Sep 26, 2023

モバイルアプリでSSO

Android の Bitwarden アプリで、SSO でログインできることを確認した。

@bridge-y
Copy link
Owner Author

bridge-y commented Oct 2, 2023

authentik でメールアドレスを変更したあとにVaultWardenにSSOすると、新規アカウントが作成される。
→ 試していないが、変更前のメールアドレスで保存していたデータはおそらく引き継がれない。

authentikのOAuth2 Provierでは、Subject modeBased on the User's hashed ID に設定していた。

@bridge-y
Copy link
Owner Author

bridge-y commented Oct 2, 2023

疑問

  • authentik の OAuth2 Provider で Subject modeBased on the User's hashed ID 以外の値にしていたとき、authentik のメールアドレスを変更してログインすると以前のアカウントにログインできる?

    • vaultwarden 側でメールアドレスがアカウントを識別する唯一の方法であるならば、Subject mode がどのような値であっても新規アカウントが作成される挙動となりそう。
  • SSO でログインして作成されたアカウントで、VaultWardenの設定ページから「メールアドレスを変更」した場合どうなる?

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

No branches or pull requests

1 participant