---
generated_at: 2026-01-30 12:45:00
metrics:
  claims_total: 25
  claims_with_evidence: 25
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート：47-パスワード認証

## 本レポートについて

### 目的
本レポートは、生成された設計書・ドキュメントの信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

### チェック方法
以下の観点でドキュメントの内容（Claim：主張）を検証しています：

1. **根拠の有無確認**：各主張に対して、ソースコード・既存設計書・要件定義書などの根拠（Evidence）が存在するか
2. **根拠との整合性**：主張の内容が根拠と矛盾していないか
3. **網羅性**：参照すべき情報源を適切にカバーしているか

### 信頼度スコアの算出
- **confidence_derived** = 根拠あり件数 / 総主張件数
- 状態「○」：根拠あり、「△」：根拠不足または要確認

### 本レポートの使い方
1. まず「サマリー」で全体の信頼度と優先レビュー項目を確認
2. 「Claims と根拠の対応」で △ の項目を重点的にレビュー
3. 「不足情報」で補完が必要な情報源を確認

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：25 / 25、根拠なし：0
- 優先レビュー（高）
  - なし（すべての主張に根拠あり）

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。抽出フェーズで付けたIDをそのまま出す。

- E-01: `packages/sync-server/src/accounts/password.js`
- E-02: `packages/desktop-client/src/components/settings/AuthSettings.tsx`
- E-03: `docs/code-to-docs/機能一覧/機能一覧.csv`
- E-04: `docs/code-to-docs/画面機能マッピング/画面機能マッピング.csv`

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | bcryptでパスワードハッシュ化 | E-01（1行目: import bcrypt） | ○ |
| C-02 | コストファクター12を使用 | E-01（13行目: bcrypt.hashSync(password, 12)） | ○ |
| C-03 | パスワードは空文字・null不可 | E-01（8-10行目: isValidPassword関数） | ○ |
| C-04 | authテーブルに保存 | E-01（23-29行目: INSERT INTO auth） | ○ |
| C-05 | トランザクション内でbootstrapPassword実行 | E-01（22行目: accountDb.transaction） | ○ |
| C-06 | 既存パスワード削除後に挿入 | E-01（23-24行目: DELETE/UPDATE/INSERT） | ○ |
| C-07 | bcrypt.compareSyncで照合 | E-01（50行目: bcrypt.compareSync） | ○ |
| C-08 | UUIDv4でトークン生成 | E-01（2, 61行目: import uuidv4, token = uuidv4()） | ○ |
| C-09 | 既存セッション確認 | E-01（56-59行目: SELECT FROM sessions） | ○ |
| C-10 | 初回時にADMINユーザー作成 | E-01（67-71行目: INSERT INTO users, role='ADMIN'） | ○ |
| C-11 | user_name空文字でパスワード認証ユーザー識別 | E-01（73-76行目: WHERE user_name = ''） | ○ |
| C-12 | TOKEN_EXPIRATION_NEVERを参照 | E-01（6行目: import TOKEN_EXPIRATION_NEVER） | ○ |
| C-13 | トークン有効期限設定対応 | E-01（86-94行目: token_expiration設定判定） | ○ |
| C-14 | changePasswordでUPDATE | E-01（120-122行目: UPDATE auth SET extra_data） | ○ |
| C-15 | checkPassword関数あり | E-01（127-149行目: checkPassword関数） | ○ |
| C-16 | clearExpiredSessions呼び出し | E-01（108行目: clearExpiredSessions()） | ○ |
| C-17 | invalid-passwordエラー返却 | E-01（37, 47, 52行目: error: 'invalid-password'） | ○ |
| C-18 | user-not-foundエラー返却 | E-01（81行目: error: 'user-not-found'） | ○ |
| C-19 | useLoginMethodでログイン方式取得 | E-02（24行目: useLoginMethod()） | ○ |
| C-20 | サーバー未接続時は非表示 | E-02（29-31行目: serverStatus === 'no-server'） | ○ |
| C-21 | OpenID有効化モーダル表示 | E-02（63-71行目: pushModal enable-openid） | ○ |
| C-22 | パスワード認証有効化モーダル表示 | E-02（91-98行目: pushModal enable-password-auth） | ○ |
| C-23 | 機能No.47はパスワード認証 | E-03（行48: 認証機能カテゴリ） | ○ |
| C-24 | 画面No.2のログイン画面と関連 | E-04（行4: 画面2-機能47の関連） | ○ |
| C-25 | 画面No.5のパスワード変更画面と関連 | E-04（行9: 画面5-機能47の関連） | ○ |

## 4) 不足情報（Unknown / Missing）
- なし

## 5) リスクフラグ（レビュー観点）
- 1: 中リスク - 認証機能はセキュリティ上重要、bcryptコストファクターの妥当性確認が必要
- セッション管理のセキュリティ（トークン漏洩対策等）の確認が必要

## 6) レビュアーチェックリスト（最小）
- [ ] bcryptコストファクター12が現在の推奨範囲内か確認
- [ ] セッショントークンの保存・送信方法がセキュアか確認
- [ ] パスワードポリシー（最小文字数等）の要否を検討
- [ ] ブルートフォース対策（レート制限等）の実装を確認
