Skip to main content
Esta documentación corresponde a los despliegues federales de Devin. Volver a la documentación de Devin
De forma predeterminada, el acceso a la compilación aislada de la red se controla únicamente mediante el archivo de licencia. Además, puedes exigir que cada usuario inicie sesión con tu propio proveedor de identidad OIDC. El SSO (inicio de sesión único) se añade como una capa adicional sobre la licencia: la licencia sigue siendo obligatoria y el flujo de inicio de sesión se ejecuta contra el emisor que configures.

Crear el archivo de autenticación

El archivo selecciona un único modo. Si el archivo no existe, el producto se comporta como si contuviera "mode": "license".
/etc/devin/auth.json
Los campos desconocidos se rechazan. En el modo license solo se permiten schema_version y mode.
Si tu IdP usa un certificado emitido por una CA privada, configura DEVIN_CA_BUNDLE con la ruta a un paquete PEM para que la CLI confíe en él; consulta Red y certificados.

Registra el cliente en tu IdP

La CLI ejecuta el flujo de código de autorización de OIDC con PKCE (S256) como cliente público, por lo que no hay secreto de cliente. El cliente que registres debe cumplir estos requisitos:
  1. Debe ser un cliente público (sin secreto de cliente) con el ID que indiques en client_id, por ejemplo devin-cli, con la concesión de código de autorización habilitada y el método PKCE S256.
  2. http://127.0.0.1/callback debe estar registrado como URI de redirección válido. La CLI escucha en un puerto de loopback aleatorio (http://127.0.0.1:<port>/callback) para el flujo del navegador y usa la dirección fija http://127.0.0.1/callback para el flujo manual. Según el RFC 8252, el IdP debería ignorar el puerto de loopback; si el tuyo no lo hace, registra un comodín que coincida.
  3. Si quieres usar required_group, el token de ID debe incluir el claim de pertenencia a grupo indicado en groups_claim (groups de forma predeterminada).
  4. El IdP debe devolver un token de ID al actualizarse (la mayoría lo hace cuando se concede el ámbito openid), y la vida útil del token de ID para este cliente debe ser corta. Consulta Cómo se propaga la revocación para saber por qué.

Iniciar sesión

Inicia sesión desde una terminal en la estación de trabajo:
En un host sin interfaz gráfica o a través de SSH, usa el flujo manual. La CLI muestra una URL que debes abrir en un navegador desde cualquier máquina; después de iniciar sesión, el navegador te redirigirá a una URL de 127.0.0.1 que no llegará a cargarse. Copia esa URL completa (incluidos sus parámetros de consulta) y pégala en la terminal.
Devin Desktop usa el mismo inicio de sesión a través del agente integrado; si un usuario no ha iniciado sesión, se le pedirá que lo haga en la configuración de Devin antes de empezar a trabajar.

Comprobar el estado y cerrar sesión

Si el inicio de sesión almacenado en caché no existe o ya no se puede renovar, la salida es Status: not logged in (<reason>), seguida de Run \devin auth login` to sign in.`
El cierre de sesión solo tiene efecto local: elimina la caché de tokens y no se comunica con el IdP.

Qué valida la CLI

El token de ID se valida localmente: la firma con el JWKS del IdP, iss, aud, la expiración (con una tolerancia de desfase de reloj de 120 segundos), el nonce del inicio de sesión y el control de pertenencia a grupos. Los tokens de ID y de actualización se guardan en caché en el almacén local de credenciales con permisos exclusivos para el propietario (0600) y se renuevan automáticamente con el IdP, sin intervención del usuario. Si SSO está configurado y no hay un inicio de sesión válido (y la renovación automática falla), la CLI se cierra al iniciarse y muestra un error que indica al usuario que ejecute devin auth login. La CLI nunca sigue redirecciones HTTP del IdP: si el endpoint de descubrimiento, de JWKS o de tokens devuelve un 3xx, el inicio de sesión falla con un error que indica qué endpoint lo provocó, por lo que issuer debe apuntar a las URL que el IdP expone realmente.

Los endpoints descubiertos deben estar en el mismo emisor

Los valores authorization_endpoint, token_endpoint y jwks_uri obtenidos mediante el descubrimiento deben tener el mismo esquema, host y puerto que issuer (los puertos predeterminados se consideran equivalentes). Cualquier endpoint alojado en otro host se rechaza, y el inicio de sesión falla con un error similar a este:
Algunas topologías de IdP sirven legítimamente endpoints desde más de un host. El caso más habitual en entornos on-premises es Keycloak con hostname-backchannel-dynamic=true, donde token_endpoint y jwks_uri se reescriben con el nombre de host interno a través del cual se conectó la CLI. Si, y solo si, has comprobado en la propia configuración del IdP que el host adicional es intencionado, agrégalo:
Las entradas son host (cualquier puerto) o host:port, y se comparan sin distinguir entre mayúsculas y minúsculas. No se admiten comodines ni hay forma de desactivar la comprobación. La lista de permitidos nunca flexibiliza TLS: un endpoint http:// se sigue rechazando con un emisor https://. No agregues un host solo porque aparezca en un error de inicio de sesión; ese error significa que la comprobación está funcionando.

Cómo se propaga la revocación

El control de pertenencia a grupos se evalúa sobre el token de ID almacenado en caché, por lo que quitar a un usuario de required_group (o deshabilitarlo) en el IdP surte efecto en la siguiente actualización de su token: como máximo, cuando caduque el token de ID actual, más los 120 segundos de tolerancia de desfase de reloj. Si necesitas que la revocación sea rápida, configura una vida útil corta del token de ID para este cliente. Si una respuesta de actualización no incluye un nuevo token de ID, se sigue usando el token de ID almacenado en caché, pero solo hasta 24 horas después del exp de ese token. Pasado ese plazo, el usuario debe volver a iniciar sesión aunque el IdP siga aceptando el token de actualización.

Revalidación en sesiones en ejecución

Mientras Devin Desktop (o cualquier cliente del agente integrado) está en ejecución, el agente vuelve a comprobar el inicio de sesión cada 60 segundos y fuerza una actualización del token con el IdP al menos cada 15 minutos. Si una comprobación falla, el agente registra un evento de auditoría sso_revalidation_failed con el código IDP, deja de aceptar trabajo nuevo y se cierra; el usuario debe volver a iniciar sesión y reiniciarlo.

Qué se audita

La actividad de SSO se escribe en el registro de auditoría local como eventos auth. Todo evento que disponga de un token validado incluye la identidad SSO en actor (sso_issuer, sso_subject, sso_user, sso_groups).

Códigos de error de IDP

Puede consultar el catálogo completo en la página Códigos de error.