Kommandozeilenschnittstelle

Die keenauth-Kommandozeilenschnittstelle (CLI) ruft die Verwaltungs-API aus einem Terminal oder einem Skript auf. Jeder Befehl umhüllt genau eine typisierte Methode des Go-SDK, daher verhalten sich CLI und API gleich. Es gibt noch kein Installationspaket.

Authentifizierung und Ziel

Die CLI liest ihre Zugangsdaten ausschließlich aus der Umgebung. Der API-Schlüssel wird nie als Flag akzeptiert, damit er nicht in Ihrem Shell-Verlauf landet.

Variable Erforderlich Beschreibung
KEENAUTH_API_KEY ja Schlüssel der Verwaltungs-API. Fehlt er, beendet sich der Befehl mit Code 3.
KEENAUTH_BASE_URL ja, sofern --base-url nicht angegeben ist Basis-URL der Verwaltungs-API Ihrer Umgebung.

Statt eines API-Schlüssels können Sie sich mit Ihrem Dashboard-Konto anmelden: keenauth login, danach keenauth env use <environment_id>. Die Sitzung wird nur verwendet, wenn KEENAUTH_API_KEY nicht gesetzt ist; die Adresse der Umgebung stammt dann aus der Control Plane (siehe Anmelden mit keenauth login).

Das Flag --base-url überschreibt KEENAUTH_BASE_URL für einen einzelnen Befehl. Die CLI gibt den API-Schlüssel niemals aus; taucht er in einer Serverantwort auf, wird er durch [redacted] ersetzt.

Befehle

Befehle folgen dem Muster keenauth <group> <action> [arguments] [flags]. Führen Sie keenauth --help oder keenauth <group> --help aus, um die vollständige Liste zu sehen.

Gruppe Aktionen
users list, search, get, create, update, delete, block, unblock, cancel-deletion, authenticators list, authenticators delete, authenticators reset, authenticators reactivate, send-password-reset, send-verification-email, emails send-verification, start-recovery, logs list
applications list, create, get, update, delete, get-api-grant, put-api-grant, delete-api-grant, credentials list, credentials create, credentials delete
apis list, create, get, update, delete
connections list, create, get, update, delete, activate, deactivate
identity-settings get, update
environment-settings get, update
config export (ohne -o gibt sie YAML aus), plan -f <file> (zeigt im Terminal einen lesbaren Diff), plans get, apply <plan_id> (fragt nach einer Bestätigung; --secrets-from-env liest Geheimnisse aus Umgebungsvariablen, --confirm-deletion <kind>/<key>), promote --from <env> --to <env> (exportiert, plant, zeigt den Diff und wendet nach Bestätigung an; siehe Konfiguration mit keenauth config promote übernehmen)
api-keys list, get, create, rotate, revoke
logs list, get, tail (folgt neuen Datensätzen; --type, --user, --org; siehe Logs mit keenauth logs tail verfolgen)
support-access-grants list, get, create, delete (siehe Support-Zugriff gewähren mit keenauth support-access-grants)
directories simulate <directory_id> --scenario <name> (führt ein SCIM-Simulator-Szenario in Entwicklung und Staging aus; siehe SCIM-Provisioning testen mit keenauth directories simulate)
audit verify (prüft einen heruntergeladenen Audit-Export offline; siehe Audit-Exporte prüfen mit keenauth audit verify)
branding get, update, applications get, applications put, organizations get, organizations put, css put, page-template put, publish, rollback, versions list, texts get, texts put, texts delete
signing-keys list, rotate, policy get, policy update
events tail (folgt Kundenereignissen über die Event-API; siehe Ereignisse verfolgen mit keenauth events tail), get <event ID> (ein Ereignis, genau so wie vom Server gesendet)
mock serve startet einen lokalen OIDC-Mock-Server für Offline-Tests; er benötigt keinen API-Schlüssel (siehe Lokaler Mock-Server)
test login --user <+test address> meldet einen Testbenutzer mit dem festen Code in einer development-Umgebung an und gibt die Tokens aus; er benötigt keinen API-Schlüssel (siehe Testbenutzer anmelden mit keenauth test login)
webhooks listen --forward-to <local URL> leitet die Ereignisse einer development- oder staging-Umgebung an Ihren Rechner weiter, signiert mit einem temporären Geheimnis (siehe Webhooks lokal testen mit keenauth webhooks listen)
login, logout, whoami, env login (--web, --insecure-storage), logout, whoami, env use <environment_id>, env list: melden Sie sich mit Ihrem Dashboard-Konto statt mit einem API-Schlüssel an (siehe Anmelden mit keenauth login)

Listenbefehle akzeptieren --limit, --after, --before und --order. Gibt es weitere Ergebnisse, wird der nächste Cursor als more results: --after <cursor> auf stderr ausgegeben.

Ausgabeformat

--output (-o) wählt table, json oder yaml. Ohne das Flag gibt die CLI im Terminal eine Tabelle aus, sonst JSON. JSON und YAML enthalten die API-Antwort unverändert und werden nie übersetzt, sodass Skripte sich darauf verlassen können. Ergebnisse gehen an stdout; Fehler, Hinweise und die Zeile etag gehen an stderr.

Anfragekörper

