Autenticación de Entra ID mediante OIDC e inicio de sesión único en VDA
Este artículo describe cómo configurar StoreFront y un NetScaler ADC para permitir que los usuarios se autentiquen con Entra ID mediante OIDC y, a continuación, inicien sesión de forma única en un VDA unido a Entra.
IMPORTANTE:
La autenticación de Entra ID mediante OIDC y el inicio de sesión único en VDA se encuentra actualmente en versión preliminar. Esta función se proporciona sin soporte y aún no se recomienda para su uso en entornos de producción.
-
Requisitos previos
- NetScaler ADC
- StoreFront 2507 LTSR CU1 o superior
- Microsoft Entra ID y una cuenta con uno de los siguientes permisos:
- Administrador de aplicaciones en la nube
- Administrador de aplicaciones
- Administrador global
- Suscripción a DaaS con conectores. Esto no está disponible con CVAD.
- Escritorios y/o aplicaciones publicados
- Para los inicios desde un navegador web en la aplicación Citrix Workspace, para habilitar el SSO en los VDA, extensión web de Citrix.
Autenticación de Entra ID mediante OIDC
Esta sección describe cómo configurar NetScaler y StoreFront para que los usuarios puedan autenticarse con Entra ID. En esta configuración, los usuarios pueden tener una identidad híbrida o una identidad solo de Entra sin una cuenta de Active Directory.
Crear una aplicación de Microsoft Azure Entra ID
Un registro de aplicación en Microsoft Entra ID define tu aplicación para que Entra ID la reconozca; en este caso, NetScaler OIDC. Este registro también gestiona las solicitudes de autenticación y autorización de la aplicación. Dado que OAuth requiere un proveedor de identidades (IdP) de confianza para autenticar a los usuarios y emitir tokens, registrar tu aplicación le indica a Entra ID: «Esta aplicación te usa como su IdP para los flujos de OAuth».
- Inicia sesión en el portal de Azure para el inquilino de Entra ID que usas para la autenticación de NetScaler o StoreFront.
- Ve a Recurso de Microsoft Entra ID > Administrar > Registros de aplicaciones y, a continuación, selecciona Nuevo registro.
- Asigna un nombre a la aplicación, por ejemplo, NetScaler StoreFront Authentication.
- En Tipos de cuenta admitidos, selecciona Cuentas solo en este directorio organizativo.
-
En URI de redirección, selecciona Web para el tipo de aplicación que quieres crear. Introduce el URI donde se envía el token de acceso. Usa el formato <URL del servidor virtual de NetScaler>/oauth/login, por ejemplo,
https://netscalerentra.customer.com/oauth/login.
Crear secreto de cliente
Para crear el secreto de cliente:
- Después de registrar la aplicación, ve a Administrar > Certificados y secretos.
- Selecciona Secretos de cliente y, a continuación, selecciona Nuevo secreto de cliente. Tu aplicación usa estas credenciales para comunicarse de forma segura con el IdP y solicitar tokens.
- Proporciona una descripción del secreto y una duración.
- Después de crear el secreto, anota el valor del secreto porque lo necesitarás más adelante en el proceso de configuración y solo es visible durante esta etapa de creación.

Configurar permisos de aplicación
Para configurar los permisos de la aplicación:
- Ve a Administrar > Registros de aplicaciones y, a continuación, selecciona tu aplicación.
- Selecciona Administrar > Permisos de API.
- El permiso User.Read ya se ha agregado de forma predeterminada.
- Agrega openid y profile.
- Selecciona Conceder consentimiento de administrador para <nombre del inquilino> y acepta.
«Conceder consentimiento de administrador para» en los permisos de API de Microsoft Entra ID significa que un administrador da su aprobación, en nombre de todos los usuarios de la organización, para que una aplicación acceda a recursos o API específicos con los permisos solicitados.

Configurar Citrix DaaS para habilitar la confianza XML
De forma predeterminada, Citrix DaaS autentica las solicitudes mediante las credenciales de Active Directory del usuario. Con la autenticación de Entra ID, StoreFront no tiene las credenciales. Por lo tanto, debes configurar DaaS para que confíe en StoreFront sin necesidad de autenticación. Se recomienda encarecidamente que habilites las claves de seguridad para proporcionar autenticación a nivel de servicio en su lugar.
- Inicia sesión en Citrix Cloud y ve a la consola de DaaS.
- Ve a Configuración.
-
Activa la confianza XML.

