Skip to main content
Diese Dokumentation gilt für die föderalen Deployments von Devin. Zurück zur Devin-Dokumentation
Standardmäßig wird der Zugriff auf den air-gapped Build ausschließlich über die Lizenzdatei gesteuert. Zusätzlich können Sie festlegen, dass sich jeder Nutzer bei Ihrem eigenen OIDC-Identitätsanbieter anmelden muss. SSO (Single Sign-On) bildet dabei eine zusätzliche Schicht über der Lizenz: Die Lizenz ist weiterhin erforderlich, und die Anmeldung erfolgt über den von Ihnen konfigurierten Issuer.

Auth-Datei erstellen

Die Datei legt genau einen Modus fest. Ist die Datei nicht vorhanden, verhält sich das Produkt so, als enthielte sie "mode": "license".
/etc/devin/auth.json
Unbekannte Felder werden abgelehnt. Im Modus license sind nur schema_version und mode zulässig.
Wenn Ihr IdP ein Zertifikat einer privaten CA verwendet, setzen Sie DEVIN_CA_BUNDLE auf ein PEM-Paket, damit die CLI diesem Zertifikat vertraut; siehe Netzwerk und Zertifikate.

Client bei Ihrem IdP registrieren

Die CLI führt den OIDC-Authorization-Code-Flow mit PKCE (S256) als öffentlicher Client aus; ein Client-Secret gibt es nicht. Der Client, den Sie registrieren, muss folgende Anforderungen erfüllen:
  1. Ein öffentlicher Client (ohne Client-Secret) mit der ID, die Sie in client_id angeben, zum Beispiel devin-cli, mit aktiviertem Authorization-Code-Grant und der PKCE-Methode S256.
  2. http://127.0.0.1/callback muss als gültige Weiterleitungs-URI registriert sein. Für den Browser-Flow lauscht die CLI auf einem zufälligen Loopback-Port (http://127.0.0.1:<port>/callback), für den manuellen Flow verwendet sie die feste Adresse http://127.0.0.1/callback. Gemäß RFC 8252 sollte der IdP den Loopback-Port ignorieren; falls Ihr IdP dies nicht tut, registrieren Sie eine passende Wildcard.
  3. Wenn Sie required_group verwenden möchten, muss das ID-Token den in groups_claim angegebenen Claim für die Gruppenmitgliedschaft enthalten (standardmäßig groups).
  4. Der IdP muss beim Refresh ein ID-Token zurückgeben (was die meisten tun, wenn der Geltungsbereich openid gewährt wurde), und die Gültigkeitsdauer des ID-Tokens für diesen Client muss kurz sein. Die Gründe dafür finden Sie unter Wie sich ein Entzug auswirkt.

Anmelden

Melden Sie sich über ein Terminal auf der Workstation an:
Verwenden Sie auf einem Host ohne grafische Oberfläche oder über SSH den manuellen Flow. Die CLI gibt eine URL aus, die Sie in einem Browser auf einer beliebigen Maschine öffnen. Nach der Anmeldung wird der Browser auf eine 127.0.0.1-URL weitergeleitet, die sich nicht laden lässt. Kopieren Sie diese vollständige URL (einschließlich der Query-Parameter) und fügen Sie sie anschließend im Terminal ein.
Devin Desktop verwendet über den mitgelieferten Agent dieselbe Anmeldung; Nutzer, die nicht angemeldet sind, werden aufgefordert, sich in den Devin-Settings anzumelden, bevor sie mit der Arbeit beginnen.

Status prüfen und abmelden

Wenn die zwischengespeicherte Anmeldung fehlt oder nicht mehr aktualisiert werden kann, lautet die Ausgabe Status: not logged in (<reason>), gefolgt von Run \devin auth login` to sign in.`
Die Abmeldung erfolgt ausschließlich lokal: Dabei wird nur der token-Cache gelöscht, der IdP wird nicht kontaktiert.

Was die CLI validiert

