Bedrud ドキュメント

すべての認証エンドポイントは /api/auth/ 以下にあります。

概要

Bedrudは複数の認証方式に対応しています:

方式エンドポイント説明
Email/PasswordPOST /api/auth/login従来のログイン
RegistrationPOST /api/auth/registerアカウント作成
GuestPOST /api/auth/guest-login一時アクセス
OAuthGET /api/auth/:provider/loginソーシャルログイン
PasskeysPOST /api/auth/passkey/*FIDO2/WebAuthn
Token RefreshPOST /api/auth/refreshアクセストークンの更新

トークン形式

認証に成功すると、JWTトークンのペアが返されます:

{
  "accessToken": "eyJhbGciOiJIUzI1NiIs...",
  "refreshToken": "eyJhbGciOiJIUzI1NiIs..."
}
  • Access Token - 有効期間が短く、Authorization ヘッダーで使用します
  • Refresh Token - 有効期間が長く、新しいアクセストークンを取得するために使用します

トークンの使用

認証が必要なすべてのリクエストにアクセストークンを含めてください:

Authorization: Bearer <accessToken>

エンドポイント

アカウント作成

新しいユーザーアカウントを作成します。

POST /api/auth/register

リクエストボディ:

{
  "email": "user@example.com",
  "password": "securepassword",
  "name": "John Doe"
}

レスポンス (200):

{
  "accessToken": "eyJ...",
  "refreshToken": "eyJ...",
  "user": {
    "id": "uuid",
    "email": "user@example.com",
    "name": "John Doe",
    "role": "user"
  }
}

ログイン

メールアドレスとパスワードで認証します。

POST /api/auth/login

リクエストボディ:

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

レスポンス (200):

{
  "accessToken": "eyJ...",
  "refreshToken": "eyJ...",
  "user": {
    "id": "uuid",
    "email": "user@example.com",
    "name": "John Doe",
    "role": "user"
  }
}

ゲストログイン

アカウントを作成せずにゲストとして参加します。ゲストには制限付きの権限が付与されます。

POST /api/auth/guest-login

リクエストボディ:

{
  "name": "Guest User"
}

レスポンス (200):

{
  "accessToken": "eyJ...",
  "refreshToken": "eyJ...",
  "user": {
    "id": "uuid",
    "name": "Guest User",
    "role": "guest"
  }
}

現在のユーザー情報の取得

認証済みユーザーのプロフィールを取得します。

GET /api/auth/me

ヘッダー: Authorization: Bearer <accessToken>

レスポンス (200):

{
  "id": "uuid",
  "email": "user@example.com",
  "name": "John Doe",
  "avatar": "https://...",
  "role": "user",
  "provider": "email"
}

トークンのリフレッシュ

リフレッシュトークンを新しいアクセストークンと交換します。

POST /api/auth/refresh

リクエストボディ:

{
  "refreshToken": "eyJ..."
}

レスポンス (200):

{
  "accessToken": "eyJ...",
  "refreshToken": "eyJ..."
}

ログアウト

現在のリフレッシュトークンを無効化します。

POST /api/auth/logout

ヘッダー: Authorization: Bearer <accessToken>

リクエストボディ:

{
  "refreshToken": "eyJ..."
}

レスポンス (200):

{
  "message": "logged out"
}

OAuthログイン

ソーシャルプロバイダーでOAuthフローを開始します。

GET /api/auth/:provider/login

対応プロバイダー:

プロバイダーパス
Google/api/auth/google/login
GitHub/api/auth/github/login
Twitter/api/auth/twitter/login

サーバーはユーザーをプロバイダーの認証ページにリダイレクトします。認証後、プロバイダーはコールバックURLにリダイレクトし、サーバーがJWTトークンを返します。


エラーレスポンス

すべての認証エンドポイントは以下の形式でエラーを返します:

{
  "error": "invalid credentials"
}
ステータスコード意味
400不正なリクエスト(フィールド不足、バリデーションエラー)
401認証情報が無効、またはトークンの有効期限切れ
409メールアドレスはすでに登録されています
500サーバー内部エラー

関連ドキュメント