第 2 部分将介绍如何使用 DataPower 自定义样式表对象,以一种更加动态的方式为一个 Kerberos 后端服务器配置一个网关。
作为 DataPower 支持小组的成员,我们接触的客户常常需要将其客户端应用程序连接到受 Kerberos 身份验证保护的后端服务器。不可避免地,这些客户中很大一部分都有关于如何配置网关或代理来支持此类型的客户端和服务器解决方案的疑问。Kerberos 技术在第一次设置时可能难以理解且复杂,这就可能解释了为什么与此主题相关的问题频率这么高。
Kerberos 解决方案
许多文章都出色地概述了 Kerberos,介绍了 Kerberos 安全模型中的各种组件和发生的各种交互。我们假设读者已对 Kerberos 安全性知识有了基本的了解。我们将重点介绍 DataPower 配置直接需要的 Kerberos 相关活动。我们希望这些文章的推出,有助于在尝试确定如何在 DataPower 中设计和实现 Kerberos 相关解决方案时避免延误和混淆。
解决方案场景
我们将在第一篇文章中使用的场景包含一位客户,它有一组需要连接到客户后端服务器上的一个 Web 应用程序的客户端。这个 Web 应用程序通过 Kerberos 身份验证进行保护。但是,传入的客户端未通过 Kerberos 进行保护或进行身份验证。在我们的示例中,将假设客户端通过基本的身份验证和一个轻量级目录">访问协议 (LDAP) 服务器进行身份验证,但它可能是多种身份验证形式中的一种(注意:可能会介绍一些 LDAP 相关的信息,因为 LDAP 通常会与 Kerberos 结合使用)。尽管我们通常在使用基本身份验证时使用 SSL,但为简单起见,我们不会在本示例中设置它。
为了允许这些非 Kerberos 客户端与我们受 Kerberos 保护的 Web 应用程序通信和访问它,您将在 DataPower 中设置一个多协议网关。此网关定义为接受传入的客户端请求作为 HTTP GET 请求、身份验证,并根据客户端传入的凭证对客户端进行授权,然后将客户端的请求提交到后端服务器,通过使用一个 Kerberos 令牌对后端服务器进行身份验证来完成此操作。从后端服务器返回的响应然后将从 DataPower 传回到请求客户端。参见图 1。
图 1. 解决方案场景概述图
Kerberos 交互
在这个示例场景中,我们使用 WebSphere Application Server(以下称为 Application Server)作为后端服务器来托管我们的 Web 应用程序。该 Web 应用程序将是随 Application Server 提供的样例 “snoop” 应用程序。这个 Application Server 配置为支持 Kerberos 身份验证,所以,如果没有正确的 Kerberos 服务票证,将无法访问 Web 应用程序。作为 Kerberos 身份验证的一部分,Application Server 能够访问一个包含服务主体名称 (SPN) 和相应的私钥的 Kerberos keytab 文件。拥有对此 keytab 文件的访问权限,Application Server 能够处理已由密钥分发中心 (KDC) 验证、并已收到一个 Kerberos 服务票证以允许它们与 Web 应用程序交谈的传入客户端请求。
为了消除任何混淆,DataPower 与后端服务器之间的这一交互的一个重要方面是,对 Application Server 的所有客户端请求将由 DataPower 通过单个已验证的 Kerberos 用户 ID 发送。DataPower 的所有传入请求首先通过它们的 LDAP 凭证进行验证和授权。如果用户通过了这个验证或授权阶段,它们将被视为访问 Web 应用程序的合法用户。在此阶段,如果有需要,可能从 Web 应用程序访问权限中筛除某些用户。否则,完全可以通过单个 Kerberos 用户 ID 将所有请求发送到 Web 应用程序。
如果我们的 Web 应用程序更加复杂,且确实需要实际的客户端用户 ID,那么一个选择是将该用户 ID 作为 SOAP 消息的一部分传递到 Web 应用程序。另一个选择将在本系列的下一篇文章中讨论。但现在在本文中,所有客户端请求都使用单个映射的 Kerberos 用户 ID 发送到受 Kerberos 保护的 Web 应用程序。