> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devin.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Guía de incorporación a SSO

> Guía completa para configurar SSO, comprender las consideraciones de SCIM y configurar grupos de IdP con Devin Enterprise.

Esta guía acompaña a los administradores de empresa a lo largo de todo el ciclo de vida de SSO con Devin, desde la configuración inicial hasta la configuración de grupos de IdP, y explica cómo Devin gestiona el aprovisionamiento de usuarios sin SCIM.

Para obtener instrucciones de configuración específicas de cada proveedor, consulta [Okta](/es/enterprise/security-access/sso/okta), [Microsoft Entra ID](/es/enterprise/security-access/sso/azure), [SAML](/es/enterprise/security-access/sso/saml) o [OIDC genérico](/es/enterprise/security-access/sso/oidc).

***

<div id="1-setting-up-sso">
  ## 1. Configuración del SSO (inicio de sesión único)
</div>

<div id="creating-your-sso-application">
  ### Creación de tu aplicación de SSO
</div>

Crea una aplicación en tu proveedor de identidad (Okta, Microsoft Entra ID o cualquier IdP compatible con SAML/OIDC) y comparte las siguientes credenciales con tu equipo de Cognition:

| Tipo de conexión       | Protocolo                      | Qué proporcionar                                                  |
| :--------------------- | :----------------------------- | :---------------------------------------------------------------- |
| **Okta**               | OIDC (Okta Workforce Identity) | Dominio de Okta, ID de cliente, secreto de cliente, ámbitos       |
| **Microsoft Entra ID** | OIDC (Microsoft Entra ID)      | Dominio de Microsoft Entra ID, ID de cliente, secreto de cliente  |
| **SAML**               | SAML 2.0 (cualquier IdP)       | URL de inicio de sesión, certificado de firma X.509               |
| **OIDC genérico**      | OIDC                           | URL de descubrimiento, ID de cliente, secreto de cliente, ámbitos |

<Note>
  También debes proporcionar tus dominios de correo electrónico verificados para que Devin sepa en qué direcciones de correo electrónico de tu IdP debe confiar.
</Note>

<div id="what-happens-after-setup">
  ### Qué sucede después de la configuración
</div>

Una vez que tu equipo de Cognition tiene las credenciales, configura la conexión de SSO. Cuando la configuración se completa:

1. La conexión de SSO se vincula a tu cuenta Enterprise de Devin
2. Se habilita la **membresía automática al iniciar sesión** — cualquier usuario que se autentique mediante SSO se agrega automáticamente a tu empresa
3. Tus dominios de correo electrónico se registran como de confianza — solo se aceptan direcciones de correo electrónico de esos dominios
4. Se habilita la **asignación de roles basada en grupos (RBAC)** — los grupos de IdP enviados durante el inicio de sesión pueden mapearse a roles de Devin
5. Los inicios de sesión sociales predeterminados (Google, GitHub) se deshabilitan — SSO pasa a ser el método de autenticación obligatorio

<div id="the-user-login-experience">
  ### La experiencia de inicio de sesión del usuario
</div>

1. El usuario accede a tu URL de Devin
2. Se le redirige al IdP configurado (Okta, Microsoft Entra ID, etc.)
3. El usuario se autentica normalmente
4. El IdP envía a Devin la información del usuario y su pertenencia a grupos
5. Devin automáticamente:
   * Crea la cuenta del usuario si es su primer inicio de sesión (aprovisionamiento just-in-time)
   * Le asigna el rol predeterminado de Miembro de Enterprise
   * Sincroniza su pertenencia a grupos del IdP — agrega grupos nuevos y elimina los inactivos
   * Registra el inicio de sesión en el registro de auditoría de Enterprise

***

<div id="self-service-administration">
  ## Administración de autoservicio
</div>

Lo siguiente está disponible directamente para los administradores de empresa en la aplicación web de Devin.

<div id="idp-group-management">
  ### Gestión de grupos de IdP
</div>

**Settings → Enterprise → Grupos de IdP**

