
# Management-Token für die CLI anlegen

`POST https://api.keenauth.com/v1/environments/{environment_id}/management-tokens` · wird von `keenauth login` aufgerufen

Tauscht die Anmeldung der CLI gegen ein Token von 10 Minuten für eine Umgebung ein. Diesen Endpunkt rufen Sie nicht selbst auf: `keenauth login` meldet Sie mit Ihrem Dashboard-Konto an (Geräteautorisierung oder, mit `--web`, eine Weiterleitung auf den Loopback mit PKCE), und die CLI fordert für jede Umgebung, mit der sie arbeitet, ein Token an. Das Token ist an den Schlüssel der CLI gebunden (DPoP) und trägt nur die Berechtigungen Ihrer Dashboard-Rolle in dieser Umgebung.

## Anfrage

Header:

| Header | Pflicht | Beschreibung |
| --- | --- | --- |
| `Authorization` | ja | `DPoP <access token>`: das Zugriffstoken, das die CLI bei Ihrer Anmeldung erhalten hat. |
| `DPoP` | ja | Ein DPoP-Nachweis für diese Anfrage, signiert mit dem Schlüssel, an den das Zugriffstoken gebunden ist; er enthält den Hash des Zugriffstokens und den Server-Nonce. |
| `Content-Type` | ja | `application/json`. |

Body: ein leeres JSON-Objekt, `{}`. Jedes andere Feld wird mit `unknown_field` abgelehnt. Die Anfrage hat keinen `Idempotency-Key`: Jeder Aufruf stellt ein neues Token aus.

## Antwort

`201 Created` mit `Cache-Control: no-store`:

| Feld | Beschreibung |
| --- | --- |
| `access_token` | Das Management-Token. Senden Sie es als `Authorization: DPoP <token>` mit einem Nachweis desselben Schlüssels. |
| `token_type` | Immer `DPoP`. |
| `expires_in` | Gültigkeitsdauer in Sekunden: `600`. |
| `expires_at` | Ende der Gültigkeit (RFC 3339, UTC). |
| `environment_id` | Die Umgebung, für die das Token gilt. |
| `audience` | Die Zelle, für die das Token gilt (`<region>/<cell>`). |
| `api_base` | Basis-URL der regionalen API, die das Token akzeptiert. |
| `permissions` | Die Umgebungsberechtigungen Ihrer Dashboard-Rolle. |

Die CLI hält das Token nur im Arbeitsspeicher. Eine Rollenänderung wirkt spätestens nach 10 Minuten; wird eine Rolle entfernt, werden die offenen Token dieses Benutzers widerrufen.

## Fehler

| Status | Code | Wann |
| --- | --- | --- |
| 401 | `unauthenticated` | Es wurde kein Zugriffstoken gesendet. |
| 401 | `invalid_token` | Das Zugriffstoken ist ungültig, abgelaufen oder gehört nicht zur CLI; melden Sie sich mit `keenauth login` erneut an. |
| 401 | `invalid_dpop_proof` | Der DPoP-Nachweis fehlt, ist mehrfach vorhanden oder passt nicht zur Anfrage oder zum Schlüssel des Tokens. |
| 401 | `use_dpop_nonce` | Wiederholen Sie die Anfrage mit einem Nachweis, der den Nonce aus dem Antwort-Header `DPoP-Nonce` enthält. |
| 401 | `insufficient_user_authentication` | Multi-Faktor-Authentifizierung ist erforderlich (für Ihre Rolle auch ein Passkey oder Sicherheitsschlüssel); melden Sie sich erneut an. |
| 404 | `not_found` | Die Umgebung existiert nicht, oder Sie haben in ihr keine Dashboard-Rolle. |
| 429 | `rate_limited` | Mehr als 30 Token pro Minute für Ihren Benutzer (geteilt mit dem Dashboard); warten Sie `Retry-After` ab. |

## Beispiel

```bash
curl -X POST https://api.keenauth.com/v1/environments/env_01jb0000000000000000000000/management-tokens \
  -H "Authorization: DPoP $ACCESS_TOKEN" \
  -H "DPoP: $DPOP_PROOF" \
  -H "Content-Type: application/json" \
  -d '{}'
```
