README file from
GithubBitwarden for Obsidian
Obsidian のサイドパネルから Bitwarden の Vault を閲覧できる、読み取り専用のコミュニティプラグインです。
公式 CLI (bw) や外部プロセスに依存せず、復号はすべてプラグイン内(クライアントサイド)で完結します。マスターパスワードやアクセストークンが平文でサーバーへ送られることはありません。
⚠️ 非公式プラグインです。Bitwarden 公式とは関係ありません。
主な機能
- 🔐 マスターパスワードでアンロック — Vault をプラグイン内で復号して表示
- 📁 2つの表示モード — タイプ別(ログイン / カード / メモ / ID)とフォルダ別(ネスト・ツリー対応)を切り替え可能
- ⭐ お気に入り をまとめて表示
- 🔎 インクリメンタル検索 — 名前・ユーザー名・URL で絞り込み
- 🔢 TOTP (2段階認証コード) — 残り時間ゲージ付きで自動更新、ワンクリックでコピー
- 📋 クイックコピー — ユーザー名・パスワード・TOTP をリストから直接コピー
- 🖼️ Web サイトアイコン (ファビコン) — ログインアイテムにサイトアイコンを表示
- 🌐 マルチサーバー対応 — 米国 (bitwarden.com) / EU (bitwarden.eu) / セルフホスト
- 🧩 依存ライブラリなし — Argon2id / BLAKE2b をピュア JS で実装、その他は WebCrypto を使用
インストール
このプラグインはコミュニティプラグインストアには未登録のため、手動でインストールします。
-
Obsidian の Vault 内に以下のフォルダを作成します。
<Vault>/.obsidian/plugins/bitwarden/ -
次の3ファイルをそのフォルダにコピーします。
main.jsmanifest.jsonstyles.css
-
Obsidian を再起動(またはリロード)し、設定 → コミュニティプラグイン で
Bitwardenを有効化します。
リリースページのアセット(
main.js/manifest.json/styles.css)からも取得できます。
初期設定
利用には Bitwarden の 個人 API キーが必要です。
1. API キーを取得する
Web Vault で アカウント設定 → セキュリティ → キー → API キー を開き、client_id(user.xxxx 形式)と client_secret を取得します。
2. プラグイン設定を入力する
Obsidian の 設定 → Bitwarden で以下を入力します。
| 項目 | 説明 |
|---|---|
| サーバー | 米国 / EU / セルフホスト から選択 |
| サーバー URL | セルフホスト時のベース URL(例: https://vault.example.com)。/identity と /api は自動付与 |
| メールアドレス | Bitwarden アカウントのメールアドレス(鍵導出に使用) |
| client_id | 個人 API キーの client_id |
| client_secret | 個人 API キーの client_secret |
3. アンロックする
左のリボンにある盾アイコン(または「Bitwardenパネルを開く」コマンド)でパネルを開き、マスターパスワードを入力してアンロックします。
使い方
| 操作 | 内容 |
|---|---|
| 🔄 同期 | サーバーから最新の Vault を再取得して復号 |
| 🔒 ロック | セッション(アクセストークン・復号鍵)を破棄してロック |
| 📁 / ☰ | フォルダ別表示とタイプ別表示の切り替え |
| 検索バー | 名前・ユーザー名・URL で絞り込み |
| アイテムをクリック | 詳細モーダルを開く(パスワードの表示/非表示、コピー、TOTP 等) |
設定項目
アカウント
- サーバー / サーバー URL / メールアドレス / client_id / client_secret
- 認証情報をクリア — 保存されたセッションを消去してロック(API キー・メールは保持)
表示
- コピーボタンを表示 — リスト上のクイックコピーボタンの ON/OFF
- 表示モード — タイプ別 / フォルダ別
アイコン
- Web サイトアイコンを表示 — ログインアイテムのファビコン表示
- アイコンサーバー URL — 既定は
https://icons.bitwarden.net
セキュリティについて
- マスターパスワードはアンロック時にのみ使用され、保存されません。
- アンロック後、利便性のため復号済みの ユーザーキーとアクセストークンがプラグインのデータ(
data.json)に保存されます。これにより Obsidian 再起動後も再入力なしで Vault を閲覧できます。 - そのため
data.jsonには機微な情報が含まれます。このファイルは Git 管理対象に含めないでください(本リポジトリでは.gitignore済み)。 - 「ロック」または「認証情報をクリア」を実行すると、保存されたトークンと復号鍵は削除されます。
暗号方式
Bitwarden のクライアント暗号仕様に準拠しています。
- 鍵導出: PBKDF2-SHA256 または Argon2id(アカウント設定に応じて自動判定)
- 対称復号: AES-256-CBC + HMAC-SHA256(CipherString type 0/1/2)
- 鍵保護: HKDF-Expand によるストレッチ後、ユーザーキーを復号
- 組織キー: RSA-OAEP で復号
- TOTP: HMAC-SHA1 ベース(
otpauth://URI もパース対応)
Argon2id および BLAKE2b は RFC 9106 / RFC 7693 のベクタに対して検証されたピュア JS 実装を同梱しています(外部依存なし)。
対応アイテム
- ログイン(ユーザー名 / パスワード / URI / TOTP)
- カード(番号 / 名義 / 有効期限 / CVV)
- セキュアメモ
- ID(一覧表示)
ゴミ箱内のアイテムは表示されません。閲覧専用のため、アイテムの作成・編集はできません。
開発・ビルド
ビルドステップはありません。main.js はそのまま読み込まれます(バンドラ・package.json 不要)。
タグを push すると GitHub Actions(.github/workflows/release.yml)が main.js / manifest.json / styles.css を添付したリリースを自動作成します。
ファイル構成
| ファイル | 役割 |
|---|---|
main.js |
プラグイン本体(暗号処理・API・UI) |
manifest.json |
プラグインのメタデータ |
styles.css |
パネル・モーダルのスタイル |
data.json |
設定とセッション(自動生成・Git 管理外) |
動作環境
- Obsidian
v1.12.0以上 - デスクトップ / モバイル両対応(
isDesktopOnly: false)
ライセンス
リポジトリのライセンス表記に従います。