> ## 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 basados en SAML.

<Note>Esta funcionalidad solo está disponible para usuarios de Teams y Enterprise.</Note>

<Note>Esta funcionalidad no se aplica a los planes Cognition Platform. En Cognition Platform, el SSO debe configurarse y gestionarse desde la configuración de Cognition Platform.</Note>

<Tabs>
  <Tab title="SSO de Google">
    Windsurf ahora admite el inicio de 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; actualmente NO se admite el SSO iniciado por el IdP.</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 panel izquierdo.

    <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>

    Rellena **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 a la configuración de SSO de Windsurf en [https://windsurf.com/team/settings](https://windsurf.com/team/settings).

    * Copia la **SSO URL** desde la consola de Google a la configuración de Windsurf en **SSO URL**
    * Copia el **Entity ID** desde la consola de Google a la configuración de Windsurf en **IdP Entity ID**
    * Copia el **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 siguiente pantalla en la consola de Google requiere que copies datos desde la página de configuración de Codeium:

    * Copia la **Callback URL** desde la página de configuración de Codeium a la consola de Google en **ACS URL**
    * Copia el **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 siguiente pantalla en la consola de Google requiere cierta configuración:

    * Haz clic en **Add Mapping**, selecciona **First name** y establece los **App attributes** en **firstName**
    * Haz clic en **Add Mapping**, selecciona **Last name** y establece los **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 comprobar que el inicio de sesión funciona según lo esperado. A partir de ahora, todos los usuarios tendrán el inicio de sesión por SSO obligatorio.
  </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 SP; actualmente NO se admite SSO iniciado por IdP.</Note>

    ## Parte 1: Crear una 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 los 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 de 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 esta pestaña de Entra ID abierta** y abre una pestaña nueva para ir a los **ajustes 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** de la **página de ajustes de SSO de Windsurf**
       * **Reply URL (Assertion Consumer Service URL)**: Copia el valor de **Callback URL** de la **página de ajustes 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 ajustes 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**
          <Note>La URL de IdP Entity ID debe terminar con una barra diagonal final `/` (por ejemplo, `https://sts.windows.net/{tenant-id}/`). Si la URL no incluye la barra diagonal final, añádela manualmente.</Note>
        * **SSO URL**: Copia el valor de **Login URL** de **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 funcione como se espera.

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

  <Tab title="SSO de Okta">
    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, 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

    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 aplicación 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 muestra 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 tendrás que tomar la información de esta página y completarla 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 haber quedado configurado y ahora puedes agregar usuarios a la nueva aplicación de Windsurf en Okta.

    Debes compartir la URL del portal de inicio de sesión personalizado de tu organización con tus usuarios y pedirles 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 el IdP.

    Tampoco admitimos OIDC todavía.

    # 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 indica que tu ID de SSO no es válido o que tu SSO URL es incorrecta. Asegúrate de que sea alfanumérica y que no tenga espacios adicionales ni caracteres no válidos. Vuelve a revisar los pasos de la guía y asegúrate de usar 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 que el valor de tu X509 certificate es incorrecto. Asegúrate de copiar la clave correcta y de que tenga el formato:

    ```
    -----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 (Sistema para la Gestión de Identidades entre Dominios) 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 se recomienda encarecidamente.

    Necesitarás:

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

    <Note>
      **Permisos requeridos para la Clave de servicio**

      La clave de servicio utilizada para el aprovisionamiento de SCIM (Sistema para la Gestión de Identidades entre Dominios) debe tener los siguientes permisos:

      * **Team User Read** - Necesario para leer información de usuarios y grupos
      * **Team User Update** - Necesario para crear y actualizar usuarios y grupos
      * **Team User Delete** - Necesario para desactivar/eliminar usuarios y grupos

      Puedes crear un rol personalizado con estos permisos o utilizar un rol de administrador existente que los incluya.
    </Note>

    ## Paso 1: Crear un Rol con Permisos SCIM (Sistema para la Gestión de Identidades entre Dominios)

    Antes de configurar el aprovisionamiento SCIM (Sistema para la Gestión de Identidades entre Dominios), debes crear un rol con los permisos necesarios.

    1. Ve a [Windsurf Team Settings](https://windsurf.com/team/settings)
    2. En «Other Settings», haz clic en **Configure** junto a **Role Management**
    3. Haz clic en **Add Role** y asígnale el nombre «SCIM Provisioning»
    4. Añade los siguientes permisos:
       * Team User Read
       * Team User Update
       * Team User Delete
    5. Haz clic en **Save**

    ## Paso 2: Navega a la aplicación Windsurf existente

    Ve a Microsoft Entra ID en Azure, haz clic en Aplicaciones empresariales en la barra lateral izquierda y luego haz clic en la aplicación 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 3: Configurar el aprovisionamiento SCIM

    Haz clic en Get started bajo Provision User Accounts en el medio (paso 3), y luego haz clic en Get started de nuevo.

    <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 Aprovisionamiento, selecciona las siguientes opciones.

    Modo de Aprovisionamiento: Automático

    Credenciales de Administrador > URL del Tenant: [https://server.codeium.com/scim/v2](https://server.codeium.com/scim/v2)

    <Frame>
      <img src="https://mintcdn.com/codeium/s3SYO8XdSvmrABvq/assets/auth/scim-azure-admin-credentials.png?fit=max&auto=format&n=s3SYO8XdSvmrABvq&q=85&s=ee0b34f8f0f131441eb9ca9e89ccbcda" width="560" height="416" data-path="assets/auth/scim-azure-admin-credentials.png" />
    </Frame>

    Mantén 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 Configuración del equipo, selecciona Clave de servicio y haz clic en Agregar clave de servicio. Introduce cualquier nombre de clave (como 'Aprovisionamiento SCIM (Sistema para la Gestión de Identidades entre Dominios) de Azure'), **selecciona el rol "Aprovisionamiento SCIM" que creaste anteriormente**, y haz clic en Crear clave de servicio. Copia la clave generada, vuelve a la página de Azure y pégala en Token secreto.

    <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 de Aprovisionamiento, haz clic en Test Connection y esto debería verificar la conexión SCIM (Sistema para la Gestión de Identidades entre Dominios).

    Ahora, arriba del formulario de Aprovisionamiento, haz clic en Guardar.

    ## Paso 4: Configurar el Aprovisionamiento SCIM

    Después de hacer clic en Guardar, debería haber aparecido una nueva opción Asignaciones en la página de Aprovisionamiento. Expande Asignaciones y haz clic en Aprovisionar usuarios de Microsoft Entra ID

    <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 Mapeos de atributos, 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, ahora haz clic en Edit. En Expression, modifica el campo a

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

    Luego haz clic en Aceptar.

    Los atributos de usuario deben 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 de Mapeo de Atributos, haz clic en Guardar en la parte superior y regresa a la página de Aprovisionamiento.

    Ahora haz clic en la misma página, en Asignaciones haz clic en Aprovisionar grupos de Microsoft Entra ID. Ahora solo haz clic en eliminar para externalId, y haz clic en Guardar en la parte superior. Regresa a la página de Aprovisionamiento.

    <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 de Aprovisionamiento, en la parte inferior, también debería haber un interruptor de Estado de Aprovisionamiento. Actívalo para habilitar la sincronización SCIM (Sistema para la Gestión de Identidades entre Dominios). A partir de ese momento, cada 40 minutos se sincronizarán tus usuarios y grupos de la aplicación Entra ID 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 Guardar para finalizar, ahora has habilitado la sincronización de usuarios y grupos para SCIM (Sistema para la Gestión de Identidades entre Dominios). Solo los usuarios y grupos asignados a la aplicación se sincronizarán con Windsurf. Ten en cuenta que eliminar usuarios solo desactiva su acceso a Windsurf (y evita que ocupen una licencia) en lugar de eliminar usuarios debido al diseño SCIM de 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 parte 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 lo siguiente en los campos correspondientes:

    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 Service Key Configuration
    * Haz clic en Configure, luego en Add Service Key y asigna un nombre a tu clave de API
    * 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 de aprovisionamiento, a la izquierda deberían aparecer dos nuevas secciones. Haz clic en To App y en Edit Provisioning to App. Marca las casillas 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 por 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 las métricas 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 que el 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 mediante CURL.

    Aquí hay 5 APIs principales: Crear Grupo, Agregar miembros del grupo, Reemplazar miembros del grupo, Eliminar Grupo y Listar Usuarios en 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 (Sistema para la Gestión de Identidades entre Dominios) 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>"
            }
          ]
       }'
    ```

    ## Crear una 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 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 que actúa 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 SAML genérico.

    <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 ID de SSO. **No podrás cambiarlo más adelante.**

       Se recomienda establecerlo con el nombre de tu organización o equipo usando solo 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 la `Callback URL (Assertion Consumer Service URL)` del portal de Windsurf y pégala en el campo `Assertion Consumer Service (ACS) URL` en el portal de Duo.

    9. En el portal de Duo, configura las declaraciones de atributos como se indica a continuación:

    <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 MOMENTO.**

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

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

    11. Una vez que la prueba se complete 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 ID de SSO que configuraste en el paso 3.

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

  <Tab title="PingID">
    ## Prerrequisitos

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

    Necesitarás acceso de administrador tanto a las cuentas de PingID como de 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 después.**

    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: este es el `Callback URL (Assertion Consumer Service URL)` del portal de Windsurf.
    * Entity ID: este 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 desde 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 attribute mappings, 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/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 CIERRES LA VENTANA EN ESTE PUNTO.**

    Si aparece un error o se agota el tiempo de espera, 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 cierras la ventana sin confirmar una prueba exitosa, podrías quedarte sin acceso.**

    11. Una vez que la prueba se complete 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>
