Inhalt

Anmeldung und Zugriff

KI-Clients melden sich mit OAuth 2.1 bei LetKite an. Sie bestätigen jeden Client einmal, wählen, was er tun darf und welche Maschinen er erreicht, und können diesen Zugriff jederzeit zurücknehmen.

Discovery

Ein Client, der https://mcp.letkite.com/mcp ohne Token aufruft, erhält HTTP 401 mit einem WWW-Authenticate-Header, der auf die Metadaten der geschützten Ressource verweist. Von dort findet er den Autorisierungsserver:

Metadaten der geschützten Ressourcehttps://mcp.letkite.com/.well-known/oauth-protected-resource/mcp
Metadaten des Autorisierungsservershttps://mcp.letkite.com/.well-known/oauth-authorization-server (auch unter /.well-known/openid-configuration)
Aussteller (Issuer)https://mcp.letkite.com
Autorisierungsendpunkthttps://mcp.letkite.com/oauth/authorize
Token-Endpunkthttps://mcp.letkite.com/oauth/token
Widerrufsendpunkthttps://mcp.letkite.com/oauth/revoke (Aktualisierungstokens)
Registrierungsendpunkthttps://mcp.letkite.com/oauth/register

Client-Registrierung

LetKite hat keine vorab registrierten Clients. Ein Client weist sich auf eine von zwei Arten aus:

  • Dynamische Client-Registrierung (RFC 7591): Der Client sendet seine Metadaten an den Registrierungsendpunkt und erhält eine Client-ID. Ein Client-Secret erhalten nur Clients, die client_secret_post oder client_secret_basic anfordern; öffentliche Clients verwenden keines.
  • Client-ID-Metadatendokument: Die Client-ID ist eine https://-URL, die die Metadaten des Clients bereitstellt. LetKite ruft sie mit einem Timeout von 5 Sekunden ab, bis zu 64 KB, ohne Weiterleitungen zu folgen und nur von öffentlichen Adressen.

Redirect-URIs müssen https verwenden, oder http auf einer Loopback-Adresse (localhost, 127.0.0.1) für lokale Clients wie Claude Code, die dabei jeden Port verwenden dürfen (RFC 8252). LetKite erkennt die Rückrufadressen von Claude, ChatGPT und anderen bekannten Clients, und die Anmeldeseite warnt Sie, wenn die Rückrufadresse eines Clients nicht dazugehört. Abgelehnte Rückrufadressen werden im Aktivitätsprotokoll festgehalten.

Der Autorisierungsablauf

  • Nur der Ablauf mit Autorisierungscode (response_type=code), wobei PKCE S256 bei jeder Anfrage Pflicht ist.
  • Resource Indicators (RFC 8707): Der Client kann https://mcp.letkite.com/mcp als Ressource angeben; Tokens werden immer für diese Ressource ausgestellt.
  • Die Autorisierungsantwort enthält iss (RFC 9207).
  • Grant-Typen: authorization_code und refresh_token.

Die Anmeldung erfolgt auf der eigenen Anmeldeseite von LetKite (id.letkite.com), mit Zwei-Faktor-Authentifizierung, wo Ihr Konto sie verlangt. Gehören Sie zu mehreren LetKite-Konten, wählen Sie eines. Die Zustimmungsseite zeigt dann:

  • den Namen des Clients, wie er sich registriert hat und wohin er Sie zurückleitet;
  • die Scopes, die er anfordert und die Sie abwählen können (mindestens einer bleibt);
  • die Maschinen, die er erreichen darf: jede Maschine, auch später hinzugefügte, oder nur Maschinen mit ausgewählten Tags oder IDs;
  • die Richtlinie, die ihn begrenzt, ausgewählt aus den Richtlinien Ihres Kontos.

Mit der Zustimmung entsteht eine Verbindung (ein Grant) für diese Person, diesen Client, diese Scopes, diese Maschinen und diese Richtlinie. Die Inhaber des Kontos und Sie erhalten eine E-Mail über die neue Verbindung, mit einem Link, um sie zu widerrufen, falls Sie es nicht waren.

Scopes

ScopeErlaubtTools (Beispiele)
fleet.readMaschinen auflisten, Dateien lesen, Logs und Auftragsstatus ansehenlist_hosts, host_facts, read_file, list_dir, job_status, log_read
fleet.execBefehle ausführen, Shells und Terminals öffnen, Aufträge und Zeitpläne starten, Maschinen aufweckenexec, shell_run, job_start, terminal_open, schedule_create
fleet.writeDateien schreiben, hochladen, kopieren und löschenwrite_file, delete_path, transfer_start
fleet.adminPortweiterleitung und Lesen des Aktivitätsprotokolls; schließt die anderen drei eintunnel_open, tunnel_http, audit_tail
offline_accessWird akzeptiert; Aktualisierungstokens werden ohnehin ausgestellt

Welchen Scope ein Tool braucht, steht in seiner Beschreibung auf der Seite Tools. Ein Aufruf ohne diesen Scope schlägt mit token lacks fleet.… fehl.

Tokens

Zugriffstoken15 Minuten, ein signiertes JWT (RS256) für https://mcp.letkite.com/mcp, gesendet als Authorization: Bearer
Aktualisierungstoken30 Tage, bei jeder Verwendung ersetzt; wird ein altes erneut verwendet, wird die ganze Kette widerrufen
Autorisierungscode2 Minuten, nur einmal verwendbar; ein erneut eingesetzter Code widerruft die damit ausgestellten Tokens

Zugriff zurücknehmen

  • Trennen Sie in der Konsole unter Verbindungen (https://dashboard.letkite.com/connections) jede Ihrer Verbindungen. Inhaber und Admins können die Verbindungen aller Personen trennen.
  • Verwenden Sie den Link in der E-Mail zur neuen Verbindung.

LetKite liest die Verbindung bei jedem Toolaufruf neu, daher wird ein getrennter Client innerhalb von Sekunden abgelehnt, ohne dass erst sein Token ablaufen muss. Eine Verbindung, deren Aktualisierungstokens alle seit einem Tag abgelaufen sind, wird automatisch entfernt, sofern kein Zeitplan sie verwendet.