* Ver todos los grupos que se han sincronizado a partir de los inicios de sesión de los usuarios
* Asignar un grupo a un rol a nivel Enterprise (p. ej., "Todos los miembros de `Engineering-Admins` reciben el rol de Enterprise Admin")
* Asignar un grupo a orgs específicas con roles específicos (p. ej., "`Team-Backend` recibe acceso de Member en la org Backend")
* Agregar o quitar grupos en bloque en múltiples orgs
* Ver a cuántas orgs está asignado cada grupo

<div id="member-management">
  ### Gestión de miembros
</div>

**Settings → Enterprise → Miembros**

* Ver todos los miembros de Enterprise, incluidos los grupos de IdP a los que pertenecen
* Invitar a nuevos miembros por correo electrónico
* Actualizar los roles de los miembros
* Eliminar miembros

<div id="custom-roles">
  ### Roles personalizados
</div>

**Settings → Enterprise → Roles**

* Crea roles personalizados con permisos granulares
* Asigna roles personalizados a usuarios individuales o a grupos de IdP

Consulta [Roles personalizados y RBAC](/es/enterprise/security-access/custom-roles) para obtener más información.

<div id="api-for-automation">
  ### API para la automatización
</div>

Devin ofrece una API v2 que puede usar para automatizar la gestión de miembros:

| Acción                                               | Endpoint de la API                           |
| :--------------------------------------------------- | :------------------------------------------- |
| Listar todos los miembros                            | `GET /v2/enterprise/members`                 |
| Invitar usuarios por correo electrónico (en bloque)  | `POST /v2/enterprise/members/invite`         |
| Eliminar un miembro                                  | `DELETE /v2/enterprise/members/{user_id}`    |
| Actualizar en bloque los roles de los miembros       | `PATCH /v2/enterprise/members/roles`         |
| Migrar miembros entre roles                          | `PATCH /v2/enterprise/members/migrate-roles` |
| Listar todos los roles                               | `GET /v2/enterprise/roles`                   |
| Listar todos los grupos de IdP                       | `GET /v2/enterprise/groups`                  |
| Crear grupos de IdP de antemano                      | `PUT /v2/enterprise/groups`                  |
| Obtener las asignaciones de organización de un grupo | `GET /v2/enterprise/groups/{group_name}`     |

***

<div id="2-understanding-devin-without-scim">
  ## 2. Cómo funciona Devin sin SCIM
</div>

Actualmente, Devin no admite el protocolo SCIM. Toda la gestión de usuarios y grupos se realiza mediante eventos de inicio de sesión con SSO y la UI/API de Devin. Esto es lo que significa en la práctica.

<div id="user-provisioning-login-triggered-only">
  ### Aprovisionamiento de usuarios: solo al iniciar sesión
</div>

|                                | Con SCIM                                                                              | Devin (sin SCIM)                                                                                                                       |
| :----------------------------- | :------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------- |
| **Cómo se crean los usuarios** | El IdP crea el usuario en la aplicación de inmediato cuando se le asigna              | El usuario solo existe en Devin después de su primer inicio de sesión con SSO, o tras una invitación manual a través de la UI o la API |
| **Cuándo ocurre**              | El Admin asigna la aplicación al usuario → el usuario aparece en cuestión de segundos | El Admin asigna la aplicación al usuario → no ocurre nada en Devin hasta que inicia sesión                                             |
| **Preaprovisionamiento**       | La cuenta de usuario está lista antes de que visite la aplicación por primera vez     | No hay preaprovisionamiento, a menos que el Admin lo invite explícitamente a través de la UI de Devin o la API                         |

Al incorporar a nuevos empleados, el Admin puede invitarlos por adelantado (**Settings → Enterprise → Miembros → Invitar**, o mediante la API) o simplemente dejar que se aprovisionen automáticamente en su primer inicio de sesión.

<div id="user-deprovisioning-manual-only">
  ### Desaprovisionamiento de usuarios: solo manual
</div>

|                                   | Con SCIM                                                                      | Devin (sin SCIM)                                                                                            |
| :-------------------------------- | :---------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------- |
| **Cómo se eliminan los usuarios** | El IdP desactiva/elimina al usuario → la aplicación lo desactiva de inmediato | Desactivar/eliminar a un usuario en el IdP no tiene ningún efecto en Devin                                  |
| **Baja**                          | El empleado dado de baja pierde el acceso en cuestión de minutos              | El empleado dado de baja mantiene el acceso hasta que se lo elimina manualmente de Devin y su sesión expira |
| **Cumplimiento**                  | Cumplimiento automatizado: sin cuentas huérfanas                              | Riesgo de cuentas huérfanas, a menos que el administrador gestione ambos sistemas                           |

