SMPL-API-001 / ログインAPI
機能概要
- ユーザー名とパスワードによる認証するAPI
- 認証に成功した場合はJWTトークンを発行する
- 存在しないユーザー名、またはパスワードが不正な場合はエラーを返す
- アカウントがロックされている場合はエラーを返す
IF 定義
OpenAPI
シーケンス

処理詳細
バリデーション
リクエストパラメータのバリデーションを行う。
ユーザー情報取得処理
認証処理のため、user
(ユーザー)テーブルを検索する。
ここで取得したユーザー情報は以降「ユーザー情報」と呼称する。
検索条件
No |
対象 |
条件 |
1 |
user.username |
Request.body.username と完全一致 |
2 |
user.deleted_at |
NULL |
ユーザーが存在しない場合、401 Unauthorized
を返却する。
エラーレスポンス作成
No |
対象 |
設定値 |
1 |
Response.body.error_code |
invalid_credentials を設定 |
2 |
Response.body.error_message |
ユーザー名またはパスワードが正しくありません。 を設定 |
アカウントロックチェック
lock_out_end
が現在時刻よりも後の場合(アカウントがロックされている場合)、401 Unauthorized
を返却する。
エラーレスポンス作成
No |
対象 |
設定値 |
1 |
Response.body.error_code |
invalid_credentials を設定 |
2 |
Response.body.error_message |
ユーザー名またはパスワードが正しくありません。 を設定 |
パスワード検証
パスワードのハッシュ値を検証し、不一致の場合、アクセス失敗回数をインクリメントして 401 Unauthorized
を返却する。
パラメータ一覧
No |
対象 |
設定値 |
1 |
access_failed_count |
現在の値に1を加算 |
2 |
lock_out_end |
access_failed_count が閾値を超えた場合、現在時刻からロックアウト時間後の時刻を設定 |
エラーレスポンス作成
No |
対象 |
設定値 |
1 |
Response.body.error_code |
invalid_credentials を設定 |
2 |
Response.body.error_message |
ユーザー名またはパスワードが正しくありません。 を設定 |
JWT トークン生成
認証に成功した場合、JWTトークンを生成する。
ここで生成したJWTトークンは以降「JWTトークン」と呼称する。
JWTヘッダー設定値
No |
対象 |
設定値 |
1 |
alg |
HS256 |
2 |
typ |
JWT |
JWTペイロード設定値
No |
対象 |
設定値 |
1 |
iss |
okiden-backend-web |
2 |
sub |
ユーザー情報.user_id |
3 |
aud |
okiden-frontend-web |
4 |
exp |
現在時刻 + JWT_EXPIRATION_SEC |
5 |
nbf |
現在時刻 |
6 |
iat |
現在時刻 |
7 |
jti |
UUIDv4 |
JWT署名生成
No |
項目 |
設定値 |
1 |
署名キー |
JWT_SECRET_KEY |
ユーザー情報更新
認証に成功した場合、user
(ユーザー)テーブルのアクセス失敗回数をリセットする。
パラメータ一覧
No |
対象 |
設定値 |
1 |
access_failed_count |
0 |
2 |
lock_out_end |
NULL |
レスポンス作成処理
認証に成功した場合、200 OK
を返却する。
No |
対象 |
処理 |
1 |
Response.body.token |
JWT トークン |
Appendix
利用する環境変数一覧
No |
環境変数名 |
説明 |
デフォルト値 |
1 |
JWT_SECRET_KEY |
JWTトークン生成に使用する秘密鍵 |
- |
2 |
JWT_EXPIRATION_SEC |
JWTトークンの有効期限(秒) |
3600 |
3 |
ACCOUNT_LOCKOUT_THRESHOLD |
アカウントロックの閾値となるアクセス失敗回数 |
5 |
4 |
ACCOUNT_LOCKOUT_DURATION_SEC |
アカウントロックの持続時間(秒) |
3600 |