ユーザーのサインイン状態を取得

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