- (Paso opcional) Para mayor seguridad, puedes habilitar claves de seguridad entre DaaS y StoreFront. Para obtener más información, consulta Administrar claves de seguridad en la documentación de Citrix DaaS™.
Configurar el perfil de autenticación de NetScaler
Esta sección describe cómo configurar un perfil de autenticación de NetScaler que puedes vincular a tu servidor virtual VPN de puerta de enlace. Esta configuración le indica al ADC cómo redirigir a los usuarios a un IdP de OAuth externo (como Microsoft Entra ID) para iniciar sesión y cómo manejar los tokens de OAuth recibidos después de la autenticación. Especifica los puntos finales, las credenciales de cliente, los ámbitos y cómo el ADC extrae la información del usuario de los tokens.
Necesitas el secreto de cliente de los pasos anteriores y los puntos finales de autenticación de Microsoft Entra ID. Puedes encontrar los puntos finales de autenticación en el portal de Azure yendo a la Descripción general del registro de tu aplicación y haciendo clic en la ficha Puntos finales.
Crear servidor virtual de autenticación
El servidor virtual de autenticación gestiona la autenticación de usuarios.
add authentication vserver EntraId_Authentication_VirtualServer SSL 0.0.0.0 443 \
-state ENABLED \
-authentication ON \
-td 0 -appflowLog ENABLED \
-noDefaultBindings NO
bind ssl vserver EntraId_Authentication_VirtualServer \
-certkeyName <Certificate Key Name>
<!--NeedCopy-->
Crear política y acción de OAuth
La acción de OAuth especifica cómo interactúa NetScaler ADC con un IdP de OAuth, como Microsoft Entra ID. Esta acción permite a Citrix Gateway redirigir a los usuarios al IdP para iniciar sesión y manejar el token de OAuth devuelto. Establece el userNameField en oid, lo que hace que la puerta de enlace pase el OID como nombre de usuario al autenticarse en StoreFront. StoreFront valida que el OID coincida con los detalles que obtiene al buscar el token de acceso de Entra ID; de lo contrario, la autenticación falla.
Necesitas el ID de cliente y el secreto de cliente de los pasos anteriores.
add authentication OAuthAction EntraId_Oauth_Server \
-authorizationEndpoint "https://login.microsoftonline.com/<TenantId>/oauth2/v2.0/authorize\?prompt=login" \
-tokenEndpoint "https://login.microsoftonline.com/<TenantId>/oauth2/v2.0/token" \
-clientID <ClientId> \
-clientSecret <ClientSecret> \
-Attribute1 email \
-Attribute2 family_name \
-Attribute3 given_name \
-Attribute4 upn \
-CertEndpoint "https://login.microsoftonline.com/<TenantId>/discovery/v2.0/keys" \
-userNameField oid \
-allowedAlgorithms HS256 RS256 RS512 \
-PKCE ENABLED \
-tokenEndpointAuthMethod client_secret_post \
-OAuthType GENERIC \
-grantType CODE \
-refreshInterval 1440
add authentication Policy EntraId_Authentication_Policy \
-rule true \
-action EntraId_Oauth_Server
<!--NeedCopy-->
El authorizationEndpoint incluye el parámetro de cadena de consulta prompt=login para que los usuarios se vean obligados a volver a autenticarse cuando intenten acceder a StoreFront a través de NetScaler.
Vincular la política de autenticación al servidor virtual
- bind authentication vserver EntraId_Authentication_VirtualServer \
-policy EntraId_Authentication_Policy \
-priority 100 \
-gotoPriorityExpression END
<!--NeedCopy-->
Crear perfil de autenticación
add authentication authnProfile EntraId_Auth_Profile \
-authnVsName EntraId_Authentication_VirtualServer \
-AuthenticationLevel 0
<!--NeedCopy-->
Crear servidor virtual VPN y vincular el perfil de autenticación
Completa los pasos 1, 2 y 4 de Integrar NetScaler Gateway con StoreFront, usando el perfil de autenticación creado en los pasos anteriores.
Alternativamente, si ya tienes un Citrix Gateway adecuado, puedes vincularle el nuevo perfil de autenticación. La ejecución de este comando reemplaza el perfil de autenticación existente.
set vpn vserver <StoreFront ICA Proxy vServer> \
-authentication ON \
-authnProfile EntraId_Auth_Profile
<!--NeedCopy-->
Configuración de inyección de tokens de Entra ID para SSO en StoreFront
Después de que el gateway de Citrix autentique al usuario, debe pasar suficiente información a StoreFront para que este pueda validar que el usuario está autenticado y buscar la pertenencia a grupos. Por defecto, el gateway de Citrix solo envía el nombre de usuario y la contraseña del directorio activo. En el caso de la autenticación de Entra ID, debe pasar el token de acceso de Entra ID para que StoreFront pueda buscar la información del usuario usando la API de Microsoft Graph. Para lograr esto, debes agregar una política de reescritura que agregue el token de Entra ID a la llamada que realiza para autenticar al usuario en StoreFront. Si la política de reescritura del token de acceso de Entra ID no surte efecto, el inicio de sesión fallará. Si la función de política de reescritura está deshabilitada por defecto y no está ya habilitada, entonces debes habilitarla primero.
enable ns feature Rewrite
add rewrite action EntraId_Oauth_Insert_AccessToken_Header insert_http_header X-Citrix-OIDC-Access-Token "AAA.USER.ATTRIBUTE(\"accesstoken\")" \
-comment "A rewrite policy to add the OAUTH access_token to subsequent user authentication requests"
add rewrite policy EntraId_Oauth_Insert_AccessToken_Policy "HTTP.REQ.URL.TO_LOWER.ENDSWITH(\"gatewayauth/login\") || HTTP.REQ.URL.TO_LOWER.ENDSWITH(\"citrixagbasic/authenticate\")" EntraId_Oauth_Insert_AccessToken_Header \
-comment "A rewrite policy to add the OAUTH access_token to subsequent user authentication requests"
bind vpn vserver <StoreFront ICA Proxy vServer> \
-policy EntraId_Oauth_Insert_AccessToken_Policy \
-priority 100 \
-gotoPriorityExpression END \
-type REQUEST
<!--NeedCopy-->
Configurar el gateway de Citrix en StoreFront
-
Configurar los gateways de Citrix.
-
Establece el tipo de inicio de sesión en Dominio.
-
Especifica una URL de devolución de llamada válida. Esto es necesario para la autenticación de Entra ID con StoreFront.
-
-
Configurar el gateway para acceso remoto para el almacén que agrega los recursos de Citrix DaaS.
-
Habilita y configura la autenticación de Entra ID desde NetScaler Gateway. Ejecuta el siguiente Powershell, reemplazando el ID de inquilino con el ID de tu inquilino de Entra ID y
/Citrix/EntraStorecon la ruta del almacén.
$store = Get-STFStoreService /Citrix/EntraStore
$authenticationService = Get-STFAuthenticationService -Store $store
Set-STFEntraIdSettings -AuthenticationService $authenticationService -TenantId "<Your tenant id>" -Enabled $true
<!--NeedCopy-->
Configurar el SSO de Entra ID para VDAs
Una vez que hayas configurado StoreFront y tu gateway de Citrix para autenticar usuarios usando Entra ID, puedes habilitar el SSO de Entra ID para VDAs sin necesidad de FAS. Habilita esto solo una vez que hayas completado la configuración de DaaS. Para obtener más información, consulta Inicio de sesión único de Microsoft Entra. Esto requiere la siguiente configuración adicional para StoreFront y el NetScaler ADC.
Configurar el cambio de contenido de NetScaler ADC
Normalmente, todas las solicitudes a StoreFront pasan por el VServer del gateway y, por lo tanto, requieren autenticación. Cuando el usuario inicia un VDA unido a Entra ID, la aplicación Citrix Workspace debe autenticarse de nuevo en Azure (SSO si la sesión de Entra ID sigue siendo válida) y recuperar un token de acceso. Como parte de este flujo, StoreFront genera un token que debe ser validado por un servicio que se ejecuta en Citrix Cloud. Este servicio debe poder volver a llamar al endpoint de StoreFront /Citrix/<StoreWeb>/Tickets/RedeemStoreTicket para validar el token. Dado que este servicio no tiene acceso a la sesión de NetScaler, es necesario omitir el servicio virtual VPN para las llamadas de canje de tickets. Para lograr esto, puedes usar un conmutador de contenido.

