用例:访问控制和身份验证
在高安全区域中,在客户端访问资源之前,必须对用户进行外部身份验证。在 NetScaler 设备上,您可以使用 HTTP 调用通过评估提供的凭据对用户进行外部身份验证。在此示例中,假设客户端通过请求中的 HTTP 标头发送用户名和密码。但是,可以从 URL 或 HTTP 正文中获取相同的信息。
要实现此配置,必须执行以下任务:
- 在 NetScaler 设备上启用响应程序功能。
- 在设备上创建 HTTP 标注,并使用有关外部服务器和其他必需参数的详细信息对其进行配置。
- 配置响应程序策略以分析响应,然后全局绑定策略。
- 在远程服务器上创建呼出代理。
启用响应程序
必须先启用响应程序功能,然后才能在 NetScaler 设备上使用该功能。
使用配置实用程序启用响应程序
- 确保安装了响应者许可证。
- 在配置实用程序中,展开 AppExpert,右键单击 Responder,然后单击“启用响应程序功能”。
在 NetScaler 设备上创建 HTTP 标注
使用下表所示的参数设置创建 HTTP 标注 HTTP-标注-3。有关创建 HTTP 标注的更多信息,请参阅 配置 HTTP 标注。
表 1. HTTP-Callout-3 的参数和值
| 参数 | 值 | 名称 |
|---|---|---|
| 名称 | Policy-Responder-3 |
参数
值
名称
HTTP-Callout-3
接收呼出请求的服务器:
IP 地址
10.103.9.95
Port(端口)
80
发送到服务器的请求:
Method(方法)
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)
创建响应者策略以分析响应
创建响应程序策略 Policy-Responder-3,该策略将检查呼叫服务器的响应,如果源 IP 地址已被列入黑名单,则重置连接。使用下表所示的参数设置创建策略。虽然您可以在“ 策略”子节点中创建响应者策略,然后使用 Responder Policy Manager 将其全局绑定,但此演示使用 Responder Policy Manager 创建响应者策略并在全局绑定策略。
表 2. Policy-Responder-3 的参数和值
| 参数 | 值 |
|---|---|
| 名称 | Policy-Responder-3 |
| 操作 | RESET |
| 未定义的结果操作 | -全局未定义结果操作- |
| 表达式 | “HTTP.REQ.HEADER(\“Request\”).EQ(\“Callout Request\”).NOT && SYS.HTTP_CALLOUT(HTTP-Callout-3).CONTAINS(\“Authentication Failed\”)” |
使用配置实用程序创建响应程序策略并将其全局绑定
- 导航到 AppExpert > 响应程序。
- 在详细信息窗格的“策略管理器”下,单击“响应程序策略管理器”。
- 在“响应方策略管理器”对话框中,单击“覆盖全局”。
- 单击 插入策略,然后在 策略名称 列中,单击 新建策略。
-
在“创建响应程序策略”对话框中,执行以下操作:
- 在名称中,键入 Policy-Responder-3。
- 在“操作”中,选择“重置”。
- 在未定义结果操作中,选择全局未定义结果操作。
- 在 表达式 文本框中,键入:
"HTTP.REQ.HEADER("Request").EQ("Callout Request").NOT && SYS.HTTP_CALLOUT(HTTP-Callout-3).CONTAINS("Authentication Failed")" <!--NeedCopy-->- 单击“创建”,然后单击“关闭”。
- 单击“应用更改”,然后单击“关闭”。
在远程服务器上创建 HTTP 呼出代理
现在,您需要在远程呼出服务器上创建 HTTP 调用代理。HTTP 呼出代理接收来自 NetScaler 设备的呼出请求并做出相应的响应。callout 代理脚本因部署而异,在编写时必须考虑服务器规格,例如支持的数据库类型和脚本语言。
以下是 callout 代理伪代码示例,用于验证提供的用户名和密码是否有效。该代理可以用您选择的任何编程语言来实现。伪代码只能用作开发 callout 代理的指南。您可以在程序中构建其他功能。
使用伪代码验证提供的用户名和密码
- 接受请求中提供的用户名和密码,并对其进行相应的格式化。
- 连接到包含所有有效用户名和密码的数据库。
- 对照您的数据库检查提供的凭据。
- 按照 HTTP 调用的要求格式化响应。
- 将响应发送到 NetScaler 设备。