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

# Aplicaciones SAML

> Referencia de la configuración de aplicaciones SAML en Iru Identity: datos del proveedor, gestión de solicitudes y respuestas, firma, asignación de atributos y duración de la sesión.

Una **aplicación SAML** permite a los usuarios iniciar sesión en un servicio que admite el inicio de sesión único
SAML, con Iru actuando como **proveedor de identidad (IdP)**. Iru proporciona al
servicio los datos del proveedor que necesita, firma la respuesta y la aserción que
envía, y asigna los atributos del perfil de tus usuarios a esa aserción.

Editas la configuración de una aplicación SAML en un **borrador** y luego la estableces como versión
actual. Consulta [Descripción general de las aplicaciones](/es/identity/applications/applications-overview)
para conocer el modelo de versiones. A continuación encontrarás una referencia campo por campo de cada ajuste,
agrupada exactamente como la presenta el editor.

<Note>
  La mayoría de los servicios solo necesitan algunos de estos ajustes, normalmente la ACS URL,
  el Service Provider Entity ID y la asignación. Los valores predeterminados están pensados para funcionar
  con los proveedores de servicios habituales; cambia el resto solo cuando la documentación de tu servicio
  lo indique.
</Note>

## Protocol details: lo que Iru proporciona al proveedor de servicios

Abre los **Protocol details** de la aplicación para copiar los valores que tu proveedor de
servicios necesita para confiar en Iru. Los genera Iru.

| Dato | Qué es |
| - | - |
| **Metadata URL** | Un único documento que describe la configuración SAML de Iru para esta aplicación. Muchos servicios configuran todo a partir de esta URL; también puedes ver o descargar el archivo de metadatos. |
| **IdP Entity ID** | El identificador de Iru como proveedor de identidad para esta aplicación. |
| **Single Sign On Service** | La URL a la que el proveedor de servicios envía las solicitudes de autenticación (y donde comienza el inicio de sesión iniciado por el IdP). |
| **IdP Signing Certificate** | El certificado que usa el servicio para verificar que una respuesta procede realmente de Iru. Se muestran su sujeto, su caducidad y su huella digital, y puedes copiarlo o descargarlo. |

<Tip>
  Si el servicio puede importar metadatos, indícale la **Metadata URL** (o sube
  el archivo descargado). Incluye el entity ID, la URL de inicio de sesión y el certificado
  de firma juntos, por lo que hay menos datos que ingresar manualmente.
</Tip>

## Provider details: lo que indicas a Iru sobre el servicio

| Ajuste | Qué hace |
| - | - |
| **ACS URL** | La URL del Assertion Consumer Service, el destino al que Iru envía la respuesta SAML. Es obligatoria y debe ser una URL `https` válida. |
| **Service Provider Entity ID** | El identificador propio del proveedor de servicios. Iru lo usa como audiencia predeterminada y (opcionalmente) para validar el emisor de la solicitud. |
| **Unsolicited authentication** | Si el servicio admite el inicio de sesión **iniciado por el IdP** (el usuario empieza desde Iru). Establece **Supported** si el servicio acepta una respuesta que no ha solicitado; de lo contrario, establece **Unsupported**. |
| **Alternative authentication URL** | Se muestra cuando la autenticación no solicitada es **Unsupported**: la URL a la que Iru envía a los usuarios para que el servicio pueda iniciar el inicio de sesión por sí mismo (iniciado por el proveedor de servicios). |

