# ADFS

> Añadir Ironchip MFA a Active Directory Federation Services: instalar el plugin de ADFS con una API key y proteger las aplicaciones de confianza.

URL: https://docs.ironchip.com/identidad/integraciones/saas/adfs/

Ironchip se integra con ADFS (Active Directory Federation Services) mediante un plugin de autenticación multifactor. Esta guía recorre desde la preparación del servidor hasta la prueba de acceso con Claims X-Ray.

## Requisitos

- Un servidor Windows con los roles de dominio y federación de Active Directory.
- Acceso a la consola de administración de Ironchip.
- Un usuario con permisos para configurar el servidor.

## Configuración en Ironchip

Crea una aplicación de tipo API Key. Su clave la necesitarás al instalar el plugin.

1. En la consola de Ironchip, ve a **Applications** y crea una aplicación nueva.

   [Imagen: Botón para crear una aplicación nueva en la consola de Ironchip]

2. En **Application integration type**, elige **API KEY** y escribe el nombre que quieras.

   [Imagen: Formulario de nueva aplicación con el tipo API Key seleccionado]

3. Copia la API key que se muestra y guárdala para el paso de instalación del plugin.

:::caution[Guarda la API key]
No podrás recuperar la API key cuando cierres la pestaña. Cópiala y guárdala antes de cerrarla.
:::

## Configuración en ADFS

### Activar Active Directory

1. En el **Administrador del servidor**, abre **Agregar roles y características**.
2. Añade los roles **Servicios de dominio de Active Directory** y **Servicios de federación de Active Directory**.
3. Haz clic en **Siguiente** hasta el final del asistente y espera a que termine la instalación. Al volver al Administrador del servidor, los dos roles aparecen en el menú de la izquierda y hay una alerta en el menú superior.
4. Haz clic en la alerta **Promocionar este servidor a un controlador de dominio**.
5. Selecciona **Agregar un nuevo bosque** y escribe el nombre de dominio que quieras.
6. Sigue los pasos hasta el final y haz clic en **Instalar**. Al terminar recibirás una alerta de DNS que resolverás en el apartado siguiente.

   [Imagen: Asistente de configuración de Active Directory para promocionar el servidor a controlador de dominio]

### Configurar el DNS

1. Desde las herramientas administrativas, abre el programa de configuración de DNS.
2. Haz clic derecho en el nombre de tu servidor y abre **Propiedades**.

   [Imagen: Menú contextual del servidor en el administrador de DNS con la opción Propiedades]

3. Ve a la pestaña **Reenviadores** y añade los servidores DNS externos que necesites, como `4.2.2.1`, `4.2.2.2`, `8.8.8.8` y `8.8.4.4`.

   [Imagen: Pestaña Reenviadores con los servidores DNS externos añadidos]

Después de esto, la máquina se reinicia automáticamente.

### Crear el certificado SSL

1. Crea un certificado autofirmado con este comando de PowerShell:

   ```powershell
   New-SelfSignedCertificate -DnsName server.ironchip.local
   ```

2. Se abre el programa **certlm.msc**. El certificado creado está en la carpeta **Personal**.
3. Haz clic derecho en el certificado y selecciona **Abrir**. En la pestaña **Detalles**, haz clic en **Copiar a archivo**.
4. En el asistente de exportación, selecciona **Sí, exportar la clave privada**. Deja el resto de opciones por defecto y guarda el fichero, por ejemplo en el escritorio.
5. Ejecuta el fichero exportado para importarlo. En la ventana que se abre, selecciona **Máquina local**.
6. Cuando llegues al punto de elegir dónde guardarlo, selecciona **Colocar todos los certificados en el siguiente almacén**, haz clic en **Examinar** y elige la carpeta **Autoridades de certificación raíz de confianza**.

### Configurar el servicio de federación

1. En el Administrador del servidor, abre la alerta y selecciona **Configurar el servicio de federación en el servidor**.

   [Imagen: Alerta del Administrador del servidor para configurar el servicio de federación]

   Se abre el **Asistente de configuración del servicio de federación de Active Directory**.

