--- name: APIキー体系・認証設計(移行中) description: 現行の pk_ キー体系と、移行予定の Magic Link + Passkey 認証の状態 type: project --- ## 現行認証(pk_ キー体系)— 移行中・触らない | ユーザー | キー | localStorage キー名 | |---------|------|-------------------| | maita | pk_maita_a2be09f6eaaba0db65b72f085ea352d3 | posimai_api_key | | partner | pk_partner_fcfcbdf7d4a2ee23abf3ad046830af44 | posimai_api_key | | musume | pk_musume_76488f7ee2a4e6cd9d4b3ad6284d4cc7 | posimai_api_key | **注意:** `X-API-Key` ヘッダー・`?init_key=` パラメータ・localStorage のキー保存ロジックは変更禁止。インフラ担当 AI が新認証完成後に移行する。 ## 新認証(実装中・2026-03-26 時点) **方式:** Magic Link(メール)+ Passkey(WebAuthn/FIDO2) **実装場所:** VPS server.js(`@simplewebauthn/server@13.3.0` + `jsonwebtoken@9.0.3`) **Supabase Auth は不採用**(認証を2箇所に持つことになるため) ### VPS 環境変数(設定済み) - `JWT_SECRET`: 設定済み - `WEBAUTHN_RP_ID`: `posimai.soar-enrich.com` - `WEBAUTHN_ORIGINS`: `https://posimai.soar-enrich.com,http://localhost:3000` - `MAGIC_LINK_BASE_URL`: `https://posimai.soar-enrich.com` - `RESEND_API_KEY`: 設定済み(DNS 検証待ち) ### VPS DB テーブル(作成済み) - `magic_link_tokens` — Magic Link トークン管理 - `passkey_credentials` — WebAuthn 公開鍵保存 - `auth_sessions` — JWT セッション管理 - `magic_link_rate_limit` — レート制限 - `users.email` / `users.email_verified` — カラム追加済み ### server.js 実装状況 - エンドポイント実装: **未完了(次のセッションで実施予定)** - 実装予定エンドポイント: - `POST /api/auth/magic-link/send` - `GET /api/auth/magic-link/verify` - `POST /api/auth/passkey/register/begin` - `POST /api/auth/passkey/register/finish` - `POST /api/auth/passkey/login/begin` - `POST /api/auth/passkey/login/finish` - `GET /api/auth/session/verify` - `DELETE /api/auth/session` ## Gemini API キー - サーバーサイド(server.js)が Gemini に接続するためのキー - docker-compose.yml の `GEMINI_API_KEY` に設定済み - think アプリはフロントから直接 Gemini API を呼び出す(ユーザーが自分の API キーを入力) ## Dashboard 環境変数 - Vercel: `POSIMAI_API_KEY` = pk_maita_...(設定済み) - Vercel: `BASIC_AUTH_USER` / `BASIC_AUTH_PASSWORD`(設定済み)