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

# Configurar SSO y SCIM

> Configura el inicio de sesión único (SSO) y el aprovisionamiento mediante SCIM (Sistema para la Gestión de Identidades entre Dominios) para tu organización usando Google Workspace, Microsoft Azure AD, Okta u otros proveedores de identidad SAML.

Esta función solo está disponible para usuarios de Teams y Enterprise.

<Tabs>
  <Tab title="SSO de Google">
    Windsurf ahora admite iniciar sesión con SSO (inicio de sesión único) mediante SAML. Si tu organización usa Microsoft Entra, Okta, Google Workspace u otro proveedor de identidad que admita SAML, podrás usar SSO con Windsurf.

    <Note>Windsurf solo admite SSO iniciado por el SP; el SSO iniciado por el IdP NO es compatible actualmente.</Note>

    ### Configurar la aplicación del IdP

    En la consola de administración de Google (admin.google.com), haz clic en **Apps -> Web and mobile apps** en el menú de la izquierda.

    <Frame>
      <img src="https://mintcdn.com/codeium/DnGnXhZxl1qb2EWt/assets/auth/sso-google.png?fit=max&auto=format&n=DnGnXhZxl1qb2EWt&q=85&s=9d300c86c609da6ee3fb630e91f4de3e" width="530" height="788" data-path="assets/auth/sso-google.png" />
    </Frame>

    Haz clic en **Add app** y luego en **Add custom SAML app**.

    <Frame>
      <img src="https://mintcdn.com/codeium/DnGnXhZxl1qb2EWt/assets/auth/sso-google2.png?fit=max&auto=format&n=DnGnXhZxl1qb2EWt&q=85&s=44375b535f269f130aea8c5bd6e736be" width="514" height="534" data-path="assets/auth/sso-google2.png" />
    </Frame>

    Completa **App name** con `Windsurf` y haz clic en **Next**.

    La siguiente pantalla (Google Identity Provider details) en la consola de Google contiene datos que deberás copiar en la configuración de SSO de Windsurf en [https://windsurf.com/team/settings](https://windsurf.com/team/settings).

    * Copia **SSO URL** desde la consola de Google a la configuración de Windsurf en **SSO URL**
    * Copia **Entity ID** desde la consola de Google a la configuración de Windsurf en **IdP Entity ID**
    * Copia **Certificate** desde la consola de Google a la configuración de Windsurf en **X509 Certificate**
    * Haz clic en **Continue** en la consola de Google

    La pantalla siguiente en la consola de Google requiere que copies datos desde la página de configuración de Codeium

    * Copia **Callback URL** desde la página de configuración de Codeium a la consola de Google en **ACS URL**
    * Copia **SP Entity ID** desde la página de configuración de Codeium a la consola de Google en **SP Entity ID**
    * Cambia el formato de **Name ID** a **EMAIL**
    * Haz clic en **Continue** en la consola de Google

    La pantalla siguiente en la consola de Google requiere cierta configuración

    * Haz clic en **Add Mapping**, selecciona **First name** y establece **App attributes** en **firstName**
    * Haz clic en **Add Mapping**, selecciona **Last name** y establece **App attributes** en **lastName**
    * Haz clic en **Finish**

    <Frame>
      <img src="https://mintcdn.com/codeium/DnGnXhZxl1qb2EWt/assets/auth/sso-google3.png?fit=max&auto=format&n=DnGnXhZxl1qb2EWt&q=85&s=c29f0ebf5a05dd5fae3a1127c4111d29" width="2078" height="862" data-path="assets/auth/sso-google3.png" />
    </Frame>

    En la página de configuración de Codeium, haz clic en **Enable Login with SAML** y luego en **Save**. Asegúrate de hacer clic en **Test Login** para verificar que el inicio de sesión funcione como se espera. A partir de ahora, todos los usuarios tendrán el inicio de sesión con SSO aplicado.
  </Tab>

  <Tab title="Microsoft Entra ID">
    Windsurf Enterprise ahora admite el inicio de sesión con SSO (inicio de sesión único) mediante SAML. Si tu organización usa Microsoft Entra ID (antes Azure AD), podrás usar SSO con Windsurf.

    <Note>Windsurf solo admite SSO iniciado por el SP; actualmente NO se admite SSO iniciado por el IdP.</Note>

    ## Parte 1: Crear la aplicación Enterprise en Microsoft Entra ID

    <Note>Todos los pasos de esta sección se realizan en el **centro de administración de Microsoft Entra ID**.</Note>

    1. En Microsoft Entra ID, haz clic en **Add** y luego en **Enterprise Application**.

    <Frame>
      <img src="https://mintcdn.com/codeium/DnGnXhZxl1qb2EWt/assets/auth/sso-azure.png?fit=max&auto=format&n=DnGnXhZxl1qb2EWt&q=85&s=70c1ef27e1870d1f95176d12cd7c9c47" width="854" height="384" data-path="assets/auth/sso-azure.png" />
    </Frame>

    2. Haz clic en **Create your own application**.

    <Frame>
      <img src="https://mintcdn.com/codeium/DnGnXhZxl1qb2EWt/assets/auth/sso-azure2.png?fit=max&auto=format&n=DnGnXhZxl1qb2EWt&q=85&s=d8d3d2b159172edef9033487d1167b52" width="680" height="202" data-path="assets/auth/sso-azure2.png" />
    </Frame>

    3. Nombra tu aplicación **Windsurf**, selecciona *Integrate any other application you don't find in the gallery* y luego haz clic en **Create**.

    <Frame>
      <img src="https://mintcdn.com/codeium/DnGnXhZxl1qb2EWt/assets/auth/sso-azure3.png?fit=max&auto=format&n=DnGnXhZxl1qb2EWt&q=85&s=38dd3186171705ca16387dfff4a5b24b" width="968" height="342" data-path="assets/auth/sso-azure3.png" />
    </Frame>

    ## Parte 2: Configurar SAML y atributos de usuario en Microsoft Entra ID

    <Note>Todos los pasos de esta sección se realizan en el **centro de administración de Microsoft Entra ID**.</Note>

    4. En tu nueva aplicación Windsurf, haz clic en **Set up single sign on** y luego en **SAML**.

    5. Haz clic en **Edit** en **Basic SAML Configuration**.

    6. **Mantén abierta esta pestaña de Entra ID** y abre una nueva pestaña para ir a la **configuración de SSO de Windsurf Teams** en [https://windsurf.com/team/settings](https://windsurf.com/team/settings).

    7. En el formulario de configuración SAML de **Microsoft Entra ID**:
       * **Identifier (Entity ID)**: Copia el valor de **SP Entity ID** desde la **página de configuración de SSO de Windsurf**
       * **Reply URL (Assertion Consumer Service URL)**: Copia el valor de **Callback URL** desde la **página de configuración de SSO de Windsurf**
       * Haz clic en **Save** en la parte superior

    8. Configura los atributos de usuario para mostrar correctamente el nombre. En **Microsoft Entra ID**, en **Attributes & Claims**, haz clic en **Edit**.

    9. Crea 2 nuevos claims haciendo clic en **Add new claim** para cada uno:
       * **Primer claim**: Name = `firstName`, Source attribute = `user.givenname`
       * **Segundo claim**: Name = `lastName`, Source attribute = `user.surname`

    ## Parte 3: Configurar los ajustes de SSO en el portal de Windsurf

    <Note>Completa la configuración en el **portal de Windsurf** ([https://windsurf.com/team/settings](https://windsurf.com/team/settings)).</Note>

    10. En la **página de configuración de SSO de Windsurf**:
        * **Pick your SSO ID**: Elige un identificador único para el portal de inicio de sesión de tu equipo (esto no se puede cambiar después)
        * **IdP Entity ID**: Copia el valor de **Microsoft Entra ID** en **Set up Windsurf** → **Microsoft Entra Identifier**
        * **SSO URL**: Copia el valor de **Login URL** desde **Microsoft Entra ID**
        * **X509 Certificate**: Descarga el **SAML certificate (Base64)** desde **Microsoft Entra ID**, abre el archivo y pega aquí el contenido de texto

    11. En el **portal de Windsurf**, haz clic en **Enable Login with SAML** y luego en **Save**.

    12. **Prueba la configuración**: Haz clic en **Test Login** para verificar que la configuración de SSO funciona como se espera.

    <Note>**Importante**: No cierres sesión ni cierres la página de configuración de Windsurf hasta que hayas probado el inicio de sesión correctamente. Si la prueba falla, puede que necesites solucionar la configuración antes de continuar.</Note>
  </Tab>

  <Tab title="Okta SSO (inicio de sesión único)">
    Windsurf Enterprise ahora admite el inicio de sesión con Single Sign-On (SSO) vía SAML. Si tu organización usa Microsoft Entra, Okta, Google Workspaces u otro proveedor de identidad que admita SAML, podrás usar SSO con Windsurf.

    <Note>Windsurf solo admite SSO iniciado por SP; actualmente NO se admite SSO iniciado por IdP.</Note>

    ### Configurar la aplicación del IdP

    Haz clic en Applications en la barra lateral izquierda y luego en Create App Integration

    <Frame>
      <img src="https://mintcdn.com/codeium/DnGnXhZxl1qb2EWt/assets/auth/sso-okta1.png?fit=max&auto=format&n=DnGnXhZxl1qb2EWt&q=85&s=e3f879d2fa7faeba003aa04e2c5d3a4a" width="1248" height="962" data-path="assets/auth/sso-okta1.png" />
    </Frame>

    Selecciona SAML 2.0 como método de inicio de sesión

    <Frame>
      <img src="https://mintcdn.com/codeium/DnGnXhZxl1qb2EWt/assets/auth/sso-okta2.png?fit=max&auto=format&n=DnGnXhZxl1qb2EWt&q=85&s=df39e8a15a879d8f2798a4284087c567" width="1600" height="1023" data-path="assets/auth/sso-okta2.png" />
    </Frame>

    Establece el nombre de la app como Windsurf (o cualquier otro nombre) y haz clic en Next

    Configura los ajustes de SAML como:

    * Single sign-on URL en [https://auth.windsurf.com/\&#95;\&#95;/auth/handler](https://auth.windsurf.com/\&#95;\&#95;/auth/handler)
    * Audience URI (SP Entity ID) en [www.codeium.com](http://www.codeium.com)
    * NameID format en EmailAddress
    * Application username en Email

    Configura las declaraciones de atributos como se indica a continuación y luego haz clic en **Next**.

    <Frame>
      <img src="https://mintcdn.com/codeium/DnGnXhZxl1qb2EWt/assets/auth/sso-okta3.png?fit=max&auto=format&n=DnGnXhZxl1qb2EWt&q=85&s=0903972c21dd13147a1adfe8791f1679" width="1398" height="602" data-path="assets/auth/sso-okta3.png" />
    </Frame>

    En la sección de comentarios, selecciona “This is an internal app that we have created” y haz clic en **Finish**.

    ### Registrar Okta como proveedor SAML

    Deberías ser redirigido a la pestaña Sign on de tu aplicación SAML personalizada. Ahora toma la información de esa página y complétala en la configuración de SSO de Windsurf.

    * Abre [https://windsurf.com/team/settings](https://windsurf.com/team/settings) y haz clic en Configure SAML
    * Copia el texto después de ‘Issuer’ en la página de la aplicación de Okta y pégalo en IdP Entity ID
    * Copia el texto después de ‘Sign on URL’ en la página de la aplicación de Okta y pégalo en SSO URL
    * Descarga el Signing Certificate y pégalo en X509 certificate
    * Marca Enable Login with SAML y luego haz clic en Save
    * Prueba el inicio de sesión con el botón Test Login. Deberías ver un mensaje de éxito:

    <Frame>
      <img src="https://mintcdn.com/codeium/DnGnXhZxl1qb2EWt/assets/auth/sso-okta4.png?fit=max&auto=format&n=DnGnXhZxl1qb2EWt&q=85&s=574e091c869162bc41dc0aa36cd209fa" width="1046" height="270" data-path="assets/auth/sso-okta4.png" />
    </Frame>

    En este punto, todo debería estar configurado y ya puedes agregar usuarios a la nueva aplicación de Okta para Windsurf.

    Comparte la URL personalizada del Login Portal de tu organización con tus usuarios y pídeles que inicien sesión mediante ese enlace.

    <Frame>
      <img src="https://mintcdn.com/codeium/DnGnXhZxl1qb2EWt/assets/auth/sso-okta5.png?fit=max&auto=format&n=DnGnXhZxl1qb2EWt&q=85&s=f3ccced59b0cbc7d0f0b1b6b39f1ee1c" width="988" height="312" data-path="assets/auth/sso-okta5.png" />
    </Frame>

    Los usuarios que inicien sesión en Windsurf mediante SSO serán aprobados automáticamente en el equipo.

    ### Advertencias

    Ten en cuenta que Windsurf actualmente no admite flujos de inicio de sesión iniciados por IdP.

    Tampoco admitimos OIDC por el momento.

    # Solución de problemas

    ### Login with SAML config failed: Firebase: Error (auth/operation-not-allowed)

    <Frame>
      <img src="https://mintcdn.com/codeium/DnGnXhZxl1qb2EWt/assets/auth/sso-okta6.png?fit=max&auto=format&n=DnGnXhZxl1qb2EWt&q=85&s=f65534799dfd8f941a68dc9fc72236d4" width="617" height="92" data-path="assets/auth/sso-okta6.png" />
    </Frame>

    Esto apunta a un ID de SSO no válido o a que tu SSO URL es incorrecta; asegúrate de que sea alfanumérica y no tenga espacios adicionales ni caracteres no válidos. Vuelve a repasar los pasos de la guía y verifica que uses los valores correctos.

    ### Login with SAML config failed: Firebase: SAML Response \<Issuer> mismatch. (auth/invalid-credential)

    <Frame>
      <img src="https://mintcdn.com/codeium/DnGnXhZxl1qb2EWt/assets/auth/sso-okta7.png?fit=max&auto=format&n=DnGnXhZxl1qb2EWt&q=85&s=446c8ad9510b7dcc8e744c7b80862c29" width="752" height="117" data-path="assets/auth/sso-okta7.png" />
    </Frame>

    Esto indica que tu IdP Entity ID es inválido; asegúrate de copiarlo correctamente desde el portal de Okta, sin caracteres adicionales ni espacios antes o después de la cadena.

    ### Failed to verify the signature in samlresponse

    Esto indica un valor incorrecto en tu X509 certificate; asegúrate de copiar la clave correcta y de que esté formateada como:

    \-----BEGIN CERTIFICATE-----
    valor
    \-----END CERTIFICATE-----

    ```
    -----BEGIN CERTIFICATE-----
    value
    ------END CERTIFICATE------
    ```
  </Tab>

  <Tab title="Azure SCIM (Sistema para la Gestión de Identidades entre Dominios)">
    Windsurf admite la sincronización SCIM para usuarios y grupos con Microsoft Entra ID / Azure AD. No es necesario configurar SSO (inicio de sesión único) para usar la sincronización SCIM, pero es muy recomendable.

    Necesitarás:

    * Acceso de administrador a Microsoft Entra ID / Azure AD
    * Acceso de administrador a Windsurf
    * Una aplicación de Windsurf existente en Entra ID (normalmente de tu aplicación de SSO existente)

    ## Paso 1: Ve a la aplicación de Windsurf existente

    Ve a Microsoft Entra ID en Azure, haz clic en Enterprise applications en la barra lateral izquierda y luego haz clic en la aplicación de Windsurf existente en la lista.

    <Frame>
      <img src="https://mintcdn.com/codeium/DnGnXhZxl1qb2EWt/assets/auth/scim-azure.png?fit=max&auto=format&n=DnGnXhZxl1qb2EWt&q=85&s=c2425d24cadc8997c694a4b8a950169a" width="1258" height="664" data-path="assets/auth/scim-azure.png" />
    </Frame>

    ## Paso 2: Configura el aprovisionamiento SCIM

    Haz clic en Get started en la sección Provision User Accounts en el centro (paso 3) y luego vuelve a hacer clic en Get started.

    <Frame>
      <img src="https://mintcdn.com/codeium/s3SYO8XdSvmrABvq/assets/auth/scim-azure2.png?fit=max&auto=format&n=s3SYO8XdSvmrABvq&q=85&s=1e9c8417da7568dc587941955f6d0ace" width="2582" height="1858" data-path="assets/auth/scim-azure2.png" />
    </Frame>

    En la página de configuración de Provisioning, selecciona las siguientes opciones.

    Provisioning Mode:  Automatic

    Admin Credentials > Tenant URL: [https://server.codeium.com/scim/v2](https://server.codeium.com/scim/v2)

    Deja abierta la página de aprovisionamiento de Azure, ahora ve al portal web de Windsurf y haz clic en el ícono de perfil en la barra de navegación en la parte superior de la página. En Team Settings, selecciona Clave de servicio y haz clic en Add Service Key. Ingresa cualquier nombre para la clave (por ejemplo, “Azure Provisioning Key”) y haz clic en Create Service Key. Copia la clave generada, vuelve a la página de Azure y pégala en Secret Token.

    <Frame>
      <img src="https://mintcdn.com/codeium/DnGnXhZxl1qb2EWt/assets/auth/scim-azure3.png?fit=max&auto=format&n=DnGnXhZxl1qb2EWt&q=85&s=80477c2c0d31631e38e217b22e9f42a3" width="1612" height="1013" data-path="assets/auth/scim-azure3.png" />
    </Frame>

    (Lo que deberías ver después de crear la clave en Windsurf)

    En la página Provisioning, haz clic en Test Connection; con esto deberías verificar la conexión SCIM.

    Ahora, arriba del formulario de Provisioning, haz clic en Save.

    ## Paso 3: Configura el aprovisionamiento SCIM

    Después de hacer clic en Save, debería aparecer una nueva opción Mappings en la página de Provisioning. Expande Mappings y haz clic en Provision Microsoft Entra ID Users

    <Frame>
      <img src="https://mintcdn.com/codeium/DnGnXhZxl1qb2EWt/assets/auth/scim-azure4.png?fit=max&auto=format&n=DnGnXhZxl1qb2EWt&q=85&s=276791b068bd34c2bcbe5321e95abfd6" width="666" height="438" data-path="assets/auth/scim-azure4.png" />
    </Frame>

    En attribute Mappings, elimina todos los campos bajo displayName, dejando solo los campos userName, active y displayName.

    <Frame>
      <img src="https://mintcdn.com/codeium/DnGnXhZxl1qb2EWt/assets/auth/scim-azure5.png?fit=max&auto=format&n=DnGnXhZxl1qb2EWt&q=85&s=ddb9440614a4bc04f7c561bbf64a2d5a" width="1260" height="190" data-path="assets/auth/scim-azure5.png" />
    </Frame>

    Para active, haz clic en Edit. En Expression, modifica el campo a

    ```
    NOT([IsSoftDeleted])
    ```

    Luego, haz clic en OK.

    Tus atributos de usuario deberían verse así:

    <Frame>
      <img src="https://mintcdn.com/codeium/DnGnXhZxl1qb2EWt/assets/auth/scim-azure6.png?fit=max&auto=format&n=DnGnXhZxl1qb2EWt&q=85&s=2beab12c979d3272d522293080634811" width="2826" height="490" data-path="assets/auth/scim-azure6.png" />
    </Frame>

    En la página Attribute Mapping, haz clic en Save en la parte superior y regresa a la página Provisioning.

    Ahora, en esa misma página, bajo Mappings, haz clic en Provision Microsoft Entra ID Groups. Luego, elimina únicamente externalId con la opción delete y vuelve a hacer clic en Save en la parte superior. Regresa a la página Provisioning.

    <Frame>
      <img src="https://mintcdn.com/codeium/DnGnXhZxl1qb2EWt/assets/auth/scim-azure7.png?fit=max&auto=format&n=DnGnXhZxl1qb2EWt&q=85&s=11e89ce7d057c455ea00e0f469351b61" width="1258" height="203" data-path="assets/auth/scim-azure7.png" />
    </Frame>

    En la página Provisioning, en la parte inferior, también debería haber un interruptor llamado Provisioning Status. Ponlo en On para habilitar la sincronización SCIM (Sistema para la Gestión de Identidades entre Dominios). A partir de ahora, cada 40 minutos los usuarios y grupos de la aplicación Entra ID se sincronizarán con Windsurf.

    <Frame>
      <img src="https://mintcdn.com/codeium/DnGnXhZxl1qb2EWt/assets/auth/scim-azure8.png?fit=max&auto=format&n=DnGnXhZxl1qb2EWt&q=85&s=1214073ce82bd85a1c2a57834005608f" width="686" height="306" data-path="assets/auth/scim-azure8.png" />
    </Frame>

    Haz clic en Save para finalizar; ya has habilitado la sincronización de usuarios y grupos mediante SCIM. Solo los usuarios y grupos asignados a la aplicación se sincronizarán con Windsurf. Ten en cuenta que eliminar usuarios solo les deshabilita el acceso a Windsurf (y evita que ocupen una plaza) en lugar de borrarlos, debido al diseño de SCIM en Azure.
  </Tab>

  <Tab title="Okta SCIM (Sistema para la Gestión de Identidades entre Dominios)">
    Windsurf admite la sincronización SCIM para usuarios y grupos con Okta. No es necesario configurar SSO (inicio de sesión único) para usar la sincronización SCIM, pero es muy recomendable.

    Necesitarás:

    * Acceso de administrador a Okta
    * Acceso de administrador a Windsurf
    * Una aplicación de Windsurf existente en Okta (normalmente a partir de tu aplicación de SSO existente)

    ## Paso 1: Navega a la aplicación de Windsurf existente

    Ve a Okta, haz clic en Applications, Applications en la barra lateral izquierda y luego haz clic en la aplicación de Windsurf existente en la lista de aplicaciones.

    ## Paso 2: Habilita el aprovisionamiento SCIM

    En la pestaña General, App Settings, haz clic en Edit en la esquina superior derecha. Luego marca la casilla "Enable SCIM Provisioning" y haz clic en Save. Debería haber aparecido una nueva pestaña de aprovisionamiento en la parte superior.

    Ahora ve a Provisioning, haz clic en Edit e introduce la siguiente información en los campos:

    SCIM connector base URL: [https://server.codeium.com/scim/v2](https://server.codeium.com/scim/v2)

    Unique identifier field for users: email

    Supported provisioning actions: Push New Users, Push Profile Updates, Push Groups

    Authentication Mode: HTTP Header

    Para HTTP Header - Authorization, puedes generar el token desde

    * [https://windsurf.com/team/settings](https://windsurf.com/team/settings) y ve a Other Settings y encuentra Service Key Configuration
    * Haz clic en Add Service Key y asígnale un nombre a tu clave
    * Copia la clave de API, vuelve a Okta y pégala en HTTP Header - Authorization

    Haz clic en Save después de completar Provisioning Integration.

    ## Paso 3: Configura el aprovisionamiento

    En la pestaña Provisioning, a la izquierda deberían aparecer dos nuevas secciones. Haz clic en To App y en Edit Provisioning to App. Marca las casillas para Create Users, Update User Attributes y Deactivate Users, y haz clic en Save.

    Después de este paso, todos los usuarios asignados al grupo se sincronizarán con Windsurf.

    ## Paso 4: Configura el aprovisionamiento de grupos (opcional)

    Para sincronizar grupos con Windsurf, tendrás que especificar qué grupos enviar. En la aplicación, haz clic en la pestaña Push Groups en la parte superior. Ahora haz clic en + Push Groups -> Find Groups by name. Filtra el grupo que deseas agregar, asegúrate de que Push group memberships immediately esté marcado y luego haz clic en Save. El grupo se creará y los miembros del grupo se sincronizarán con Windsurf. Luego se podrán usar los grupos para filtrar la analítica de grupos en la página de Analytics.
  </Tab>

  <Tab title="API de SCIM (Sistema para la Gestión de Identidades entre Dominios)">
    Esta guía muestra cómo crear y mantener grupos en Windsurf con la API de SCIM (Sistema para la Gestión de Identidades entre Dominios).

    Existen razones por las que se podría querer aprovisionar grupos manualmente en lugar de hacerlo con el Proveedor de Identidad (Azure/Okta). Las empresas pueden querer que los grupos se aprovisionen desde una fuente interna diferente (sitio web de RRHH, herramienta de gestión de código fuente, etc.) a la que Windsurf no tiene acceso, o las empresas pueden necesitar un control más granular sobre los grupos del que proporciona su Proveedor de Identidad. Por lo tanto, los grupos se pueden crear mediante una API a través de solicitudes HTTP. A continuación se proporcionan ejemplos de solicitudes HTTP usando CURL.

    Hay 5 APIs principales aquí: Crear Grupo, Agregar miembros al grupo, Reemplazar miembros del grupo, Eliminar Grupo y Listar Usuarios de un Grupo.

    ### Crear Grupo

    ```
    curl -k -X POST https://server.codeium.com/scim/v2/Groups -d '{
    "displayName": "<nombre del grupo>",
    "schemas": ["urn:ietf:params:scim:schemas:core:2.0:Group"]
    }' -H "Authorization: Bearer <clave secreta de API>" -H "Content-Type: application/scim+json"
    ```

    ### Agregar Miembros del Grupo

    ```
    curl -X PATCH https://server.codeium.com/scim/v2/Groups/<nombre del grupo> -d '{"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations":[
    {
    "op": "add",
    "path":"members",
    "value": [{"value": "<email 1>"}, {"value": "<email 2>"}]
    }]}' -H "Authorization: Bearer <clave secreta de API>" -H "Content-Type: application/scim+json"
    ```

    ### Reemplazar miembros del grupo

    ```
    curl -X PATCH https://server.codeium.com/scim/v2/Groups/<nombre del grupo> -d '{"schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
    "Operations":[
    {
    "op": "replace",
    "path":"members",
    "value": [{"value": "<email 1>"}, {"value": "<email 2>"}]
    }]}' -H "Authorization: Bearer <clave secreta de api>" -H "Content-Type: application/scim+json"
    ```

    ### Eliminar Grupo

    ```
    curl -X DELETE https://server.codeium.com/scim/v2/Groups/<nombre del grupo> -H "Authorization: Bearer <clave secreta de API>" -H "Content-Type: application/scim+json"
    ```

    ### Listar Grupo

    ```
    curl -X GET -H "Authorization: Bearer <clave secreta de API>" "https://server.codeium.com/scim/v2/Groups"
    ```

    ### Listar Usuarios en un Grupo

    ```
    curl -X GET -H "Authorization: Bearer <clave secreta de API>" "https://server.codeium.com/scim/v2/Groups/<group_id>"
    ```

    Primero deberás crear al menos el grupo, y luego reemplazarlo para crear un grupo con miembros. También necesitarás codificar en URL los nombres de grupo si el nombre contiene caracteres especiales como espacios, por lo que un nombre de grupo como 'Engineering Group' deberá ser 'Engineering%20Group' en la URL.

    Ten en cuenta que los usuarios deben crearse en Windsurf (a través de SCIM o creando la cuenta manualmente) antes de poder agregarlos a un grupo.

    ## APIs de Usuario

    También hay APIs para usuarios. Las siguientes son algunas de las APIs de SCIM (Sistema para la Gestión de Identidades entre Dominios) más comunes que admite Windsurf.

    Deshabilitar un usuario (Para habilitar, cambiar false por true):

    ```
    curl -X PATCH \
      https://server.codeium.com/scim/v2/Users/<clave de API del usuario> \
      -H 'Content-Type: application/scim+json' \
      -H 'Authorization: Bearer <clave secreta de API>' \
      -d '{
        "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
        "Operations": [
          {
            "op": "replace",
            "path": "active",
            "value": false
          }
        ]
      }'
    ```

    Crear un usuario:

    ```
    curl -X POST \
      https://server.codeium.com/scim/v2/Users \
      -H 'Content-Type: application/scim+json' \
      -H 'Authorization: Bearer <clave secreta de API>' \
      -d '{
        "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
        "userName": "<email>",
        "displayName": "<full name>",
        "active": true,
    }'
    ```

    Actualizar nombre:

    ```
    curl -X PATCH \
      'https://<enterprise portal url>/_route/api_server/scim/v2/Users/<user api key>' \
        -H 'Authorization: Bearer <clave de servicio>' \
        -H 'Content-Type: application/scim+json' \
        -d '{
          "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
          "Operations": [
            {
              "op": "Replace",
              "path": "displayName",
              "value": "<new name>"
            }
          ]
       }'
    ```

    ## Creación de clave secreta de API

    Ve a [https://windsurf.com/team/settings](https://windsurf.com/team/settings). En Configuración de clave de servicio, haz clic en Configurar, luego en Agregar clave de servicio. Ingresa cualquier nombre de clave (como 'Clave de aprovisionamiento de Azure') y haz clic en Crear clave de servicio. Copia la clave generada y guárdala; ahora puedes usar la clave para autorizar las API mencionadas anteriormente.
  </Tab>

  <Tab title="Duo">
    ## Requisitos previos

    Esta guía asume que tienes Duo configurado y actuando como tu IdP organizacional, o que tienes un IdP externo configurado.

    Necesitarás acceso de administrador tanto a las cuentas de Duo como de Windsurf.

    ## Configurar Duo para Windsurf

    1. Ve a Applications y agrega un proveedor de servicios Generic SAML.

    <Frame>
      <img src="https://mintcdn.com/codeium/DnGnXhZxl1qb2EWt/assets/auth/duo-sso-1.png?fit=max&auto=format&n=DnGnXhZxl1qb2EWt&q=85&s=7e598d7e9a9ee2c3884caa1c60ba68ff" width="2230" height="920" data-path="assets/auth/duo-sso-1.png" />
    </Frame>

    2. Ve a SSO en Team Settings.

    <Frame>
      <img src="https://mintcdn.com/codeium/DnGnXhZxl1qb2EWt/assets/auth/windsurf-sso-team-settings.png?fit=max&auto=format&n=DnGnXhZxl1qb2EWt&q=85&s=df8dde8b5b66a27532a3f42cdd803a17" width="1676" height="1444" data-path="assets/auth/windsurf-sso-team-settings.png" />
    </Frame>

    3. Al habilitar SAML por primera vez, se te pedirá que configures tu SSO ID. **No podrás cambiarlo más adelante.**

       Se recomienda usar el nombre de tu organización o equipo, solo con caracteres alfanuméricos.

    4. Copia el valor de `Entity ID` del portal de Duo y pégalo en el campo `IdP Entity ID` en el portal de Windsurf.

    5. Copia el valor de `Single Sign-On URL` del portal de Duo y pégalo en el campo `SSO URL` en el portal de Windsurf.

    6. Copia el valor del certificado del portal de Duo y pégalo en el campo `X509 Certificate` en el portal de Windsurf.

    <Frame>
      <img src="https://mintcdn.com/codeium/DnGnXhZxl1qb2EWt/assets/auth/duo-sso-3.png?fit=max&auto=format&n=DnGnXhZxl1qb2EWt&q=85&s=a7594c846a32e958a1bacfc01c5d3ef3" width="1536" height="290" data-path="assets/auth/duo-sso-3.png" />
    </Frame>

    7. Copia el valor de `SP Identity ID` del portal de Windsurf y pégalo en el campo `Entity ID` en el portal de Duo.

    8. Copia el `Callback URL (Assertion Consumer Service URL)` del portal de Windsurf y pégalo en el campo `Assertion Consumer Service (ACS) URL` en el portal de Duo.

    9. En el portal de Duo, configura las declaraciones de atributos de la siguiente manera:

    <Frame>
      <img src="https://mintcdn.com/codeium/DnGnXhZxl1qb2EWt/assets/auth/duo-sso-4.png?fit=max&auto=format&n=DnGnXhZxl1qb2EWt&q=85&s=bb3b514b94a6b0ebba19aa492c8be4a2" width="1676" height="290" data-path="assets/auth/duo-sso-4.png" />
    </Frame>

    10. Habilita el inicio de sesión SAML en el portal de Windsurf para poder probarlo.

    **NOTA: NO CIERRES LA SESIÓN NI LA VENTANA EN ESTE PUNTO.**

    Si recibes un error o hay un tiempo de espera, revisa y corrige tu configuración; de lo contrario, tendrás que deshabilitar la configuración de SAML en el portal de Windsurf.

    **Si cierras sesión o la ventana sin confirmar una prueba exitosa, podrías quedar bloqueado.**

    11. Una vez que la prueba se haya completado correctamente, puedes cerrar sesión. Ahora puedes usar el inicio de sesión con SSO al ir a la página de tu equipo/organización con el SSO ID que configuraste en el paso 3.

    [https://www.codeium.com/yourssoid/login](https://www.codeium.com/yourssoid/login)
  </Tab>

  <Tab title="PingID">
    ## Requisitos previos

    Esta guía asume que tienes PingID configurado y funcionando como tu IdP organizacional, o que tienes un IdP externo configurado.

    Necesitarás acceso de administrador a las cuentas de PingID y Windsurf.

    ## Configurar PingID para Windsurf

    1. Ve a Applications y agrega Windsurf como una SAML Application.

    <Frame>
      <img src="https://mintcdn.com/codeium/DnGnXhZxl1qb2EWt/assets/auth/pingid-1.png?fit=max&auto=format&n=DnGnXhZxl1qb2EWt&q=85&s=f86f6145e0eac599178ca9d9ee66b776" width="2258" height="1068" data-path="assets/auth/pingid-1.png" />
    </Frame>

    2. Ve a SSO en Team Settings.

    <Frame>
      <img src="https://mintcdn.com/codeium/DnGnXhZxl1qb2EWt/assets/auth/windsurf-sso-team-settings.png?fit=max&auto=format&n=DnGnXhZxl1qb2EWt&q=85&s=df8dde8b5b66a27532a3f42cdd803a17" width="1676" height="1444" data-path="assets/auth/windsurf-sso-team-settings.png" />
    </Frame>

    3. Al habilitar SAML por primera vez, se te pedirá configurar tu SSO ID. **No podrás cambiarlo más adelante.**

    Se recomienda establecerlo como el nombre de tu organización o equipo usando solo caracteres alfanuméricos.

    4. En PingID: elige ingresar la configuración manualmente y completa los campos con los siguientes valores:

    * ACS URLs: es el `Callback URL (Assertion Consumer Service URL)` del portal de Windsurf.
    * Entity ID: es el `SP Entity ID` del portal de Windsurf.

    <Frame>
      <img src="https://mintcdn.com/codeium/DnGnXhZxl1qb2EWt/assets/auth/pingid-3.png?fit=max&auto=format&n=DnGnXhZxl1qb2EWt&q=85&s=e33dc0b9d021309da0fcdb2ac4f08bbb" width="974" height="672" data-path="assets/auth/pingid-3.png" />
    </Frame>

    5. Copia el `Issuer ID` de PingID en el valor `IdP Entity ID` del portal de Windsurf.

    6. Copia el valor `Single Signon Service` de PingID en el valor `SSO URL` del portal de Windsurf.

    7. Descarga el Signing Certificate de PingID como X509 PEM (.crt), abre el archivo y copia su contenido en el valor `X509 Certificate` del portal de Windsurf.

    **Nota**: asegúrate de incluir completas las líneas de inicio y fin con 5 guiones (-) y que no se copien otros caracteres.

    8. En los mapeos de atributos, asegúrate de mapear:

    * `saml_subject` - Email Address
    * `firstName` - Given Name
    * `lastName` - Family Name

    <Frame>
      <img src="https://mintcdn.com/codeium/DnGnXhZxl1qb2EWt/assets/auth/pingid-4.png?fit=max&auto=format&n=DnGnXhZxl1qb2EWt&q=85&s=4ff17f07bfb897072fb68e212ee2ac12" width="1398" height="780" data-path="assets/auth/pingid-4.png" />
    </Frame>

    9. Agrega o edita cualquier otra política y acceso según lo requiera tu configuración/organización.

    10. Habilita el inicio de sesión SAML en el portal de Windsurf para poder probarlo.

    **NOTA: NO CIERRES SESIÓN NI LA VENTANA EN ESTE PUNTO.**

    Si obtienes un error o se agota el tiempo de espera, revisa y corrige tu configuración; de lo contrario, tendrás que deshabilitar tus SAML Settings en el portal de Windsurf.

    **Si cierras sesión o la ventana sin confirmar una prueba exitosa, podrías quedar bloqueado.**

    11. Una vez que tu prueba se haya completado correctamente, puedes cerrar sesión. Ahora puedes usar el inicio de sesión con SSO al navegar a la página de tu equipo/organización con el SSO ID que configuraste en el paso 3.

    [https://www.codeium.com/yourssoid/login](https://www.codeium.com/yourssoid/login)
  </Tab>
</Tabs>