Befehle, die einen Körper senden, akzeptieren für jedes flache Feld ein Flag, benannt nach dem JSON-Schlüssel mit Bindestrichen (phone_number wird zu --phone-number). Verschachtelte Objekte werden mit --data angegeben:

Flags überschreiben die Felder der Datei. Ein Körper ist auf 4 MiB begrenzt.

keenauth users create --email ada@example.com
keenauth apis create --data @api.json
echo '{"name":"Orders"}' | keenauth apis update api_123 --data - --if-match '"v3"'

Optimistische Parallelität: --if-match und das etag

Aktualisierungs- und Löschbefehle für Anwendungen, APIs und Verbindungen erfordern --if-match; users update akzeptiert es. Der Wert ist das ETag der Version, die Sie ändern möchten. Der Server lehnt die Anfrage ab, wenn sich die Ressource inzwischen geändert hat. identity-settings update erfordert es ebenfalls. environment-settings update erfordert es ebenfalls. Schreibvorgänge am Branding-Entwurf (branding update, branding applications put, branding organizations put, branding css put, branding page-template put) erfordern es ebenfalls.

Jeder get-Befehl (users, applications, apis, connections, identity-settings, environment-settings) gibt die Antwort-ETag auf stderr aus, damit stdout sauber bleibt:

$ keenauth apis get api_123
{ ... }
etag: "v3"
$ keenauth apis update api_123 --name Orders --if-match '"v3"'

Die Zeile etag wird nicht zur JSON- oder YAML-Ausgabe hinzugefügt.

Destruktive Befehle und --yes

Befehle, die löschen oder sperren, fragen im Terminal nach einer Bestätigung ([y/N]). Lehnen Sie ab, endet der Befehl mit Code 1 und gibt aborted aus. Wenn die Standardeingabe kein Terminal ist, wird der Befehl nur ausgeführt, wenn Sie --yes (-y) übergeben; andernfalls endet er mit Code 2, bevor eine Anfrage gesendet wird.

Exit-Codes

Code Bedeutung
0 Erfolg.
1 Server- oder Betriebsfehler, eine abgelehnte Bestätigung oder ein Netzwerkfehler.
2 Nutzungsfehler: unbekannter Befehl oder Flag, ein fehlendes Argument, ein ungültiger Körper oder --yes fehlt in einem nicht interaktiven Terminal.
3 Authentifizierungsfehler: der Schlüssel fehlt, oder der Server antwortete mit 401 oder 403.
4 Der Tarif umfasst die Funktion nicht (403 mit plan_feature_unavailable).

Bei Serverfehlern gibt die CLI error, code, status, detail, request_id sowie eine Zeile field je Validierungsfehler auf stderr aus. Geben Sie beim Kontakt mit dem Support den request_id an.

Sprache

Für menschenlesbaren Text (Hilfe, Eingabeaufforderungen, Fehler, Tabellenüberschriften) stehen Türkisch (tr), Englisch (en), Französisch (fr), Deutsch (de), Koreanisch (ko), Japanisch (ja), Italienisch (it) und Spanisch (es) zur Verfügung. Die Sprache wird aus der ersten gesetzten dieser Variablen entnommen: KEENAUTH_LANG, LC_ALL, LC_MESSAGES, LANG (zum Beispiel wählt tr_TR.UTF-8 tr). Ein leerer oder nicht unterstützter Wert wählt Englisch, und fehlt eine Meldung in einer Sprache, wird auf Englisch zurückgegriffen.

Maschinenlesbare Ausgabe wird nie übersetzt: JSON- und YAML-Feldnamen und -Werte, das Problem code und die Bezeichnungen code, status und request_id bleiben in jeder Sprache gleich. Meldungen, die vom Server stammen, werden so angezeigt, wie der Server sie gesendet hat.

KEENAUTH_LANG=de keenauth users list --help

Anwendungsanmeldedaten

keenauth applications credentials list|create|delete verwaltet Client-Geheimnisse und registrierte öffentliche Schlüssel einer Anwendung. Diese Befehle verwenden --if-match nicht.

keenauth applications credentials create app_123 --type client-secret --expires-at 2027-01-01T00:00:00Z
keenauth applications credentials create app_123 --type public-key --jwk-file key.pub.jwk
keenauth applications credentials delete app_123 cred_456 --yes

Ein Client-Geheimnis wird einmal auf stdout ausgegeben, zusammen mit einer einmaligen Warnung auf stderr. --jwk-file nimmt genau einen öffentlichen JWK (höchstens 16 KiB) entgegen; eine Datei mit privaten Bestandteilen wird abgelehnt, bevor eine Anfrage gesendet wird.

API-Schlüssel

keenauth api-keys list|get|create|rotate|revoke verwaltet die Verwaltungs-API-Schlüssel der Umgebung. Diese Befehle verwenden --if-match nicht.

keenauth api-keys create --name ci --type restricted --permissions users:read,users:write --expires-at 2027-10-01T00:00:00Z
keenauth api-keys rotate key_123 --overlap-hours 24
keenauth api-keys revoke key_123 --reason leaked --yes

Der Rohschlüssel von create und rotate wird einmal auf stdout ausgegeben, zusammen mit einer einmaligen Warnung auf stderr; er kann nicht erneut abgerufen werden. list und get geben nur Metadaten aus.