2. En **Bienvenida**, selecciona **Crear el primer servidor de federación en una granja de servidores de federación** y haz clic en **Siguiente**.
3. En **Conectarse a AD DS**, indica una cuenta con derechos de administrador de dominio para el dominio de Active Directory al que está unido el equipo (en este ejemplo, `ironchip.local`) y haz clic en **Siguiente**.
4. En **Especificar propiedades del servicio**, haz lo siguiente y haz clic en **Siguiente**:
   - Selecciona en el desplegable el certificado SSL que creaste antes. Es el certificado de autenticación del servicio.
   - En el nombre del servicio de federación, escribe `adfs.ironchip.local`. Debe coincidir con el valor que usaste al inscribir el certificado SSL en los Servicios de certificados de Active Directory (AD CS).
   - En el nombre para mostrar, escribe `Ironchip Corporation`.
5. En **Especificar cuenta de servicio**, selecciona **Usar una cuenta de usuario de dominio existente o una cuenta de servicio administrada de grupo**. Para ello necesitas crear antes un usuario específico para este servicio, por ejemplo `service-adfs`. Después vuelve al asistente y selecciónalo.
6. En **Especificar base de datos de configuración**, selecciona **Crear una base de datos en este servidor mediante la base de datos interna de Windows** y haz clic en **Siguiente**.
7. En **Opciones de revisión**, comprueba la configuración y haz clic en **Siguiente**.
8. En **Comprobaciones de requisitos previos**, verifica que todas se han completado correctamente y haz clic en **Configurar**.
9. En **Resultados**, revisa que la configuración se haya completado. Aparecerán 4 advertencias, que puedes ignorar por ahora.

   [Imagen: Página de resultados del asistente de configuración de AD FS]

### Instalar el plugin de ADFS

1. Descarga el instalador del plugin desde la sección de plugins de la consola de Ironchip.
2. Ejecuta el instalador.
3. Rellena solo estos campos: **Ironchip Host** (déjalo con el valor por defecto si tienes dudas) e **Ironchip API Key**, con la API key que obtuviste al crear la aplicación de tipo API Key.

   [Imagen: Instalador del plugin de ADFS con los campos Ironchip Host e Ironchip API Key]

4. Si la configuración es correcta, el instalador añade el plugin a AD FS y reinicia el servicio de AD FS para aplicar los cambios.

   [Imagen: Instalador del plugin de ADFS al terminar la instalación]

### Proteger una aplicación con Ironchip MFA

