コンテンツにスキップ

認証システム

概要

Knowledge Yard V2 では JWT ベースの認証システムを実装しています。


ユーザーロール

ロール 権限
admin 全機能 + ユーザー管理
developer 全機能(開発者向け機能含む)
user 基本機能のみ

ロール別UI表示

機能 admin developer user
チャット
PDF参照
履歴機能
ダークモード
詳細回答トグル
回答設定
ユーザー管理

認証フロー

ログイン

POST /api/auth/login
Content-Type: application/json

{
  "email": "user@example.com",
  "password": "password123"
}

レスポンス:

{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "user": {
    "user_id": "uuid",
    "email": "user@example.com",
    "name": "ユーザー名",
    "role": "user"
  }
}

トークン検証

GET /api/auth/me
Authorization: Bearer <token>

ログアウト

POST /api/auth/logout
Authorization: Bearer <token>

データストレージ

ユーザーデータは Azure Table Storage に保存されます。

テーブル 用途
users ユーザー情報

ユーザーエンティティ

フィールド 説明
PartitionKey string 固定値 "user"
RowKey string user_id (UUID)
email string メールアドレス(ユニーク)
password_hash string bcryptハッシュ
name string 表示名
role string admin / developer / user
created_at string ISO8601形式
updated_at string ISO8601形式

管理者ユーザーの作成

初期管理者ユーザーはスクリプトで作成します:

cd /path/to/KnowledgeYardV2
source .venv/bin/activate
python scripts/create_admin_user.py

対話形式で以下を入力: - メールアドレス - パスワード - 表示名


セキュリティ

  • パスワードは bcrypt でハッシュ化
  • JWT トークンの有効期限: 24時間
  • トークンは localStorage に保存
  • HTTPS通信必須(本番環境)

関連ファイル

ファイル 用途
app/api/routes/auth.py 認証APIエンドポイント
app/api/services/auth.py 認証ロジック
app/api/services/table_storage.py Azure Table Storage操作
app/web/src/components/AuthContext.tsx フロントエンド認証コンテキスト
app/web/src/lib/auth.ts 認証ヘルパー関数
app/web/src/components/LoginPage.tsx ログインページ
app/web/src/components/AdminPage.tsx ユーザー管理ページ