对于安全性的 Kerberos (KRB5) 认证机制支持
Kerberos 认证机制启用与其他支持 Kerberos 认证的应用程序(例如 .NET、DB2® 和其他应用程序)的互操作性。它提供了可互操作的单点登录 (SSO) 端到端解决方案并保存原始请求者标识。
什么是 Kerberos?
Kerberos 已历经时间的考验,现在为 V5.0。Kerberos 享有广泛的平台支持(例如 Windows、Linux、Solaris、AIX® 和 z/OS®),部分原因是 Kerberos 源代码可从其发源地麻省理工学院 (MIT) 免费下载。
Kerberos 由以下三部分组成:客户机、服务器以及可信的第三方(称为 Kerberos 密钥分发中心,KDC)。KDC 提供认证和凭单授予服务。
KDC 为其领域中所有安全性主体维护用户帐户的数据库或存储库。大量 Kerberos 分发操作对 Kerberos 主体和策略 DB 使用基于文件的存储库,其他分发操作使用轻量级目录访问协议 (LDAP) 作为存储库。
Kerberos 不支持任何概念的组(即,iKey 组或者用户或主体组)。KDC 为其帐户数据库中每个主体维护长期密钥。此长期密钥派生自该主体的密码。仅该主体表示的 KDC 和用户应该知道该长期密钥或密码的内容。
将 Kerberos 用作认证机制的益处
将 Kerberos 用作 WebSphere Application Server 的认证机制的好处包括:
- Kerberos 协议是一项标准。这会启用与其他支持 Kerberos 认证的应用程序(例如 .NET、DB2 和其他应用程序)的互操作性。它提供了可互操作的单点登录 (SSO) 端到端解决方案并保存原始请求者标识。
- 当使用 Kerberos 认证时,用户明文密码永不遗留在用户机器上。用户通过使用用户密码的单向散列值来进行认证并从 KDC 获取 Kerberos 凭单授予凭单 (TGT)。用户还会通过使用该 TGT 从 KDC 获取 Kerberos 服务凭单。会将表示客户机标识的 Kerberos 服务凭单发送至 WebSphere Application Server 以进行认证。
- Java 客户机可使用 Kerberos 凭证高速缓存来参与 Kerberos SSO,以向 WebSphere Application Server 进行认证。
- 使用 HTTP 协议的 J2EE、Web Service、.NET 和 Web 浏览器客户端可使用“简单且受保护的 GSS-API 协商机制” (SPNEGO) 令牌向 WebSphere Application Server 进行认证,并且通过使用 SPNEGO Web 认证来参与 SSO。对作为 Web 认证服务的 SPNEGO 的支持是本发行版的 WebSphere Application Server 的新增内容。
请参阅使用 SPNEGO Web 认证针对 HTTP 请求进行单点登录以了解更多信息。
- WebSphere Application Server 可以同时支持 Kerberos 和轻量级第三方认证 (LTPA) 认证机制。
- 提供了使用 Kerberos 认证的服务器到服务器通信。
单个 Kerberos 领域环境中的 Kerberos 认证
WebSphere Application Server 支持在单个 Kerberos 领域环境中进行 Kerberos 认证,如下图中所示:

当 WebSphere Application Server 接收到 Kerberos 或 SPNEGO 令牌以进行认证时,它会使用 Kerberos 服务主体 (SPN) 来与请求者建立安全上下文。如果建立了安全上下文,那么 WebSphere Kerberos 登录模块会抽取客户机 GSS 委派凭证,根据 Kerberos 凭证创建 Kerberos 认证令牌,然后将它们放置到具有其他令牌的客户机主体集中。
如果服务器必须使用下游服务器或后端资源,那么它会使用客户机 GSS 委派凭证。如果下游服务器不支持 Kerberos 认证,那么服务器会使用 LTPA 令牌而不是 Kerberos 令牌。如果客户机未将 GSS 委派凭证包括在请求中,那么服务器会对下游服务器使用 LTPA 令牌。作为安全性属性传播功能的一部分,会将 Kerberos 认证令牌和主体传播至下游服务器。
如果 WebSphere Application Server 和 KDC 未使用同一用户注册表,那么可能需要 JAAS 定制登录模块,以将 Kerberos 主体名称映射至 WebSphere 用户名。
跨 Kerberos 领域环境或可信 Kerberos 领域环境中的 Kerberos 认证
WebSphere Application Server 还支持在跨 Kerberos 领域环境或者可信 Kerberos 领域环境中进行 Kerberos 认证,如下图中所示:

