署名鍵を一覧表示
GET /v1/signing-keys · 権限 signing-keys:read
環境の JWKS に現在公開されているトークン署名鍵を返します。next (公開済み、まだ署名しない)、active (新しいトークンに署名する)、retired (署名を停止。署名済みトークンを引き続き検証できるよう 7 日間公開される) です。順序は next、active、続いて retired (新しい順) です。JWKS から外れた鍵と、緊急ローテーションで失効した鍵は返されません。レスポンスには公開情報のみが含まれます。kid は RFC 7638 の JWK SHA-256 サムプリント (base64url) で、秘密鍵の素材は署名サービスの外に出ないため、どのレスポンスにも含まれません。
リクエスト
この操作はパス、クエリ、ボディのフィールドを受け取りません。環境は認証情報から決まります。
レスポンス
200 OK と data (鍵)、list_metadata。一覧は JWKS と同程度に小さくページ分割されないため、両方のカーソルは常に null です。next 鍵の activated_at は null で、retired_at と removal_at (鍵が JWKS から外れる時刻) は retired 鍵にのみ設定されます。
{
"data": [
{
"kid": "ypeBEsobvcr6wjGzmiPcTaeG7_gUfE5yuYB3ha_uSLs",
"use": "token_signing",
"algorithm": "RS256",
"state": "next",
"storage": "wrapped",
"created_at": "2026-09-05T09:30:00.123456Z",
"activated_at": null,
"retired_at": null,
"removal_at": null
},
{
"kid": "PiPoFgA5WUoziU9lZOGxNIu9egCI1CxKy3PurtWcAJ0",
"use": "token_signing",
"algorithm": "RS256",
"state": "active",
"storage": "wrapped",
"created_at": "2026-03-09T09:30:00.123456Z",
"activated_at": "2026-09-05T09:30:00.123456Z",
"retired_at": null,
"removal_at": null
},
{
"kid": "Ln0sA6lQeuJl7PW1NWiFpTOTogKdJBOUmXJloaJa78Y",
"use": "token_signing",
"algorithm": "RS256",
"state": "retired",
"storage": "wrapped",
"created_at": "2025-09-10T09:30:00.123456Z",
"activated_at": "2026-03-09T09:30:00.123456Z",
"retired_at": "2026-09-05T09:30:00.123456Z",
"removal_at": "2026-09-12T09:30:00.123456Z"
}
],
"list_metadata": {
"before": null,
"after": null
}
}
エラー
| HTTP | コード | 概要 |
|---|---|---|
| 401 | unauthenticated |
認証情報が見つからない、無効、または取り消されています。 |
| 403 | insufficient_permissions |
認証情報に必要な権限がありません。 |
| 429 | rate_limited |
レート制限を超えました。Retry-After 期間後に再試行してください。 |
| 501 | not_implemented |
この操作はこのデプロイではまだ利用できません。再試行しても結果は変わりません。 |
| 503 | service_unavailable |
依存関係が一時的に利用できません。Retry-After 期間後に再試行してください。 |
例
curl https://api.eu.keenauth.com/v1/signing-keys \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY"