ADC

NetScaler 如何实现 Kerberos 进行客户端身份验证

重要

只有 NetScaler 9.3 nCore 版本或更高版本支持 Kerberos/NTLM 身份验证,它只能用于身份验证、授权和审计流量管理虚拟服务器。

NetScaler 通过以下方式处理 Kerberos 身份验证所涉及的组件:

密钥分发中心 (KDC)

在 Windows 2000 服务器或更高版本中,域控制器和 KDC 是 Windows Server 的一部分。如果 Windows Server 已启动并正在运行,则表示域控制器和 KDC 已配置。KDC 也是 Active Directory 服务器。

注意

所有 Kerberos 交互均通过 Windows Kerberos 域控制器进行验证。

身份验证服务和协议协商

NetScaler 设备支持在身份验证、授权和审计流量管理身份验证虚拟服务器上进行 Kerberos 身份验证。如果 Kerberos 身份验证失败,NetScaler 将使用 NTLM 身份验证。

默认情况下,Windows 2000 服务器及更高版本的 Windows Server 版本使用 Kerberos 进行身份验证、授权和审计。如果您创建以 NEGATOCE 作为身份验证类型的身份验证策略,则 NetScaler 会尝试使用 Kerberos 协议进行身份验证、授权和审计,如果客户端的浏览器无法接收 Kerberos 票证,则 NetScaler 将使用 NTLM 身份验证。这个过程被称为谈判。

在以下任何情况下,客户端可能无法收到 Kerberos 票证:

  • 客户端不支持 Kerberos。
  • 未在客户端上启用 Kerberos。
  • 客户端在 KDC 以外的域中。
  • 客户端无法访问 KDC 上的访问目录。

对于 Kerberos/NTLM 身份验证,NetScaler 不使用 NetScaler 设备上本地存在的数据。

Authorization(授权)

流量管理虚拟服务器可以是负载平衡虚拟服务器或内容交换虚拟服务器。

审核

NetScaler 设备支持使用以下审核日志对 Kerberos 身份验证进行审计:

  • 对流量管理终端用户活动的完整审计跟踪
  • SYSLOG 和高性能 TCP 日志记录
  • 完成对系统管理员的审计跟踪
  • 所有系统事件
  • 可编写脚本的日志格式

支持的环境

Kerberos 身份验证不需要 NetScaler 上的任何特定环境。客户端(浏览器)必须为 Kerberos 身份验证提供支持。

高可用性

在高可用性设置中,只有活动的 NetScaler 加入域。如果发生故障转移,NetScaler lwagent 守护程序会将辅助 NetScaler 设备加入到域中。此功能不需要特定的配置。

Kerberos 身份验证过程

下图显示了 NetScaler 环境中 Kerberos 身份验证的典型过程。

图 1. NetScaler 上的 Kerberos 身份验证流程

NetScaler 上的 Kerberos 身份验证

Kerberos 身份验证分以下几个阶段进行:

客户端向 KDC 验证自己的身份

  1. NetScaler 设备接收来自客户端的请求。
  2. NetScaler 设备上的流量管理(负载平衡或内容交换)虚拟服务器向客户端发送了挑战。
  3. 为了应对挑战,客户将获得一张 Kerberos 门票。
    • 客户端向 KDC 的身份验证服务器发送票证发放请求 (TGT),并接收 TGT。(参见图“Kerberos 身份验证过程”中的 3、4。)
    • 客户端将 TGT 发送到 KDC 的票证授予服务器并收到 Kerberos 票证。(参见图中的“Kerberos 身份验证流程”中的 5、6。)

注意

如果客户端已经有一张有效期尚未过期的 Kerberos 票证,则无需进行上述身份验证过程。此外,支持 SPNEGO 的 Web Services、.NET 或 J2EE 等客户端会获得目标服务器的 Kerberos 票证,创建 SPNEGO 令牌,并在发送 HTTP 请求时将令牌插入到 HTTP 标头中。它们不经过客户端身份验证过程。

客户请求服务。

  1. 客户端将包含 SPNEGO 令牌和 HTTP 请求的 Kerberos 票证发送到 NetScaler 上的流量管理虚拟服务器。SPNEGO 令牌具有必要的 GSSAPI 数据。
  2. NetScaler 设备在客户端和 NetScaler 之间建立了安全上下文。如果 NetScaler 无法接受 Kerberos 票证中提供的数据,则要求客户端获取另一张票证。这个循环会一直持续到 GSSAPI 数据可接受并且安全上下文建立为止。NetScaler 上的流量管理虚拟服务器充当客户端和物理服务器之间的 HTTP 代理。

NetScaler 设备完成了身份验证。

  1. 安全上下文完成后,流量管理虚拟服务器将验证 SPNEGO 令牌。
  2. 虚拟服务器从有效的 SPNEGO 令牌中提取用户 ID 和 GSS 凭据,并将它们传递给身份验证守护程序。
  3. 成功的身份验证完成 Kerberos 身份验证。
NetScaler 如何实现 Kerberos 进行客户端身份验证