<Warning>
  Esta es la mayor carencia operativa. Al dar de baja a un empleado, el administrador debe eliminarlo por separado de Devin (**Settings → Enterprise → Miembros → Eliminar**, o mediante la API). Las sesiones activas siguen funcionando hasta que expiran de forma natural: el IdP no activa una revocación instantánea de la sesión.
</Warning>

<div id="group-sync-login-time-only-not-real-time">
  ### Sincronización de grupos: solo al iniciar sesión, no en tiempo real
</div>

|                               | Con SCIM (Group Push)                                                | Devin (sin SCIM)                                                                                                        |
| :---------------------------- | :------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------- |
| **Momento de sincronización** | El IdP envía los cambios de pertenencia a grupos en tiempo real      | Los grupos solo se sincronizan cuando el usuario inicia sesión                                                          |
| **Agregar a un grupo**        | El Admin agrega al usuario al grupo → la app lo refleja de inmediato | El Admin agrega al usuario al grupo → Devin no lo detecta hasta que el usuario vuelva a iniciar sesión                  |
| **Quitar de un grupo**        | El Admin quita al usuario del grupo → la app lo refleja de inmediato | El Admin quita al usuario del grupo → Devin sigue mostrando la pertenencia anterior hasta el siguiente inicio de sesión |
| **Fuente de verdad**          | El IdP es siempre la fuente de verdad                                | El IdP es la fuente de verdad solo en el momento del inicio de sesión; puede desincronizarse entre inicios de sesión    |

Si un admin cambia el grupo de IdP de alguien (p. ej., lo mueve de Engineering a Sales), Devin no reflejará ese cambio hasta que el usuario vuelva a iniciar sesión. Mientras tanto, el usuario conserva sus Roles basados en grupos y el acceso a la org anterior.

<div id="built-in-alternatives-to-scim">
  ### Alternativas nativas a SCIM
</div>

Devin incluye varias funciones que cubren casos de uso habituales de SCIM:

1. **Aprovisionamiento just-in-time** — los usuarios se crean automáticamente en el primer inicio de sesión con SSO con el rol empresarial predeterminado
2. **Sincronización completa de grupos en cada inicio de sesión** — cada vez que un usuario inicia sesión, Devin realiza una comparación completa de sus grupos de IdP: agrega los nuevos y elimina los antiguos
3. **RBAC basado en grupos** — puedes asignar grupos de IdP a roles empresariales y acceso a la organización en la configuración de Devin; esto se aplica en el siguiente inicio de sesión
4. **API v2 para automatización** — las invitaciones, eliminaciones y modificaciones masivas de roles se pueden automatizar con scripts para cerrar la brecha entre el aprovisionamiento y el desaprovisionamiento
5. **Registros de auditoría** — cada inicio de sesión queda registrado, lo que da visibilidad sobre quién ha accedido a Devin

***

<div id="3-configuring-idp-managed-groups">
  ## 3. Configuración de grupos gestionados por el IdP
</div>

Si usas SCIM con otras aplicaciones (p. ej., Slack, Box), esta sección explica cómo funciona el modelo de grupos de Devin y cómo configurar correctamente tu IdP.

<div id="context-scim-groups-vs-idp-groups">
  ### Contexto: grupos de SCIM vs. grupos de IdP
</div>

* **Grupos de SCIM:** La app de destino le indica al IdP qué grupos existen (el IdP los "importa"). La app es la fuente de verdad de la estructura de los grupos. El IdP sincroniza a los usuarios con esos grupos definidos por la app.
* **Grupos de IdP (lo que usa Devin):** El IdP es la fuente de verdad. Los grupos se definen en el directorio del IdP, y las membresías de los grupos se envían a Devin mediante claims de SAML/OIDC en el momento del inicio de sesión.

Como Devin no usa SCIM, ya estás operando en el modo de "grupos de IdP". La clave es asegurarte de que se estén enviando los grupos correctos desde tu IdP y de que se asignen correctamente en Devin.