La interfaz del administrador de ADFS cambia entre las versiones 3.0 y 4.0. Sigue las instrucciones de la tuya. En los ejemplos, el servicio protegido es Claims X-Ray (consulta [Configurar Claims X-Ray como aplicación de prueba](#configurar-claims-x-ray-como-aplicación-de-prueba)).

#### ADFS 3.0

1. Ve a **Políticas de autenticación** y haz clic en **Editar MFA global**.
2. Selecciona **Adaptador Ironchip MFA** como método de autenticación multifactor.
3. Ve a **Confianza por parte de confianza** (Per Relying Party Trust) y haz clic derecho en el servicio que quieras proteger.
4. Haz clic en **Editar autenticación multifactor personalizada**.
5. Activa MFA para **intranet, extranet o ambas**.

El servicio queda protegido con Ironchip MFA.

#### ADFS 4.0

1. Ve a **Servicio** > **Métodos de autenticación**. En el menú de la derecha, haz clic en **Editar métodos de autenticación multifactor**.
2. En la pestaña **Multifactor**, selecciona **Adaptador Ironchip MFA**.
3. Haz clic en **Aplicar** y **Aceptar**.
4. Ve a **Relaciones de confianza de la parte que confía** (Relying Party Trusts) y selecciona el servicio, por ejemplo **ClaimsXray**.
5. En el menú de la derecha, haz clic en **Editar política de control de acceso**.
6. En la parte inferior de la ventana, haz clic en **Usar política de control de acceso**.
7. Selecciona **Permitir a todos y requerir MFA**. Si quieres, puedes aplicarlo solo a un grupo de usuarios concreto.
8. Haz clic en **Aplicar** y **Aceptar**.

El servicio queda protegido con Ironchip MFA.

## Comprobación

### Probar el plugin

1. Abre el **Visor de eventos** para ver los registros del plugin de Ironchip.

   [Imagen: Visor de eventos de Windows]

2. Si todo es correcto, verás **ADFS Ironchip Plugin** en la lista de **Registros de aplicaciones y servicios**. Ábrelo.
3. Si el plugin está instalado, verás en los registros el mensaje `Ironchip license key loaded without errors.`

   [Imagen: Registro ADFS Ironchip Plugin del Visor de eventos con el mensaje Ironchip license key loaded without errors]

:::note
Si ves el mensaje `Unable to load IronChip license key`, comprueba que la licencia sea la correcta y vuelve a intentarlo. Si el problema continúa, contacta con el soporte de Ironchip.
:::

### Configurar Claims X-Ray como aplicación de prueba

Claims X-Ray es una herramienta de Microsoft que sirve como aplicación de prueba para ADFS.

1. Ve a [https://adfshelp.microsoft.com/ClaimsXray/TokenRequest](https://adfshelp.microsoft.com/ClaimsXray/TokenRequest) y sigue las instrucciones.
2. Abre PowerShell como administrador y ejecuta lo siguiente. Esto añade Claims X-Ray como relying party trust:

   ```powershell
   $authzRules = "=>issue(Type = `"http://schemas.microsoft.com/authorization/claims/permit`", Value = `"true`"); "
   $issuanceRules = "@RuleName = `"Issue all claims`"`nx:[]=>issue(claim = x); "
   $redirectUrl = "https://adfshelp.microsoft.com/ClaimsXray/TokenResponse"
   $samlEndpoint = New-AdfsSamlEndpoint -Binding POST -Protocol SAMLAssertionConsumer -Uri $redirectUrl

   Add-ADFSRelyingPartyTrust -Name "ClaimsXray" -Identifier "urn:microsoft:adfs:claimsxray" -IssuanceAuthorizationRules $authzRules -IssuanceTransformRules $issuanceRules -WSFedEndpoint $redirectUrl -SamlEndpoint $samlEndpoint
   ```

3. Si quieres añadir también la integración OIDC, ejecuta:

   ```powershell
   Add-AdfsClient -Name "ClaimsXrayClient" -ClientId "claimsxrayclient" -RedirectUri https://adfshelp.microsoft.com/ClaimsXray/TokenResponse

   if ([System.Environment]::OSVersion.Version.major -gt 6) { Grant-AdfsApplicationPermission -ServerRoleIdentifier urn:microsoft:adfs:claimsxray -AllowAllRegisteredClients -ScopeNames "openid","profile" }
   ```

4. Comprueba que Claims X-Ray aparece en **Relying Party Trusts**.
5. Si la política de control de acceso no tiene ningún parámetro, haz clic derecho en el servicio, selecciona **Editar política de control de acceso**, elimina todo lo que haya y elige la tercera opción, **Permitir a todos y MFA para un grupo específico**. En la parte inferior, selecciona el grupo protegido.
6. En **Métodos de autenticación** > **Métodos de autenticación multifactor**, comprueba que aparece `IronchipMFAAdapter`. Si no aparece, edita la lista y añádelo.

### Activar la página de inicio de sesión iniciada por el IdP

1. Consulta los endpoints de tu ADFS desde PowerShell:

   ```powershell
   Get-AdfsEndpoint | select FullUrl
   ```

2. Abre en el navegador la URL de tu ADFS añadiendo al final `/idpinitiatedsignon.aspx`. Verás un error, porque esta página está desactivada por defecto.
3. Actívala desde PowerShell:

   ```powershell
   Set-AdfsProperties -EnableIdPInitiatedSignonPage $true
   ```

4. Vuelve a abrir la página y autentícate con tu usuario.
5. Si aparece el aviso de seguridad de Windows, puedes desactivarlo en la **Consola de administración de ADFS**: expande **Servicios**, haz clic en **Métodos de autenticación**, haz clic en **Editar** en **Métodos de autenticación primarios** y desmarca la opción de solicitud de Windows. Haz clic en **Aplicar** y **Aceptar**.

Ahora verás un formulario de inicio de sesión.

### Probar el servicio protegido con Claims X-Ray

1. Abre la herramienta Claims X-Ray y configúrala para tu ADFS.
2. Haz clic en **Probar autenticación**. Te redirige a tu ADFS.
3. Introduce tu usuario y contraseña.
4. Se te solicita la autenticación MFA. Haz clic en **Enviar**.
5. Recibes una notificación push en la aplicación de Ironchip. Ábrela y autentícate.

Si todo es correcto, se te redirige a la página final de Claims X-Ray.
