概要
v2 API はセッションベースの認証を採用しています。 ログインは POST /auth/login で行い、成功するとセッションが確立され、CSRF トークンが発行されます。
状態を変更するリクエスト( POST )には、 X-Fess-CSRF-Token ヘッダーが必要です。 CSRF トークンの取得方法やローテーションの仕組み、共通のレスポンスエンベロープおよびエラーモデルについては APIの概要 を参照してください。
このページでは以下の4つのエンドポイントを説明します。
共通のユーザー情報 (UserPayload)
GET /auth/me および POST /auth/login のレスポンスに含まれるユーザー情報は、共通の UserPayload 構造で返されます。 すべての配列フィールドは非 null であり、値がない場合は空配列が返されます。
認証状態の取得
リクエスト
| HTTPメソッド | GET |
| エンドポイント | /api/v2/auth/me |
現在の認証済みユーザーを取得します。 匿名の呼び出しに対してはエラーにはならず、 authenticated: false を返します。 認証済みのときは user が UserPayload を持ちます。
レスポンス
成功時(HTTP 200)には、以下のような共通エンベロープ形式のレスポンスが返ります(認証済みの例)。
response の各要素については以下の通りです。
| フィールド | 型 | 説明 |
|---|---|---|
authenticated | boolean | 認証済みかどうか。(必須) |
user | object | UserPayload 。 authenticated が true のときのみ存在します。 |
エラーレスポンス
ログイン
リクエスト
| HTTPメソッド | POST |
| エンドポイント | /api/v2/auth/login |
ユーザー名とパスワードでログインします。 ログイン成功時には、サーブレットのセッションIDがローテーションされ、新しい CSRF トークンが発行され、呼び出し元 IP と対象ユーザーのレート制限バケットがクリアされます。 レート制限を超えた場合は、 Retry-After ヘッダー(秒)が付与されます。
既に認証済みのセッションでもショートサーキットせず、渡された資格情報は常に検証されます。
return_to は ^/[A-Za-z0-9_\-/.?&=%:@+~#*!,;]*$ に一致する相対パスでなければなりません。 さらに、プロトコル相対(先頭 // )のパスや ASCII 制御文字を含むパスは拒否され、エコーされるレスポンスから無言で除去されます。
注釈
このエンドポイントは CSRF の対象外 です(ログイン前にトークンが存在しないため)。
注釈
他の状態変更エンドポイントと異なり、このエンドポイントは過大なリクエストボディや非対応の Content-Type を 400 invalid_request にまとめます(他のエンドポイントは 413 / 415 を返します)。
リクエストボディ (LoginRequest)
Content-Type は application/json です。
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
username | string | はい | ユーザー名。 minLength は1です。 |
password | string | はい | パスワード。 minLength は1です。 |
return_to | string | いいえ | ログイン後のリダイレクト先。上記パターンに一致する相対パスである必要があります。 |
リクエスト例:
レスポンス
成功時(HTTP 200, LoginResponse)には、以下のような共通エンベロープ形式のレスポンスが返ります。
response の各要素については以下の通りです。
| フィールド | 型 | 説明 |
|---|---|---|
user | object | UserPayload 。 |
csrf_token | string | 新しいセッションに紐づく新規 CSRF トークン。(必須) |
return_to | string | リクエスト値が許可リストを通過した場合のみエコーされます。 |
エラーレスポンス
ログアウト
リクエスト
| HTTPメソッド | POST |
| エンドポイント | /api/v2/auth/logout |
ログアウトします。この操作は冪等であり、アクティブなセッションがなくても no-op となりエラーにはなりません。常に ok: true を返します。
X-Fess-CSRF-Token ヘッダーが必要です。
レスポンス
成功時(HTTP 200, OkResponse)には、以下のような共通エンベロープ形式のレスポンスが返ります。
response の各要素については以下の通りです。
エラーレスポンス
パスワード変更
リクエスト
| HTTPメソッド | POST |
| エンドポイント | /api/v2/auth/password |
現在のユーザーのパスワードを変更します。 current_password を検証し、 new_password に設定済みのパスワードポリシーを適用し、現在のセッションを無効化し、 re_login_required: true で SPA にログインページへのリダイレクトを促します。
セッションがサーバー側で破棄されるため csrf_token は返りません。SPA は再認証後に新しいトークンを取得する必要があります。
X-Fess-CSRF-Token ヘッダーが必要です。
リクエストボディ (PasswordChangeRequest)
Content-Type は application/json です。
レスポンス
成功時(HTTP 200)には、以下のような共通エンベロープ形式のレスポンスが返ります。
response の各要素については以下の通りです。