Caso de uso: control de acceso y autenticación

En zonas de alta seguridad, es obligatorio autenticar externamente al usuario antes de que los clientes accedan a un recurso. En el dispositivo Citrix ADC, puede utilizar llamadas HTTP para autenticar externamente al usuario evaluando las credenciales proporcionadas. En este ejemplo, se supone que el cliente envía el nombre de usuario y la contraseña a través de encabezados HTTP en la solicitud. Sin embargo, se podría obtener la misma información de la URL o del cuerpo HTTP.

Para implementar esta configuración, debe realizar las siguientes tareas:

  1. Habilite la función de respuesta en el dispositivo Citrix ADC.
  2. Cree una llamada HTTP en el dispositivo y configúrela con detalles sobre el servidor externo y otros parámetros necesarios.
  3. Configure una directiva de Responder para analizar la respuesta y, a continuación, enlazar la directiva globalmente.
  4. Cree un agente de llamada en el servidor remoto.

Activación dResponder

La función de respuesta debe estar habilitada antes de usarla en el dispositivo Citrix ADC.

Para habilitar Responder mediante la utilidad de configuración

  1. Asegúrese de que la licencia dResponder está instalada.
  2. En la utilidad de configuración, expanda AppExpert, haga clic con el botón secundario del mouse en Responder y, a continuación, haga clic en Habilitar la función Responder.

Creación de una llamada HTTP en el dispositivo Citrix ADC

Cree una llamada HTTP, HTTP-Callout-3, con la configuración de parámetros que se muestra en la tabla siguiente. Para obtener más información sobre cómo crear una llamada HTTP, consulte Configuración de una llamada HTTP.

Tabla 1. Parámetros y valores para HTTP-Callout-3

Parámetro

Valor

Nombre

HTTP-Callout-3

Servidor para recibir la solicitud de llamada:

Dirección IP

10.103.9.95

Puerto

80

Solicitud de envío al servidor:

Método

GET

Expresión de host

10.102.3.95

Expresión del tallo de URL

“/cgi-bin/authenticate.pl”

Encabezados:

Nombre

Solicitar

Value-expression

Solicitud de llamada

Parámetros:

Nombre

Nombre de usuario

Value-expression

HTTP.REQ.HEADER (“Nombre de usuario”).VALUE (0)

Nombre

Contraseña

Value-expression

HTTP.REQ.HEADER (“Contraseña”).VALUE (0)

Respuesta del servidor:

Tipo de devolución

TEXTO

Expresión para extraer datos de la respuesta

HTTP.RES.BODY(100)

Creación de una directiva de Responder para analizar la respuesta

Cree una directiva de Responder, Policy-Responder-3, que comprobará la respuesta del servidor de llamadas y RESTAURE la conexión si la dirección IP de origen se ha incluido en la lista negra. Cree la directiva con la configuración de parámetros que se muestra en la tabla siguiente. Aunque puede crear una directiva de Responder en el subnodo Directivas y, a continuación, vincularla globalmente mediante el Administrador de directivas de Responder, esta demostración utiliza el Administrador de directivas de Responder para crear la directiva de Responder y enlazar la directiva globalmente.

Parámetro Valor
Nombre Policy-Responder-3
Acción RESTABLECER
Undefined-Result-Action -Global undefined-result action-
Expresión “HTTP.REQ.HEADER (“Solicitud”).EQ (“Solicitud de llamada”).NOT && SYS.HTTP_CALLOUT (HTTP-Callout-3).CONTAINS (“Error de autenticación”)”

Cuadro 2. Parámetros y valores para Responder de directivas 3

Para crear una directiva de respuesta y vincularla globalmente mediante la utilidad de configuración

  1. Vaya a AppExpert > Responder.
  2. En el panel de detalles, en Administrador de directivas, haga clic en Administrador de directivas de Responder.
  3. En el cuadro de diálogo Administrador de directivas de Responder, haga clic en Sustituir global.
  4. Haga clic en Insertar directiva y, a continuación, en la columna Nombre de directiva, haga clic en Nueva directiva.
  5. En el cuadro de diálogo Crear directiva de Responder, haga lo siguiente:
    1. En Nombre, escriba Responder de directivas 3.

    2. En Acción, seleccione RESTABLECER.

    3. En Acción de resultado no definido, seleccione Acción global de resultado no definido.

    4. En el cuadro de texto Expresión, escriba:

      "HTTP.REQ.HEADER("Request").EQ("Callout Request").NOT && SYS.HTTP_CALLOUT(HTTP-Callout-3).CONTAINS("Authentication Failed")"
      
    5. Haga clic en Crear y, a continuación, haga clic en Cerrar.

  6. Haga clic en Aplicar cambios y, a continuación, haga clic en Cerrar.

Creación de un agente de llamada HTTP en el servidor remoto

Ahora necesita crear un agente de llamada HTTP en el servidor de llamadas remoto. El agente de llamada HTTP recibe solicitudes de llamada del dispositivo Citrix ADC y responde adecuadamente. El agente de llamada es un script diferente para cada implementación y debe escribirse teniendo en cuenta las especificaciones del servidor, como el tipo de base de datos y el lenguaje de scripting admitido.

Lo que sigue es ejemplo de pseudo-código agente de llamada que verifica si el nombre de usuario y la contraseña proporcionados son válidos. El agente se puede implementar en cualquier lenguaje de programación de su elección. El pseudo-código debe usarse solo como guía para desarrollar el agente de llamada. Puede crear funciones adicionales en el programa.

Para verificar el nombre de usuario y la contraseña proporcionados mediante pseudo-código

  1. Acepte el nombre de usuario y la contraseña proporcionados en la solicitud y formatéelos adecuadamente.
  2. Conéctese a la base de datos que contiene todos los nombres de usuario y contraseñas válidos.
  3. Compruebe las credenciales proporcionadas en la base de datos.
  4. Dar formato a la respuesta según lo requiera la llamada HTTP.
  5. Envíe la respuesta al dispositivo Citrix ADC.