当 WebSphere Application Server 接收到 Kerberos 或 SPNEGO 令牌以进行认证时,它会使用 Kerberos 服务主体 (SPN) 来与请求者建立安全上下文。如果建立了安全上下文,那么 WebSphere Kerberos 登录模块会始终抽取客户机 GSS 委派凭证和 Kerberos 凭单,然后将它们放置到具有其他令牌的客户机主体集中。
如果服务器必须使用下游服务器或后端资源,那么它会使用客户机 GSS 委派凭证。如果下游服务器不支持 Kerberos 认证,那么服务器会使用 LTPA 令牌而不是 Kerberos 令牌。如果客户机未将 GSS 委派凭证包括在请求中,那么服务器会对下游服务器使用 LTPA 令牌。作为安全性属性传播功能的一部分,会将 Kerberos 认证令牌和主体传播至下游服务器。
如果 WebSphere Application Server 和 KDC 未使用同一用户注册表,那么可能需要 JAAS 定制登录模块,以将 Kerberos 主体名称映射至 WebSphere 用户名。
在本发行版的 WebSphere Application Server 中,新安全性的多个域仅在单元级别支持 Kerberos。所有 WebSphere Application Server 都必须由同一 Kerberos 领域使用。但是,支持 Kerberos 认证的客户机和/或后端资源(例如 DB2、.NET 服务器和其他资源)都可以具有其自己的 Kerberos 领域。仅支持对等和可传递的可信跨领域认证。必须为可信 Kerberos 域执行下列步骤:
- Kerberos 可信领域设置必须在每个 Kerberos KDC 上完成。请参阅 Kerberos Administrator and User's Guide,以获取有关如何设置 Kerberos 可信领域的更多信息。
- Kerberos 配置文件可能需要列示可信领域。
- 在管理控制台中通过单击 来添加 Kerberos 可信领域。
下图显示的 Java 和管理客户机使用 Kerberos 凭证高速缓存来凭借可信 Kerberos 领域中的 Kerberos 令牌向 WebSphere Application Server 进行认证:

- 客户机使用 Kerberos 凭证高速缓存(如果存在)。
- 客户机使用 Kerberos 凭证高速缓存来从领域 B KDC 为领域 A 请求跨领域凭单 (TGS_REQ)。
- 客户机使用跨领域凭单来从领域 A KDC 为 server1 请求 Kerberos 服务凭单 (TGS_REQ)。
- 从 KDC 返回的 Kerberos 令牌 (TGS_REP) 被添加至 CSIv2 消息认证令牌并发送至 server1 以进行认证。
- 服务器调用 Krb5LoginModuleWrapper 来使用服务器 Kerberos 服务主体名称 (SPN) 和 krb5.keytab 文件中的密钥与客户机建立安全上下文。如果服务器成功地与客户机建立安全上下文,那么它会始终抽取客户机 GSS 委派凭证和凭单,然后将它们放置到客户机主体集中。
- (可选)如果 KDC 和 WebSphere Application Server 未使用同一用户注册表,那么可能需要一个定制 JAAS 登录模块。
- 使用 WebSphere Application Server 的用户注册表来验证用户。
- 将结果(成功或失败)返回给客户机。
下图显示的 Java 和管理客户机使用 Kerberos 主体名称和密码来凭借 Kerberos 令牌向 WebSphere Application Server 进行认证:

- 客户机从 KDC 获取 Kerberos 授予凭单 (TGT)。
- 客户机使用 TGT 为 server1 获取 Kerberos 服务凭单 (TGS_REQ)。
- 从 KDC 返回的 Kerberos 令牌 (TGS_REP) 被添加至 CSIv2 消息认证令牌并发送至 server1 以进行认证。
- 服务器调用 Krb5LoginModuleWrapper 来使用服务器 Kerberos 服务主体名称 (SPN) 和 krb5.keytab 文件中的密钥与客户机建立安全上下文。如果服务器成功地与客户机建立安全上下文,那么它会始终抽取客户机 GSS 委派凭证和凭单,然后将它们放置到客户机主体集中。
- (可选)如果 KDC 和 WebSphere Application Server 未使用同一用户注册表,那么可能需要一个定制 JAAS 登录模块。
- 使用 WebSphere Application Server 的用户注册表来验证用户。
- 将结果返回给客户机。
下图显示服务器到服务器通信:

