プロジェクト

全般

プロフィール

バグ #736

未完了

認証機能実装 - Redmine APIキー認証 (子チケット)

Redmine Admin さんが約7時間前に追加. 7分前に更新.

ステータス:
新規
優先度:
高め
担当者:
-
開始日:
2025-06-26
期日:
進捗率:

0%

予定工数:

説明

認証機能実装 - Redmine APIキー認証

🎯 概要

VPS-ROOT Infrastructure Helperサービスの認証基盤として、Redmine APIキー認証を実装します。

📋 実装対象

1. API エンドポイント

  • POST /api/v1/auth/login - APIキー認証
  • POST /api/v1/auth/logout - ログアウト
  • GET /api/v1/auth/session - セッション確認
  • POST /api/v1/auth/refresh - セッション更新

2. 主要関数

  • authenticateWithRedmine(apiKey: string): Promise<RedmineUser>
  • validateApiKey(apiKey: string): Promise<boolean>
  • createSession(user: RedmineUser): Promise<SessionToken>
  • validateSession(token: string): Promise<SessionData>

3. UI コンポーネント

  • LoginPage.tsx - ログイン画面
  • RedmineApiKeyInput - APIキー入力フィールド
  • SessionTimeoutIndicator - セッション残り時間表示

🔧 技術仕様

認証フロー

  1. ユーザーがRedmine APIキーを入力
  2. call2arm.com のRedmine APIで認証確認
  3. セッション作成・JWT発行
  4. ロールベースアクセス制御適用

セキュリティ要件

  • APIキーのハッシュ化保存
  • セッション有効期限管理 (24時間)
  • CSRF対策
  • ブルートフォース攻撃対策

✅ 完了条件

  • API エンドポイント実装完了
  • 認証関数群実装完了
  • UI コンポーネント実装完了
  • セッション管理機能動作確認
  • セキュリティテスト合格

🔗 関連チケット

親チケット: インフラヘルパーサービス基盤構築

📅 期限

Phase 1 - 基盤実装: 2025年6月30日まで

Redmine Admin さんが7分前に更新

📋 認証機能実装 - 現状・詳細仕様追記

🔍 現在の実装状況

API エンドポイント実装状況

エンドポイント メソッド 実装状況 パラメータ レスポンス
/api/v1/auth/login POST 完成 {apiKey: string} {token, user, expiresAt}
/api/v1/auth/logout POST 完成 {} {success: boolean}
/api/v1/auth/validate GET 完成 Authorization: Bearer {valid, user}
/api/v1/auth/refresh POST 完成 {refreshToken} {token, expiresAt}
/api/v1/auth/profile GET 完成 Authorization: Bearer {user, permissions}

関数実装状況 (12/12 完成)

ファイル: /src/services/auth/RedmineAuthService.ts

✅ 基本認証関数 (4/4 完成)

// Redmine API認証 - 完成
async authenticateWithRedmine(apiKey: string): Promise<RedmineUser>
async validateApiKey(apiKey: string): Promise<boolean>
async getUserInfo(apiKey: string): Promise<RedmineUser>
async checkUserPermissions(apiKey: string): Promise<Permission[]>

✅ セッション管理関数 (4/4 完成)

// セッション管理 - 完成
async createSession(user: RedmineUser): Promise<SessionToken>
async validateSession(token: string): Promise<SessionData>
async refreshSession(token: string): Promise<SessionToken>
async revokeSession(sessionId: string): Promise<void>

✅ 権限チェック関数 (4/4 完成)

// 権限管理 - 完成
checkResourcePermission(user: RedmineUser, resource: string, action: string): boolean
getUserRole(user: RedmineUser): UserRole
hasAdminAccess(user: RedmineUser): boolean
canAccessResource(user: RedmineUser, resourceId: string): boolean

🎯 完成済み機能詳細

認証フロー

  1. ✅ ユーザーがRedmine APIキーを入力
  2. ✅ call2arm.com のRedmine APIで認証確認
  3. ✅ セッション作成・JWT発行
  4. ✅ ロールベースアクセス制御適用

セキュリティ要件

  • ✅ APIキーのハッシュ化保存
  • ✅ セッション有効期限管理 (24時間)
  • ✅ CSRF対策
  • ✅ ブルートフォース攻撃対策

📈 進捗サマリー

  • API エンドポイント: 5/5 (100%) 完成
  • 認証関数群: 12/12 (100%) 完成
  • UI コンポーネント: 要実装
  • セッション管理: 完成
  • セキュリティ機能: 完成

認証機能は基盤部分が完成済み。次のフェーズはUI実装に移行可能!

他の形式にエクスポート: Atom PDF