<AccordionGroup>
  <Accordion title="Request: cómo gestiona Iru las solicitudes de autenticación" icon="inbox">
    Estos ajustes rigen la **AuthnRequest** que envía un proveedor de servicios para iniciar
    el inicio de sesión.

    ### Validate issuer

    Con qué rigor comprueba Iru el **Issuer** de una solicitud entrante.

    | Opción | Qué hace |
    | - | - |
    | **Must match Service Provider Entity ID** | El emisor de la solicitud debe ser igual al Service Provider Entity ID que ingresaste arriba. |
    | **Must match custom value** | El emisor debe ser igual a un **Custom value** que especifiques (úsalo cuando el emisor del servicio difiera de su entity ID). |
    | **Ignore** | No se valida el emisor. |

    ### Authentication request restriction

    Controla **si la solicitud debe estar firmada** y **a qué ACS URL** responde
    Iru. "Follow" usa la ACS URL de la solicitud; "pinned" siempre usa la ACS URL
    configurada en **Provider details**.

    | Opción | ¿La solicitud debe estar firmada? | La respuesta se envía a |
    | - | - | - |
    | **Any request and follow** | No | La ACS URL de la solicitud |
    | **Any request and pinned** | No | La ACS URL configurada |
    | **Signed request and follow** | Sí | La ACS URL de la solicitud |
    | **Signed request and pinned** | Sí | La ACS URL configurada |

    <Warning>
      **Pinned** es la opción más segura: ignora cualquier ACS URL proporcionada en la solicitud,
      por lo que una solicitud manipulada no puede redirigir una respuesta a otro lugar. Prefiere **Signed
      request and pinned** cuando el servicio admita firmar sus solicitudes.
    </Warning>

    Cuando eliges una opción **Signed request**, también estableces cómo verifica Iru esa
    firma:

    | Ajuste | Qué hace |
    | - | - |
    | **Allowed signing algorithms** | Los algoritmos de firma de solicitudes que aceptará Iru: cualquiera de `RSA-SHA1`, `RSA-SHA256`, `RSA-SHA384` y `RSA-SHA512`. Selecciona los que use tu servicio; evita `RSA-SHA1` a menos que sea necesario. |
    | **Allowed digest algorithms** | Los algoritmos de resumen de solicitudes que aceptará Iru: cualquiera de `SHA1`, `SHA256`, `SHA384` y `SHA512`. |
    | **Signing Certificate** | El certificado que usa Iru para verificar las solicitudes firmadas del servicio. Sube el certificado de firma de solicitudes del proveedor de servicios. |
  </Accordion>

  <Accordion title="Response: cómo crea y envía Iru la aserción" icon="paper-plane">
    ### Entrega e identificadores

    | Ajuste | Qué hace |
    | - | - |
    | **HTTP Method** | Cómo se entrega la respuesta SAML: **HTTP-POST** (un formulario que se envía automáticamente, la opción habitual) o **HTTP-REDIRECT**. |
    | **IdP Entity ID** | El emisor que Iru declara en la respuesta. Déjalo en **Use default** (se muestra en Protocol details) o elige **Specify custom** para declarar un **Custom IdP Entity ID** diferente. |
    | **Audience** | A quién va destinada la aserción. **Use default** envía el Service Provider Entity ID; elige **Specify custom** para enviar una **Custom Audience** diferente. |
    | **Recipient** | El destinatario declarado en la aserción. **Use default** usa la ACS URL (el destino); elige **Specify custom** para enviar un **Custom Recipient** diferente. |
    | **Fallback relay value** | El RelayState que usa Iru cuando el servicio no proporcionó uno, normalmente el lugar de la aplicación al que debe llegar el usuario. |
    | **Error action** | Qué ocurre cuando un inicio de sesión no puede completarse: **Iru** muestra una página de error de Iru, o **Protocol** devuelve el error al proveedor de servicios para que lo gestione. |

    ### Firma

    | Ajuste | Qué hace |
    | - | - |
    | **Signing method** | Qué partes del mensaje firma Iru: **Response**, **Assertion** o **Both - Response and Assertion**. Ajústalo a lo que requiera el servicio. |
    | **Signing algorithm** | El algoritmo de firma que usa Iru: `RSA-SHA1`, `RSA-SHA256`, `RSA-SHA384` o `RSA-SHA512`. `RSA-SHA256` es adecuado para la mayoría de los servicios. |
    | **Digest algorithm** | El algoritmo de resumen que se usa en la firma: `SHA1`, `SHA256`, `SHA384` o `SHA512`. |

    Iru firma con su propio **IdP Signing Certificate** (el que se muestra en Protocol
    details), por lo que aquí no hay que subir ningún certificado de firma.

    ### Cifrar aserciones

    | Ajuste | Qué hace |
    | - | - |
    | **Encrypt assertions** | **Unencrypted** (predeterminado) o **Encrypted**. Actívalo solo si el servicio requiere aserciones cifradas. |
    | **Use the Request signing certificate** | Al cifrar, reutiliza el certificado de firma de solicitudes del servicio como certificado de cifrado en lugar de subir uno aparte. (Requiere que haya un certificado de firma configurado en la sección **Request**.) |
    | **Encryption Certificate** | El certificado del proveedor de servicios con el que Iru cifra la aserción, cuando no reutilizas el certificado de firma de solicitudes. |
    | **Encryption algorithm** | El algoritmo de cifrado del contenido: `AES-128-GCM`, `AES-192-GCM`, `AES-256-GCM`, `AES-128-CBC`, `AES-192-CBC` o `AES-256-CBC`. Usa el que espere el servicio (una opción GCM es un buen valor predeterminado). |
    | **Key transport algorithm** | Cómo se protege la clave de cifrado: `RSA-OAEP` o `RSA-PKCS1-v1.5`. |

    ### Avanzado

    | Ajuste | Qué hace |
    | - | - |
    | **Use namespace prefixes** | Agrega prefijos de espacio de nombres XML explícitos (`saml2p`, `saml2`, `ds`, `xenc`) a la respuesta. Habilítalo si el analizador SAML del servicio requiere elementos con prefijo. |
  </Accordion>

  <Accordion title="Mapping: el NameID y los atributos que envía Iru" icon="table-list">
    Abre la **asignación** de la aplicación para controlar la identidad de la aserción.
    Tiene dos partes: el **Asunto** (el NameID) y los **atributos** adicionales.

    ### Subject (NameID)

    El Subject es el identificador principal del usuario que ha iniciado sesión. De forma predeterminada,
    se obtiene del `user.username` del usuario; puedes cambiar el valor del que se obtiene y
    elegir un **formato de NameID**:

    | Formato de NameID | Úsalo cuando el servicio espere… |
    | - | - |
    | **Correo electrónico** | Una dirección de correo electrónico como identificador. |
    | **Persistent** | Un identificador estable y opaco que se mantiene igual en todas las sesiones. |
    | **Transient** | Un identificador temporal que puede cambiar en cada sesión. |
    | **Unspecified** | Ningún formato en particular. |

    ### Atributos

    Agrega cada atributo que necesite el servicio en la aserción. Para cada atributo estableces:

    * Un **Name:** el nombre del atributo que espera el proveedor de servicios.
    * Un **valor:** el atributo del perfil o la expresión de la que se obtiene (por ejemplo,
      `user.email` o una combinación de campos).
    * Un **formato de nombre de atributo:** **Unspecified**, **URI** o **Basic**.
    * Si está **habilitado**.

    Una **vista previa** en vivo muestra la aserción que se generará, para que puedas confirmar
    su forma antes de publicar.

    <Warning>
      `Subject` está reservado como NameID y no se puede reutilizar como nombre de atributo
      personalizado.
    </Warning>
  </Accordion>

  <Accordion title="Administración de sesiones" icon="clock">
    La duración de sesión predeterminada es de **60 minutos** en la aserción de la aplicación SAML o en el token
    OIDC. La duración de sesión del rol correspondiente anula ese valor. En el
    rol, establece la duración de la sesión en **0** para usar en su lugar el valor predeterminado de la aplicación.
    Consulta [Roles y bundles de roles](/es/identity/applications/roles-and-bundles).

    | Ajuste | Qué hace |
    | - | - |
    | **Session Length Supported** | **Supported** completa el valor `notOnOrAfter` de la aserción (caducidad de la sesión) a partir de la duración indicada abajo; **Unsupported** lo omite. |
    | **Default session length (minutes)** | El valor predeterminado de la aplicación que se escribe en la aserción. El valor predeterminado es **60**. En la aplicación, los valores válidos van de **10** a **2880** minutos. |
  </Accordion>
