ユーザーのサインイン状態を取得
GET /v1/users/{user_id}/sign-in-state · 権限 users:read
ユーザーがサインインできないときにサポートチームが必要とする情報を返します。具体的には、ユーザーの未解除のアカウントロック、各サインイン経路で継続中の失敗回数、最後に成功した認証です。この呼び出しは読み取りのみを行います。何も変更されず、監査レコードも書き込まれません。ロックを解除するには、POST /v1/users/{user_id}:unlock を使用してください。
レスポンスには、カウンターの内部サブジェクト、メールアドレス、IP アドレス、デバイス、セッション ID は含まれません。ユーザーのセッションを確認するには、GET /v1/users/{user_id}/sessions を使用してください。
組織スコープ
組織の管理者向けにメンバーの診断ビューを作成するには、org_id を渡します。その場合、キーには organizations:read 権限も必要です。この権限がない場合、何も読み取られる前に 403 insufficient_permissions で失敗します。ユーザーがその組織のメンバーでない場合(invited、active、suspended のメンバーシップがない場合)、リクエストは 404 not_found で失敗します。これは存在しないユーザーの場合と同じレスポンスです。ユーザーがメンバーである場合、last_sign_in はその組織の文脈にあるセッションからのみ取得されます。また、failures は常に空の配列です。失敗回数のカウンターはどの組織にも属さないためです。ロックは、すべての文脈でアカウントのサインインを停止するため、引き続き返されます。org_id を指定しない場合、レスポンスは変わりません。
リクエスト
| パラメーター | 位置 | 必須 | 説明 |
|---|---|---|---|
user_id |
path | はい | usr_ で始まるユーザー ID。 |
org_id |
query | いいえ | org_ で始まる組織 ID。ビューをその組織に限定します。詳しくは 組織スコープ を参照してください。organizations:read が必要です。 |
レスポンス
200 OK。
{
"locked": true,
"locked_until": "2026-10-20T10:00:00Z",
"locks": [
{"id": "lck_0a1b2c3d4e5f6g7h8j9k0m1n2p", "path": "password",
"locked_at": "2026-10-20T09:45:00Z", "expires_at": "2026-10-20T10:00:00Z"}
],
"failures": [
{"path": "totp", "count": 3, "window_ends_at": "2026-10-20T09:55:00Z"}
],
"last_sign_in": {"authenticated_at": "2026-10-19T18:12:04Z", "amr": ["pwd", "otp"], "country": "DE"}
}
| フィールド | 説明 |
|---|---|
locked |
少なくとも1つのサインイン経路がロックされている場合に true。 |
locked_until |
最後の未解除ロックが終わる時刻。ロックがない場合は null。 |
locks |
未解除のロック。古いものから順に並び、経路(password、totp、sms_2fa、email_2fa、otp、recovery_code)ごとに最大1件です。 |
failures |
最後の成功または最後のロック以降の、経路ごとの失敗試行回数。カウントウィンドウの実行中のみ表示されます。window_ends_at を過ぎるとカウントはリセットされます。パスワードのウィンドウは、環境の brute_force.window_minutes です。 |
last_sign_in |
保持されているセッションの中で最も新しい成功した認証。authenticated_at(同じセッション内での再認証により更新されます)、認証方法(amr、RFC 8176)、セッションで最後に確認された国(不明な場合は null)を含みます。保持されているセッションがない場合は null です。ユーザーがサインインしたことがない、または最後のセッションが30日以上前に終了した場合が該当します。 |
エラー
すべてのエラーは、安定した code を含む application/problem+json ボディで返されます。
| HTTP | code |
発生条件 |
|---|---|---|
| 404 | not_found |
この環境にユーザーが存在しない(または ID の形式が不正)、または org_id を指定した場合にユーザーがその組織のメンバーでない。 |
| 401 | unauthenticated |
API キーが見つからない、無効、または取り消されている。 |
| 403 | insufficient_permissions |
キーに users:read 権限がない、または org_id を指定した場合にキーに organizations:read がない。 |
| 429 | rate_limited |
レート制限を超えました。Retry-After に従ってください。 |
| 503 | service_unavailable |
依存先が一時的に利用できません。しばらくしてから再試行してください。 |
例
curl https://api.eu.keenauth.com/v1/users/usr_0a1b2c3d4e5f6g7h8j9k0m1n2p/sign-in-state \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
CLI: keenauth users sign-in-state usr_0a1b2c3d4e5f6g7h8j9k0m1n2p