<div id="step-1-define-groups-in-the-idp">
  ### Paso 1: Definir grupos en el IdP
</div>

En la consola de administración de tu IdP (los ejemplos a continuación usan Okta):

1. Ve a **Directory → Groups**
2. Crea grupos que se correspondan con los niveles de acceso de Devin (p. ej., `Devin-Engineering`, `Devin-Admins`, `Devin-DataScience`)
3. Asigna usuarios a estos grupos

Estos son grupos nativos del IdP: tu IdP es la fuente de verdad para determinar quién pertenece a cada uno.

<div id="step-2-configure-group-claims-in-the-idp-app">
  ### Paso 2: Configurar los claims de grupo en la aplicación del IdP
</div>

Los grupos deben incluirse en la respuesta de autenticación para que Devin pueda leerlos.

<div id="for-saml-connections">
  #### Para conexiones SAML
</div>

1. Ve a **Applications → \[Devin App] → SAML Settings → Edit**
2. En **Group Attribute Statements**, agrega:
   * **Name:** `groups`
   * **Filter:** "Comienza con" → `Devin-` (o usa "Matches regex" para patrones más complejos)
3. Esto le indica al IdP que incluya en la aserción SAML los nombres de los grupos que coincidan

<div id="for-oidc-connections">
  #### Para conexiones OIDC
</div>

1. Ve a **Applications → \[app de Devin] → Sign On → Edit**
2. En **OpenID Connect ID Token → Groups claim type**, selecciona "Filter"
3. Configura el filtro para que coincida con los grupos de Devin (p. ej., "Starts with" → `Devin-`)

<Tip>
  Usa un prefijo de filtro como `Devin-` para que solo se envíen los grupos relevantes. No es necesario enviar todos los grupos del IdP de la organización.
</Tip>

<div id="step-3-map-groups-to-roles-and-orgs-in-devin">
  ### Paso 3: Asigna grupos a roles y orgs en Devin
</div>

Una vez que los grupos se transmitan al iniciar sesión, asígnalos en Devin.

<div id="in-the-devin-ui">
  #### En la UI de Devin
</div>

1. **Settings → Enterprise → Grupos de IdP**
2. Los grupos aparecen automáticamente después de que inicie sesión cualquier miembro de ese grupo
3. Haz clic en un grupo → asígnale un rol a nivel de Enterprise (p. ej., Enterprise Admin o un rol personalizado)
4. Haz clic en un grupo → asígnalo a orgs específicas con roles específicos a nivel de org

<div id="via-the-api-for-pre-setup-or-automation">
  #### A través de la API (para la configuración previa o la automatización)
</div>

* Cree los grupos de antemano, antes de que alguien inicie sesión: `PUT /v2/enterprise/groups`
* Liste los grupos y las org a las que están asignados: `GET /v2/enterprise/groups`

<div id="step-4-if-migrating-from-scim-groups-in-other-apps">
  ### Paso 4: Si migras desde grupos de SCIM en otras aplicaciones
</div>

Si estás cambiando tu estrategia general de IdP, de grupos gestionados por SCIM a grupos gestionados por el IdP en todas tus herramientas (no solo en Devin):

1. **Detén la importación de grupos de SCIM** en las otras aplicaciones:
   * En el IdP: ve a la pestaña **Provisioning → Integration** de la aplicación → desmarca "Import Groups"
   * Esto evita que la aplicación de destino sea la fuente de verdad de los grupos
2. **Crea grupos equivalentes** en el directorio del IdP:
   * Ve a **Directory → Groups** y crea grupos que reflejen los que existían en la aplicación de destino
   * Asigna usuarios a estos grupos nativos del IdP
3. **Configura Group Push** (para las aplicaciones que lo admiten):
   * En la configuración del IdP de la aplicación: pestaña **Push Groups** → busca los grupos por nombre → vincúlalos con los grupos existentes en la aplicación de destino
   * Esto hace que el IdP sobrescriba la membresía interna de la aplicación; el IdP pasa a ser la única fuente de verdad
   * Devin no necesita Group Push porque lee los grupos directamente de la aserción de inicio de sesión
4. **Desactiva la sincronización de grupos de SCIM** en las otras aplicaciones:
   * Asegúrate de que "Import Groups" siga desactivado para evitar que la aplicación de destino vuelva a declararse como fuente de verdad