当 WebSphere Application Server 启动时,它会使用服务器标识和密码来登录到 KDC,然后获取 TGT。接着,它使用 TGT 来请求服务凭单,以便与另一服务器进行通信。如果 WebSphere Application Server 使用内部服务器标识而不是服务器标识和密码,那么会使用 LTPA 令牌来完成服务器到服务器通信。在前面的图中,发生了下列事件:
- WebSphere Application Server 1 对于在 WebSphere Application Server 2 中运行的 Enterprise JavaBeans (EJB) 调用 foo() 方法。
- Server1 使用 Server1 TGT 为 Server2 获取 Kerberos 服务凭单 (TGS_REQ)。
- 与步骤 2 相同。
- 从 KDC 返回的 Kerberos 令牌 (TGS_REP) 被添加至 CSIv2 消息认证令牌并发送至 Server2 以进行认证。
- Server2 调用 acceptSecContext() 方法来使用 server2 Kerberos 服务主体名称 (SPN) 和 krb5.keytab 文件中密钥与 server1 建立安全上下文。如果 server2 成功地与 server1 建立安全上下文,那么它会始终抽取 server1 GSS 委派凭证和凭单,然后将它们放置到主体集中。
- 使用 WebSphere 用户注册表来验证服务器标识。

将 Kerberos 设置为 WebSphere Application Server 的认证机制之前要考虑的事项
WebSphere Application Server 现在支持 HTTP 头中的 SPNEGO 令牌、Kerberos 令牌、LTPA 令牌以及 BasicAuth (GSSUP) 用于进行认证。
- 必须选择已启用 Kerberos 凭证的委派选项。请参阅使用管理控制台将 Kerberos 配置成认证机制,以获取有关此选项的更多信息。
- 客户机必须获取带有可转发、无地址及可更新标志的凭单授予凭单 (TGT),以便目标服务器可抽取客户机委派 Kerberos 凭证并将它用于访问下游服务器。
- 不能将具有地址的客户机 TGT 用于下游服务器、数据复制服务 (DRS) 高速缓存以及集群环境。
- 请查看 Kerberos KDC 平台,以确保它允许客户机委派 Kerberos。
- 对于长期运行的应用程序,客户机应该请求带有可更新标志的 TGT,以便目标服务器可继续使用委派 Kerberos。
- 对于长时间运行的应用程序,请确保 Kerberos 凭单至少在应用程序运行期间有效。例如,如果应用程序处理一个要耗用 5 分钟的事务,那么 Kerberos 凭单必须至少在 5 分钟之内有效。
- 对于同一林中 Active Directory 跨域信任,Kerberos 认证和 SPNEGO Web 认证都受支持。
- 为了让管理代理程序使用 Kerberos 认证机制,它必须与管理子系统概要文件交换
LTPA 密钥。
以下安全性定制属性应该设置为 true:com.ibm.websphere.security.krb.longLivedTicket。
- 如果您打算将客户机委派 Kerberos 凭证用于下游认证,请确保可以请求超过 10 分钟的服务凭单。如果客户机授权 Kerberos 凭证生存期少于 10 分钟,那么服务器将尝试更新此凭证。
- 通过使用下列 KDC,可获取 Tivoli® Access Manager 的完整端到端 Kerberos 支持:
- z/OS
- Microsoft(单领域或多领域)
- AIX
- Linux
- 现在,您可为 WebSphere Application Server 和瘦客户机配置和启用 Kerberos 跨领域。
- 带有 Kerberos 的 WebSphere Application Server 管理功能受下列事项限制:
- 用于灵活管理活动的首选认证机制是 Rivest Shamir Adleman (RSA) 认证机制(缺省情况下)。
- 在将 Kerberos 作为管理认证的情况下配置的作业管理器不支持跨 Kerberos 领域。它们必须与注册的节点在同一 Kerberos 领域中,或将管理认证设置为 RSA
- 虽然 Kerberos 认证受管理客户机(wsadmin 或 Java 客户机)支持,但是,您应该将同一 KDC 领域用作它管理的 WebSphere Application Server。否则,建议使用用户标识和密码。
- 当其中一些节点是 WebSphere Application Server R6.x 节点或更低版本节点时,混合单元 Kerberos 和 LTPA 配置不受支持。
用于 Kerberos 认证的支持信息
- 不在相同林中的外部域信任
- 同一林中的域信任
- Kerberos 领域信任
- 跨林信任
- 林外部信任
将 Kerberos 设置为 WebSphere Application Server 的认证机制
将 Kerberos 设置为纯 Java 客户机的认证机制
最终用户可以选择为纯 Java 客户机设置 Kerberos 认证机制。请参阅配置 Java 客户机以进行 Kerberos 认证以了解更多信息。