ADC

用例:访问控制和身份验证

在高安全性区域中,必须在客户端访问资源之前对用户进行外部身份验证。在 Citrix ADC 设备上,可以使用 HTTP 标注通过评估提供的凭据来对用户进行外部身份验证。在此示例中,假设客户端通过请求中的 HTTP 标头发送用户名和密码。但是,可以从 URL 或 HTTP 正文中获取相同的信息。

要实现此配置,您必须执行以下任务:

  1. 启用 Citrix ADC 设备上的响应程序功能。
  2. 在设备上创建 HTTP 标注,并使用有关外部服务器和其他所需参数的详细信息对其进行配置。
  3. 配置响应程序策略以分析响应,然后全局绑定该策略。
  4. 在远程服务器上创建标注代理。

启用响应程序

在 Citrix ADC 设备上使用响应程序功能之前,必须启用响应程序功能。

使用配置实用程序启用响应程序

  1. 请确保已安装响应程序许可证。
  2. 在配置实用程序中,展开 AppExpert,然后右键单击响应程序,然后单击 启用响应程序功能

在 Citrix ADC 设备上创建 HTTP 标注

使用下表所示的参数设置创建 HTTP 标注 HTTP-标注-3。有关创建 HTTP 标注的更多信息,请参阅 配置 HTTP 标注

表 1. HTTP-标注-3 的参数和值

参数 名称
名称 Policy-Responder-3  

参数

名称

HTTP-Callout-3

接收标注请求的服务器

IP 地址

10.103.9.95

端口

80

请求发送到服务器

方法

GET

主机表达式

10.102.3.95

URL Stem 表达式

“/cgi-bin/authenticate.pl”

标题

名称

请求

值表达式

标注请求

参数

名称

用户名

值表达式

HTTP.REQ.HEADER(“Username”).VALUE(0)

名称

密码

值表达式

HTTP.REQ.HEADER(“Password”).VALUE(0)

服务器响应

返回类型

TEXT

从响应中提取数据的表达式

HTTP.RES.BODY(100)

创建响应程序策略以分析响应

创建响应程序策略-响应程序-3,该策略将检查来自标注服务器的响应,如果源 IP 地址已被列入黑名单,则重置连接。使用下表中显示的参数设置创建策略。虽然您可以在策略子节点中创建响应程序策略,然后使用 响应程序策略管理器将其全局绑定, 但本演示使用 响应程序策略管理器创建响应程序策略并在全局范围内绑定策略。

表 2. Policy-Responder-3 的参数和值

参数
名称 Policy-Responder-3
操作 RESET
Undefined-Result-Action -Global undefined-result action-
表达式 “HTTP.REQ.HEADER(\“Request\”).EQ(\“Callout Request\”).NOT && SYS.HTTP_CALLOUT(HTTP-Callout-3).CONTAINS(\“Authentication Failed\”)”

使用配置实用程序创建响应程序策略并将其全局绑定

  1. 导航至应 AppExpert > 响应程序
  2. 在详细信息窗格的策略管理器下,单击响应程序策略管理器
  3. 响应程序策略管理器对话框中,单击覆盖全局
  4. 单击插入策略,然后在策略名称列中单击新建策略
  5. 在“创建响应程序策略”对话框中,执行以下操作:

    1. 在名称中,键入 Policy-Responder-3。
    2. 在操作中,选择 重置
    3. 在“未定义结果操作”中,选择“全局未定义结果操作”。
    4. 在“表 达式”文本框中,键入:
    "HTTP.REQ.HEADER("Request").EQ("Callout Request").NOT && SYS.HTTP_CALLOUT(HTTP-Callout-3).CONTAINS("Authentication Failed")"
    <!--NeedCopy-->
    
    1. 单击 Create(创建),然后单击 Close(关闭)。
  6. 单击应用更改,然后单击关闭

在远程服务器上创建 HTTP 标注代理

现在需要在远程标注服务器上创建 HTTP 标注代理。HTTP 标注代理接收来自 Citrix ADC 设备的标注请求并作出相应响应。标注代理是每个部署都不同的脚本,编写时必须考虑到服务器规范,例如数据库类型和支持的脚本语言。

下面是用于验证提供的用户名和密码是否有效的示例标注代理伪代码。代理可以用您选择的任何编程语言实现。伪代码只能用作开发标注代理的指南。您可以在程序中构建其他功能。

使用伪代码验证提供的用户名和密码

  1. 接受请求中提供的用户名和密码,并对其进行适当的格式化。
  2. 连接到包含所有有效用户名和密码的数据库。
  3. 根据您的数据库检查提供的凭据。
  4. 根据 HTTP 标注的要求设置响应格式。
  5. 将响应发送到 Citrix ADC 设备。
用例:访问控制和身份验证