Las llamadas a /Citrix/<StoreWeb>/Tickets/RedeemStoreTicket se dirigen a un equilibrador de carga que reenvía las solicitudes a StoreFront, omitiendo el gateway. Ten en cuenta que el equilibrador de carga es necesario ya que el conmutador de contenido no se puede configurar para dirigir el tráfico directamente a una URL y requiere un servidor virtual como objetivo. El equilibrador de carga no realiza ningún balanceo de carga y simplemente reenvía el tráfico a StoreFront. Si ya tienes un equilibrador de carga de StoreFront adecuado en la misma máquina, puedes usar este en su lugar.
Todas las demás llamadas se dirigen al servidor virtual VPN del gateway.
Crear un equilibrador de carga para pasar del conmutador de contenido a StoreFront
Si ya tienes un servidor virtual de equilibrador de carga que precede a tu grupo de servidores de StoreFront y se ejecuta en la misma máquina que el gateway, puedes omitir este paso y configurar el conmutador de contenido para enviar el tráfico directamente a ese servidor virtual. De lo contrario, debes crear un equilibrador de carga para pasar el tráfico a los servidores de StoreFront. Esto se debe a que las acciones del conmutador de contenido deben hacer referencia a un servidor virtual.
Los pasos son ligeramente diferentes dependiendo de si StoreFront está configurado para HTTPS (recomendado) o HTTP.
StoreFront está configurado para HTTPS
Crea un servicio stf_srv que represente a StoreFront usando su dirección IP y vincúlalo a un equilibrador de carga SSL sin persistencia.
add service stf_srv <StoreFront Ip Address> SSL 443
add lb vserver lb_vs SSL <lb_vs Ip Address> 443 -persistenceType NONE -cltTimeout 180
bind lb vserver lb_vs stf_srv
<!--NeedCopy-->
StoreFront está configurado para HTTP
Crea un servicio stf_srv que represente a StoreFront usando su FQDN y vincúlalo a un equilibrador de carga HTTP sin persistencia.
add server storefront1 <storefront fqdn>
add service stf_srv storefront1 HTTP 80
add lb vserver lb_vs HTTP 0.0.0.0 0 -persistenceType NONE -cltTimeout 180
bind lb vserver lb_vs stf_srv
<!--NeedCopy-->
Crear un servidor virtual de conmutación de contenido SSL
Crea un servidor virtual de conmutación de contenido SSL para manejar las solicitudes del cliente. Este servidor virtual de conmutación de contenido escucha el tráfico HTTPS en el puerto 443 y enruta las solicitudes al servidor virtual VPN del gateway o las pasa a StoreFront a través del equilibrador de carga.
Por defecto, la conmutación de contenido está deshabilitada, por lo que debes habilitarla si no lo has hecho antes.
enable feature CS
add cs vserver cs_vs SSL <cs_vs Ip Address> 443 -cltTimeout 180 -persistenceType NONE
bind ssl vserver cs_vs -certkeyName <Certificate Name>
<!--NeedCopy-->
Crear una política de conmutación de contenido para el canje de tickets
Crea una política de conmutación de contenido para el balanceo de carga basada en una URL que contenga una ruta de canje de tickets de StoreFront.
Esta política coincide con las solicitudes cuando la URL contiene /Citrix/StoreEntraWeb/Tickets/RedeemStoreTicket y las enruta al equilibrador de carga sin pasar por el servidor virtual VPN.
Reemplaza StoreEntraWeb con el nombre del sitio web de StoreFront de la política web del servidor virtual de StoreFront. Puedes usar el equilibrador de carga lb_vs creado en el paso anterior, o un servidor virtual de equilibrador de carga existente que precede a tus servidores de StoreFront.
add cs action cs_lb_vs -targetLBVserver lb_vs
add cs policy cs_lb_vs_pol -rule "HTTP.REQ.URL.CONTAINS(\"/Citrix/StoreEntraWeb/Tickets/RedeemStoreTicket\")" -action cs_lb_vs
bind cs vserver cs_vs -policyName cs_lb_vs_pol -priority 100
<!--NeedCopy-->
Crear una política de conmutación de contenido para todo el demás tráfico
Crea una política de conmutación de contenido general para enviar todo el demás tráfico de StoreFront a través del servidor virtual VPN para la autenticación.
add cs action cs_vpn_vs -targetVserver <VPN vServer>
add cs policy cs_vpn_pol -rule TRUE -action cs_vpn_vs
bind cs vserver cs_vs -policyName cs_vpn_pol -priority 110
<!--NeedCopy-->
Configurar el inicio de sesión único de Entra ID para VDA
El inicio de sesión único permite a los usuarios autenticarse una sola vez cuando inician sesión en el gateway de Citrix, y luego acceder a sus escritorios y aplicaciones virtuales sin tener que volver a introducir sus credenciales en el VDA.
$store = Get-STFStoreService /Citrix/EntraStore
Set-STFStoreLaunchOptions -StoreService $store -EntraIdSsoEnabled $true
<!--NeedCopy-->
Consideraciones para habilitar o deshabilitar el SSO de Entra ID
-
Habilita el inicio de sesión único de Entra ID solo una vez que hayas completado toda la configuración descrita en Inicio de sesión único de Microsoft Entra. De lo contrario, el inicio de sesión único fallará y los usuarios podrían experimentar retrasos o errores en el lanzamiento.
-
El SSO de Entra ID para VDAs solo es compatible cuando se usa autenticación basada en OIDC. No es compatible con SAML.
-
StoreFront no admite habilitar tanto el Servicio de autenticación federada como el SSO de Entra ID en el mismo almacén.