
# Signaturschlüssel auflisten

`GET /v1/signing-keys` · Berechtigung `signing-keys:read`

Gibt die Token-Signaturschlüssel zurück, die derzeit im JWKS der Umgebung veröffentlicht sind: `next` (veröffentlicht, signiert noch nicht), `active` (signiert neue Tokens) und `retired` (signiert nicht mehr; bleibt 7 Tage veröffentlicht, damit damit signierte Tokens weiterhin geprüft werden können). Die Reihenfolge ist `next`, `active`, dann `retired` (neueste zuerst). Schlüssel, die das JWKS verlassen haben, und durch eine Notfallrotation widerrufene Schlüssel werden nicht zurückgegeben. Die Antwort enthält nur öffentliche Informationen: `kid` ist der RFC 7638 JWK-SHA-256-Thumbprint (base64url); keine Antwort enthält privates Schlüsselmaterial, das den Signaturdienst nie verlässt.

## Anfrage

Diese Operation nimmt keine Pfad-, Query- oder Body-Felder. Die Umgebung stammt aus den Anmeldedaten.

## Antwort

`200 OK` mit `data` (Schlüssel) und `list_metadata`. Die Liste ist so klein wie das JWKS und wird nicht paginiert; beide Cursor sind immer `null`. `activated_at` ist beim `next`-Schlüssel `null`; `retired_at` und `removal_at` (Zeitpunkt, an dem der Schlüssel das JWKS verlässt) sind nur bei `retired`-Schlüsseln gesetzt.

```json
{
  "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
  }
}
```

## Fehler

| HTTP | Code | Wann |
|---|---|---|
| 401 | `unauthenticated` | Die Anmeldedaten fehlen, sind ungültig oder wurden widerrufen. |
| 403 | `insufficient_permissions` | Die Anmeldedaten haben nicht die erforderliche Berechtigung. |
| 429 | `rate_limited` | Die Rate-Grenze wurde überschritten; Wiederhole nach dem `Retry-After`-Zeitraum. |
| 501 | `not_implemented` | Die Operation ist in dieser Bereitstellung noch nicht verfügbar; eine Wiederholung ändert das Ergebnis nicht. |
| 503 | `service_unavailable` | Eine Abhängigkeit ist vorübergehend nicht verfügbar; Wiederhole nach dem `Retry-After`-Zeitraum. |

## Beispiel

```bash
curl https://api.eu.keenauth.com/v1/signing-keys \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
```
