Citrix ADC como proveedor de identidad de OAuth
Citrix ADC ahora se puede configurar como proveedor de identidades mediante el protocolo OpenID-Connect (OIDC). El protocolo OIDC refuerza las capacidades de provisión de identidad de Citrix ADC. Ahora puede acceder a la aplicación alojada en toda la empresa con un inicio de sesión único, ya que OIDC ofrece más seguridad al no transferir la contraseña del usuario, sino al usar tokens con una duración específica. OpenID también está diseñado para integrarse con clientes que no son navegadores, como aplicaciones y servicios. Por lo tanto, muchas implementaciones adoptan ampliamente el protocolo OIDC.
Nota:
Citrix ADC debe tener la versión 12.1 o posterior para funcionar como IdP de OAuth mediante el protocolo OIDC.
Ventajas de tener NetScaler ADC como proveedor de identidades de OAuth
- Elimina la sobrecarga de mantener varias contraseñas de autenticación, ya que el usuario tiene una identidad única en toda la organización.
- Proporciona una seguridad sólida para su contraseña, ya que la contraseña solo se comparte con su proveedor de identidad y no con ninguna aplicación a la que accedas.
- Proporcionó una amplia interoperabilidad con varios sistemas, lo que facilita que las aplicaciones alojadas acepten OpenID.
Nota
Se necesitan NetScaler ADC Advanced Edition y versiones posteriores para que la solución funcione.
Para configurar Citrix ADC como un IdP de OAuth mediante la GUI
-
Vaya a Configuración > Seguridad > Tráfico de aplicaciones AAA > Directivas > Autenticación > Directivas avanzadas > IdP de OAuth.
-
Haga clic en Perfil y haga clic en Agregar.
En la pantalla Crear perfil de proveedor de identidad de OAuth de autenticación, defina los valores para los siguientes parámetros y haga clic en Crear.
-
Nombre: Nombre del perfil de autenticación. Debe comenzar con una letra, un número o un carácter de guión bajo (_) y debe contener solo letras, números y guión (-), punto (.), almohadilla (#), espacio ( ), en (@), igual a (=), dos puntos (:) y guión bajo. No se puede cambiar una vez creado el perfil.
- Client ID: Cadena única que identifica al proveedor de servicios. El servidor de autorización deduce la configuración del cliente mediante este identificador. Longitud máxima: 127.
- Client Secret: Cadena secreta establecida por el usuario y el servidor de autorización. Longitud máxima: 239.
- URL de redirección: Punto final del SP en el que se debe publicar el código/token.
- Nombre del emisor: Identidad del servidor cuyos tokens se van a aceptar. Longitud máxima: 127.
- Público: Destinatario objetivo del token que envía el IDP. El destinatario podría comprobarlo.
- Tiempo de sesgo : esta opción especifica la inclinación del reloj permitida en el número de minutos que NetScaler ADC permite en un token entrante. Por ejemplo, si skewTime es 10, el token sería válido desde (tiempo actual - 10) min a (tiempo actual+ 10) min, es decir, 20 min en total. Valor predeterminado: 5
- Grupo de autenticación predeterminado: Un grupo que se agrega a la lista de grupos internos de la sesión cuando el IDP elige este perfil y que se puede usar en el flujo nFactor. Se puede usar en la expresión (AAA.USER.IS_MEMBER_OF (“xxx”)) para que las directivas de autenticación identificar el flujo de nFactor relacionado con la parte de confianza. Longitud máxima: 63
A group added to the session for this profile to simplify policy evaluation and help in customizing policies. This is the default group that is chosen when the authentication succeeds in addition to the extracted groups. Maximum Length: 63.
-
-
Haga clic en Directivas y en Agregar.
-
En la pantalla Crear directiva de IDP de OAuth de autenticación, defina los valores para los siguientes parámetros y haga clic en Crear.
- Name: El nombre de la directiva de autenticación.
- Action: Nombre del perfil creado anteriormente.
- Log Action: Nombre de la acción del registro de mensajes que se utilizará cuando una solicitud coincida con esta directiva. No es un archivo obligatorio.
- Acción deresultado indefinido: acción a realizar si el resultado de la evaluación de directivas no está definido (UNDEF). No es un campo obligatorio.
- Expression: Expresión sintáctica predeterminada que la directiva utiliza para responder a una solicitud específica. Por ejemplo, true.
- Comments: Cualquier comentario sobre la directiva.
Enlace de la directiva OAuthIDP y la directiva LDAP al servidor virtual de autenticación
-
Vaya a Configuración > Seguridad > Tráfico de aplicaciones AAA > Directivas > Autenticación > Directivas avanzadas > Acciones > LDAP.
-
En la pantalla Acciones de LDAP, haga clic en Agregar.
-
En la pantalla Crear servidor LDAP de autenticación, defina los valores de los siguientes parámetros y haga clic en Crear.
- Nombre: nombre de la acción LDAP
- ServerName/ServerIP: proporciona FQDN o IP del servidor LDAP
- Elija los valores adecuados para Tipo de seguridad, Puerto, Tipo de servidor, Tiempo de espera
- Asegúrese de que la autenticación esté marcada
- DN base: Base desde la que se inicia la búsqueda LDAP. Por ejemplo, dc=aaa, dc=local.
-
DN de enlace de administrador: nombre de usuario del enlace al servidor LDAP. Por ejemplo,
admin@aaa.local
. - Contraseña de administrador/Confirmar contraseña: Contraseña para enlazar LDAP
- Haga clic en Probar conexión para probar su configuración.
- Atributo de nombre de inicio de sesión del servidor: elija “sAMAccountName”
- Otros campos no son obligatorios y, por lo tanto, se pueden configurar según sea necesario.
-
Vaya a Configuración > Seguridad > Tráfico de aplicaciones AAA > Directivas > Autenticación > Directivas avanzadas > Directiva.
-
En la pantalla Directivas de autenticación, haga clic en Agregar.
-
En la página Crear directiva de autenticación, defina los valores de los siguientes parámetros y haga clic en Crear.
- Nombre: nombre de la directiva de autenticación LDAP.
- Tipo de acción: seleccione LDAP.
- Acción: seleccione la acción LDAP.
- Expresión: Expresión de sintaxis predeterminada que la directiva utiliza para responder a una solicitud específica. Por ejemplo, true**.
La función OAuth ahora admite las siguientes capacidades en la API de token desde el lado de la parte que confía (RP) y desde el lado del IdP de NetScaler Gateway y NetScaler ADC.
-
Compatibilidad con PKCE (clave de prueba para intercambio de código)
-
Soporte para client_assertion
Para configurar Citrix ADC como IdP mediante el protocolo OIDC mediante la CLI
En el símbolo del sistema, escriba los comandos siguientes:
add authentication OAuthIDPProfile <name> [-clientID <string>][-clientSecret ][-redirectURL <URL>][-issuer <string>][-audience <string>][-skewTime <mins>] [-defaultAuthenticationGroup <string>]
add authentication OAuthIdPPolicy <name> -rule <expression> [-action <string> [-undefAction <string>] [-comment <string>][-logAction <string>]
add authentication ldapAction aaa-ldap-act -serverIP 10.0.0.10 -ldapBase "dc=aaa,dc=local"
ldapBindDn <administrator@aaa.local> -ldapBindDnPassword <password> -ldapLoginName sAMAccountName
add authentication policy aaa-ldap-adv-pol -rule true -action aaa-ldap-act
bind authentication vserver auth_vs -policy <ldap_policy_name> -priority 100 -gotoPriorityExpression NEXT
bind authentication vserver auth_vs -policy <OAuthIDPPolicyName> -priority 5 -gotoPriorityExpression END
bind vpn global –certkey <>
<!--NeedCopy-->
Nota
Puede enlazar más de una tecla. Las partes públicas de los certificados enlazados se envían en respuesta a
jwks\_uri query (https://gw/oauth/idp/certs)
.- A partir de la versión NetScaler ADC 13.0—85.19, el extremo introspectivo de IdP de OAuth admite la propiedad
active: true
.Si el servidor virtual de autenticación está configurado como un IdP de OAuth, la URL del dispositivo de punto final de detección del IdP de OAuth conocido debe ser
https://<netscaler-oauth-idp-fqdn>/oauth/idp/.well-known/openid-configuration
.- Citrix ADC configurado como IdP de OAuth no muestra los métodos de autenticación de puntos finales
client_secret_post
,client_secret_jwt
,private_key_jwt
yclient_secret_basic
con token en la respuesta.well-known-Endpoint
enviada al SP de OAuth.
Compatibilidad con tokens cifrados en el protocolo OIDC
Citrix ADC con el mecanismo OIDC ahora admite el envío de tokens cifrados junto con tokens firmados. El Citrix ADC utiliza las especificaciones de cifrado web JSON para calcular los tokens cifrados y solo admite la serialización compacta de los tokens cifrados. Para cifrar un token de OpenID, un Citrix ADC necesita la clave pública de la parte que confía (RP). La clave pública se obtiene de forma dinámica sondeando el punto final de configuración conocido de la parte que confía.
Se introduce una nueva opción “relyingPartyMetadataURL” en el perfil “authentication OAuthIDPProfile”.
Para configurar el dispositivo de punto final de la parte que confía mediante CLI
En la línea de comandos, escriba:
```set authentication OAuthIDPProfile
- **relyingPartyMetadataURL**: Dispositivo de punto final en el que el proveedor de identidades de NetScaler ADC puede obtener detalles sobre la parte que confía que se está configurando. La respuesta de metadatos debe incluir dispositivos de punto final para jwks_uri para claves públicas de RP.
- **refreshInterval**: Define la velocidad a la que se debe sondear este extremo para actualizar los certificados en minutos.
- **status**: Refleja el estado de la operación de sondeo. El estado se completa una vez que Citrix ADC obtiene correctamente las claves públicas.
**Ejemplo**
```
set authentication OAuthIDPProfile sample_profile -relyingPartyMetadataURL https://rp.customer.com/metadata -refreshInterval 50 -status < >
<!--NeedCopy-->
Una vez configurado el punto final, Citrix ADC primero sondea el punto final conocido de la parte que confía para leer la configuración. Actualmente, Citrix ADC procesa solo el punto final ‘jwks_uri’.
- Si no aparece ‘jwks_uri’ en la respuesta, el estado del perfil no está completo.
- Si el ‘jwks_uri’ está presente en la respuesta, NetScaler ADC sondea también ese dispositivo de punto final para leer las claves públicas de la parte que confía.
Nota: Solo se admiten los algoritmos de tipo de cifrado RSAES-OAEP y AES GCM para el cifrado de tokens.
Compatibilidad con atributos personalizados en OpenID Connect
Las partes que confían en OpenID pueden requerir más que un nombre de usuario o un nombre principal de usuario (UPN) en el token para crear el perfil de usuario o tomar decisiones de autorización. Por lo general, los grupos de usuarios deben aplicar directivas de autorización para el usuario. En ocasiones, se requieren más detalles, como el nombre o el apellido, para aprovisionar una cuenta de usuario.
El Citrix ADC configurado como IdP se puede usar para enviar atributos adicionales en el OIDCID_Token mediante expresiones. Las expresiones de directiva avanzadas se utilizan para enviar los atributos personalizados según el requisito. El IdP de Citrix evalúa las expresiones correspondientes a los atributos y, a continuación, calcula el token final.
Citrix ADC aplica automáticamente JSONify
a los datos de salida. Por ejemplo, los números (como SSN) o los valores booleanos (true o false) no están rodeados de comillas. Los atributos con varios valores, como los grupos, se colocan dentro de un marcador de matriz (“[” y “]”). Los atributos de tipo complejo no se calculan automáticamente y puede configurar la expresión PI de esos valores complejos según su requisito.
Para configurar el dispositivo de punto final de la parte que confía mediante CLI
En la línea de comandos, escriba:
set oauthidpprofile <name> -attributes <AAA-custom-attribute-pattern>
<!--NeedCopy-->
<AAA-custom-attribute-pattern>
puede describirse como:
Attribute1=PI-Expresión@@@attribute2=PI-Expresión@@@
“attribute1”, “attribute2” son cadenas literales que representan el nombre del atributo que se va a insertar en id_token.
Nota:
En el ejemplo siguiente, el valor máximo de la expresión
q{myname=http.req.user.name@@@ssn="123456789"@@@jit="false"@@@groups=http.req.user.groups}
puede ser de 2000 bytes. Contiene 4 atributos personalizados (myname, ssn, jit, groups). El valor máximo de cada atributo personalizado es de 10000 bytes. Por ejemplo, el atributo groups (evaluado en función de la expresión PIhttp.req.user.groups
) puede contener hasta 10 000 bytes de datos en el OIDCID_Token.Ejemplo:
set oauthidpprofile sample_1 -attributes q"{myname=http.req.user.name@@@ssn="123456789"@@@jit="false"@@@groups=http.req.user.groups}"
- La expresión PI anterior es una expresión de directiva avanzada que representa el valor que se va a utilizar para el atributo. La expresión PI se puede utilizar para enviar un literal de cadena, como “‘cadena codificada” ‘. El literal de la cadena va entre comillas dobles y comillas simples o comillas dobles alrededor de un patrón de inicio (el patrón de inicio es
"q()"
). Si el valor del atributo no es un literal de cadena, la expresión se evalúa en tiempo de ejecución y su valor se envía en token. Si el valor en tiempo de ejecución está vacío, el atributo correspondiente no se agrega al token de ID.- Como se define en el ejemplo, “false” es una cadena literal para el atributo “jit”. Además,
ssn
tiene un valor codificado como referencia. Los grupos ymyname
son expresiones PI que producen cadenas.
Compatibilidad con implementaciones de GSLB activo-activas en Citrix Gateway
Citrix Gateway configurado como proveedor de identidad (IDP) mediante el protocolo OIDC puede admitir implementaciones de GSLB activo-activas. La implementación activa y activa de GSLB en el IDP de Citrix Gateway proporciona la capacidad de equilibrar la carga de una solicitud de inicio de sesión de usuario entrante en varias ubicaciones geográficas.
Importante
Citrix recomienda vincular certificados de CA al servicio SSL y habilitar la validación de certificados en el servicio SSL para mejorar la seguridad.
Para obtener más información sobre cómo configurar una instalación de GSLB, consulte Ejemplo de una instalación y configuración de GSLB.