En el caso específico de Devin, no hace falta ninguna migración. Solo asegúrate de completar los pasos 1–3 anteriores (grupos definidos en tu IdP, claims configurados y mapeos establecidos en Devin).

***

<div id="key-considerations">
  ## Consideraciones clave
</div>

<AccordionGroup>
  <Accordion title="Cambios de nombre de grupos en el IdP">
    Si se cambia el nombre de un grupo, Devin lo trata como un grupo nuevo. Las asignaciones de roles del grupo anterior no se transfieren automáticamente; tendrás que volver a configurar el nuevo nombre del grupo en Settings de Devin.
  </Accordion>

  <Accordion title="Agregar a un grupo no implica acceso inmediato a Devin">
    Un usuario agregado a un grupo del IdP asignado a Devin no obtendrá ese acceso hasta que inicie sesión.
  </Accordion>

  <Accordion title="Quitar de un grupo no implica la eliminación inmediata del acceso a Devin">
    Quitar a un usuario de un grupo del IdP no revoca de inmediato su acceso a Devin. En su próximo inicio de sesión, Devin sincroniza y elimina la membresía de grupo obsoleta. Cualquier membresía directa (asignada fuera de los grupos) no se ve afectada.
  </Accordion>

  <Accordion title="Los nombres de los grupos deben coincidir exactamente">
    El nombre del grupo en el IdP debe coincidir exactamente con lo que ve Devin. Distingue entre mayúsculas y minúsculas.
  </Accordion>

  <Accordion title="No hay grupos anidados">
    Devin no admite grupos anidados/jerárquicos. Si el IdP envía un grupo principal, los miembros de los grupos secundarios no se incluyen automáticamente. Cada grupo debe asignarse explícitamente.
  </Accordion>
</AccordionGroup>

***

<div id="recommended-setup-for-scim-like-behavior">
  ## Configuración recomendada para un comportamiento "similar a SCIM"
</div>

Para tener el control más estricto posible sin SCIM, sigue este enfoque:

<Steps>
  <Step title="Configura tu proveedor de identidad (fuente de verdad)">
    1. Define grupos: `Devin-Admins`, `Devin-Backend`, `Devin-Frontend`, etc.
    2. Asigna usuarios a los grupos
    3. Configura los claims de grupo de SAML/OIDC filtrados por "Empieza por: `Devin-`"
  </Step>

  <Step title="Devin se sincroniza en cada inicio de sesión">
    Cuando un usuario inicia sesión mediante SSO, Devin automáticamente:

    * Crea al usuario automáticamente si es nuevo
    * Realiza una sincronización completa de grupos (agrega grupos nuevos y elimina los obsoletos)
    * Aplica de inmediato las asignaciones de grupos a roles y a organizaciones
  </Step>

  <Step title="Opcional: Automatiza con la API V2">
    Configura un job programado para cubrir las brechas de SCIM:

    1. Lee los usuarios activos desde la API de tu IdP
    2. Lee los miembros de Devin desde `GET /v2/enterprise/members`
    3. Invita a nuevos empleados mediante `POST /v2/enterprise/members/invite`
    4. Elimina a los empleados que ya no están mediante `DELETE /v2/enterprise/members/{user_id}`

    Esto te da aprovisionamiento y desaprovisionamiento de tipo push sin SCIM.
  </Step>
</Steps>

<div id="what-this-gives-you">
  ### Lo que esto te ofrece
</div>

* Tu IdP como fuente única de verdad para la estructura de grupos y la pertenencia a ellos
* Acceso automático basado en grupos en cada inicio de sesión
* Aprovisionamiento y desaprovisionamiento mediante API para cubrir la brecha que normalmente llenaría SCIM
* Registro de auditoría completo de todos los inicios de sesión y cambios de membresía

<div id="current-limitations">
  ### Limitaciones actuales
</div>

* **Sincronización de grupos en tiempo real entre inicios de sesión** — los grupos solo se actualizan cuando los usuarios inician sesión
* **Revocación instantánea de sesiones tras el desaprovisionamiento** — las sesiones siguen activas hasta que expiran
* **Eventos del ciclo de vida iniciados por el IdP**, como suspender/reactivar, no se admiten