Das ID-Token wird lokal validiert: die Signatur anhand des JWKS des IdP, iss, aud, der Ablaufzeitpunkt (mit einer Toleranz von 120 Sekunden für Uhrenabweichungen), die Login-nonce sowie die Gruppenprüfung. Das ID-Token und das Aktualisierungstoken werden im lokalen Anmeldedatenspeicher mit Berechtigungen ausschließlich für den Eigentümer (0600) zwischengespeichert und im Hintergrund über den IdP aktualisiert. Wenn SSO konfiguriert ist, keine gültige Anmeldung vorliegt und auch die Aktualisierung im Hintergrund fehlschlägt, bricht die CLI beim Start mit einer Fehlermeldung ab, die den Nutzer auffordert, devin auth login auszuführen. Die CLI folgt grundsätzlich keinen HTTP-Weiterleitungen des IdP: Liefert der Discovery-, JWKS- oder Token-Endpunkt einen 3xx-Status, schlägt die Anmeldung mit einer Fehlermeldung fehl, die den betreffenden Endpunkt nennt. issuer muss daher auf die URLs verweisen, die der IdP tatsächlich bereitstellt.

Per automatischer Erkennung ermittelte Endpunkte müssen auf dem Issuer liegen

Die per automatischer Erkennung ermittelten Werte authorization_endpoint, token_endpoint und jwks_uri müssen dasselbe Schema, denselben Host und denselben Port wie issuer haben (Standard-Ports gelten als gleichwertig). Ein Endpunkt auf einem anderen Host wird abgelehnt, und die Anmeldung schlägt mit einer Fehlermeldung wie dieser fehl:
Manche IdP-Topologien stellen Endpunkte berechtigterweise über mehr als einen Host bereit. Der typische On-Premises-Fall ist Keycloak mit hostname-backchannel-dynamic=true: Hier werden token_endpoint und jwks_uri auf den internen hostname umgeschrieben, über den die CLI die Verbindung hergestellt hat. Fügen Sie den zusätzlichen Host nur dann hinzu, wenn Sie anhand der Konfiguration des IdP selbst bestätigt haben, dass er beabsichtigt ist:
Einträge haben die Form host (beliebiger Port) oder host:port und werden ohne Berücksichtigung der Groß-/Kleinschreibung abgeglichen. Es gibt keine Platzhalter und keine Möglichkeit, die Prüfung zu deaktivieren. Die Positivliste lockert die TLS-Anforderungen nie: Ein http://-Endpunkt wird unter einem https://-Issuer weiterhin abgelehnt. Fügen Sie einen Host nicht nur deshalb hinzu, weil er in einer Fehlermeldung bei der Anmeldung genannt wird – der Fehler zeigt, dass die Prüfung funktioniert.

Wie sich ein Entzug auswirkt

Die Gruppenprüfung erfolgt anhand des zwischengespeicherten ID-Tokens. Wenn Sie einen Nutzer beim IdP aus required_group entfernen (oder den Nutzer deaktivieren), greift dies daher erst bei der nächsten Token-Aktualisierung – spätestens, wenn das aktuelle ID-Token abläuft, zuzüglich einer Toleranz von 120 Sekunden für Zeitabweichungen. Wählen Sie für diesen Client eine kurze Gültigkeitsdauer des ID-Tokens, wenn ein schneller Entzug wichtig ist. Enthält eine Aktualisierungsantwort kein neues ID-Token, wird weiterhin das zwischengespeicherte ID-Token verwendet, allerdings höchstens 24 Stunden über dessen exp hinaus. Danach muss sich der Nutzer erneut anmelden, selbst wenn der IdP das Aktualisierungstoken noch akzeptiert.

Erneute Validierung in laufenden Sitzungen

Während Devin Desktop (oder ein anderer Client des mitgelieferten Agents) läuft, prüft der Agent die Anmeldung alle 60 Sekunden erneut und erzwingt mindestens alle 15 Minuten eine Token-Aktualisierung beim IdP. Schlägt eine Prüfung fehl, protokolliert der Agent ein sso_revalidation_failed-Audit-Ereignis mit dem Code IDP, nimmt keine neuen Aufgaben mehr an und beendet sich. Der Nutzer muss sich dann erneut anmelden und den Client neu starten.

Was protokolliert wird

SSO-Aktivitäten werden als auth-Ereignisse in das lokale Audit-Protokoll geschrieben. Jedes Ereignis, für das ein validiertes token vorliegt, enthält die SSO-Identität in actor (sso_issuer, sso_subject, sso_user, sso_groups).

IDP-Fehlercodes

Der vollständige Katalog befindet sich auf der Seite Fehlercodes.