</AccordionGroup>

## Resumen de los certificados

Una aplicación SAML implica hasta tres certificados:

<AccordionGroup>
  <Accordion title="Certificado de firma del IdP (el propio de Iru)" icon="stamp">
    Iru firma la respuesta o la aserción (o ambas) con su propio certificado, que se muestra en
    **Protocol details**. El servicio lo usa para confirmar que el mensaje procede de Iru
    y no se ha alterado. No hay nada que subir.
  </Accordion>

  <Accordion title="Certificado de firma de solicitudes (el del servicio)" icon="signature">
    Sube el certificado del proveedor de servicios para que Iru pueda verificar las **solicitudes
    de autenticación firmadas** que envía. Se configura en la sección **Request** y
    solo es necesario cuando exiges solicitudes firmadas.
  </Accordion>

  <Accordion title="Certificado de cifrado (el del servicio)" icon="lock">
    El certificado del proveedor de servicios con el que Iru **cifra la aserción**; solo se usa
    cuando **Encrypt assertions** está activado. Puedes reutilizar el certificado de firma
    de solicitudes en lugar de subir uno aparte.
  </Accordion>
</AccordionGroup>

## Publicar, asignar y activar

<Steps>
  <Step title="Establecer el borrador como actual">
    Publica tu borrador para que se convierta en la configuración en vivo.
  </Step>

  <Step title="Asignar acceso">
    Asigna los grupos que deben tener la aplicación. Consulta
    [Asignar acceso](/es/identity/applications/assigning-access).
  </Step>

  <Step title="Activar">
    Activa la aplicación para que los usuarios asignados puedan iniciar sesión.
  </Step>

  <Step title="Probar el inicio de sesión">
    Inicia sesión como usuario de prueba desde el panel de aplicaciones para confirmar la experiencia
    y usa la **vista previa** de la asignación para comprobar la aserción.
  </Step>
</Steps>

## Próximos pasos

<CardGroup cols={2}>
  <Card title="Asignar acceso" icon="user-check" href="/es/identity/applications/assigning-access">
    Concede la aplicación a usuarios y grupos, y define los roles de la aplicación.
  </Card>

  <Card title="Aprovisionamiento" icon="arrows-rotate" href="/es/identity/applications/provisioning">
    Crea y quita cuentas en la aplicación automáticamente a medida que cambia el acceso.
  </Card>

  <Card title="Aplicaciones OIDC" icon="id-card" href="/es/identity/applications/oidc-applications">
    Configura una aplicación que use OpenID Connect en lugar de SAML.
  </Card>

  <Card title="Descripción general de las aplicaciones" icon="grip" href="/es/identity/applications/applications-overview">
    Revisa los protocolos y el modelo de versiones de borrador a actual.
  </Card>
</CardGroup>
