Cette documentation concerne les déploiements fédéraux de Devin. Retour à la documentation Devin
Créer le fichier d’authentification
Le fichier définit un seul et unique mode. S’il n’existe pas, le produit se comporte comme s’il contenait
"mode": "license".
/etc/devin/auth.json
Les champs inconnus sont rejetés. En mode
license, seuls schema_version et mode sont autorisés.
Enregistrer le client auprès de votre IdP
La CLI exécute le flux authorization code OIDC avec PKCE (S256) en tant que client publicᅠ; aucun secret client n’est utilisé. Le client que vous enregistrez doit remplir les conditions suivantesᅠ:- Un client public (sans secret client) dont l’ID correspond à la valeur de
client_id, par exempledevin-cli, avec le grant authorization code activé et la méthode PKCES256. http://127.0.0.1/callbackenregistrée comme URI de redirection valide. La CLI écoute sur un port de bouclage aléatoire (http://127.0.0.1:<port>/callback) pour le flux via navigateur et utilise l’adresse fixehttp://127.0.0.1/callbackpour le flux manuel. Conformément à la RFC 8252, l’IdP doit ignorer le port de bouclageᅠ; si ce n’est pas le cas du vôtre, enregistrez un caractère générique correspondant.- Pour utiliser
required_group, l’ID token doit contenir le claim d’appartenance aux groupes indiqué dansgroups_claim(groupspar défaut). - L’IdP renvoie un ID token lors du rafraîchissement (c’est le cas de la plupart des IdP lorsque le périmètre
openidest accordé), et la durée de vie de l’ID token pour ce client est courte. Consultez Propagation de la révocation pour en savoir plus.
Connexion
Connectez-vous depuis un terminal du poste de travail :127.0.0.1 qui ne se chargera pas. Copiez cette URL en entier (paramètres de requête compris) et collez-la dans le terminal.
Vérifier le statut et se déconnecter
Status: not logged in (<reason>) suivi de Run \devin auth login` to sign in.`
Ce que la CLI valide
L’ID token est validé localement : signature vérifiée à l’aide du JWKS de l’IdP,iss, aud, expiration (avec une tolérance de décalage d’horloge de 120 secondes), nonce de connexion et contrôle d’appartenance au groupe. Les ID tokens et les jetons de rafraîchissement sont mis en cache dans le magasin local de credentials, avec des autorisations réservées au propriétaire (0600), et sont actualisés de manière transparente auprès de l’IdP.
Lorsque le SSO (authentification unique) est configuré, qu’aucune connexion valide n’existe et que l’actualisation transparente échoue, la CLI s’arrête dès le démarrage et affiche une erreur invitant l’utilisateur à exécuter devin auth login.
La CLI ne suit jamais les redirections HTTP de l’IdP : une réponse 3xx de l’endpoint de découverte, du JWKS ou de l’endpoint de token fait échouer la connexion, avec une erreur indiquant l’endpoint concerné. issuer doit donc pointer vers les URL effectivement servies par l’IdP.
Les endpoints découverts doivent rester sur l’émetteur
Les valeursauthorization_endpoint, token_endpoint et jwks_uri obtenues lors de la découverte doivent avoir le même schéma, le même hôte et le même port que issuer (les ports par défaut sont considérés comme équivalents). Tout endpoint situé sur un autre hôte est refusé, et la connexion échoue avec une erreur du type :
hostname-backchannel-dynamic=true, où token_endpoint et jwks_uri sont réécrits avec le hostname interne par lequel la CLI s’est connectée. Si, et seulement si, vous avez vérifié dans la configuration de l’IdP elle-même que l’hôte supplémentaire est voulu, ajoutez-le :
host (n’importe quel port) ou host:port, sans distinction de casse. Il n’existe ni caractère générique ni moyen de désactiver la vérification. La liste d’autorisation n’assouplit jamais les exigences TLS : un endpoint http:// reste refusé avec un émetteur https://. N’ajoutez pas un hôte simplement parce qu’une erreur de connexion le mentionne : cette erreur signifie justement que la vérification fonctionne.
Propagation de la révocation
Le contrôle d’appartenance au groupe s’appuie sur l’ID token mis en cache : retirer un utilisateur derequired_group (ou désactiver l’utilisateur) au niveau de l’IdP prend donc effet lors de sa prochaine actualisation du token, soit au plus tard à l’expiration de l’ID token actuel, plus la tolérance de décalage de 120 secondes. Si une révocation rapide est importante, définissez une durée de vie courte pour l’ID token de ce client.
Si une réponse de rafraîchissement ne contient pas de nouvel ID token, l’ID token mis en cache reste utilisé, mais seulement jusqu’à 24 heures après le exp de ce token ; au-delà, l’utilisateur doit se reconnecter, même si l’IdP accepte toujours le jeton de rafraîchissement.
Revalidation dans les sessions en cours
Tant que Devin Desktop (ou tout autre client de l’agent intégré) est en cours d’exécution, l’agent revérifie la connexion toutes les 60 secondes et force une actualisation du token auprès de l’IdP au moins toutes les 15 minutes. En cas d’échec d’une vérification, l’agent consigne un événement d’auditsso_revalidation_failed avec le code IDP, cesse d’accepter de nouvelles tâches, puis s’arrête ; l’utilisateur doit alors se reconnecter et le relancer.
Éléments audités
L’activité SSO est consignée dans le journal d’audit local sous forme d’événementsauth. Tout événement associé à un token validé inclut l’identité SSO dans actor (sso_issuer, sso_subject, sso_user, sso_groups).
Codes d’erreur IDP
Le catalogue complet est disponible sur la page Codes d’erreur.

