对于安全性的 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。 对于此发行版的 WebSphere Application Server,支持 SPNEGO 作为 Web 认证服务。
有关更多信息,请参阅 SPNEGO 单点登录 。
- 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 认证,如下图所示:

当 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 凭证高速缓存在可信 Kerberos 域中使用 Kerberos 令牌向 WebSphere Application Server 认证的 Java 和管理客户机:

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

- 客户机从 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
- 虽然管理客户机 (wsadmin 或 Java 客户机) 支持 Kerberos 认证,但您应该使用与其管理的 WebSphere Application Server 相同的 KDC 域。 否则,建议使用用户标识和密码。
- 当某些节点是 WebSphere Application Server Release 6.x 节点或更低版本时,不支持混合单元 Kerberos 和 LTPA 配置。
用于 Kerberos 认证的支持信息
- 不在相同林中的外部域信任
- 同一林中的域信任
- Kerberos 域信任
- 跨林信任
- 林外部信任
将 Kerberos 设置为 WebSphere Application Server 的认证机制
将 Kerberos 设置为纯 Java 客户机的认证机制
最终用户可以选择为纯 Java 客户机设置 Kerberos 认证机制。 有关更多信息,请参阅 配置 Java 客户机以进行 Kerberos 认证 。
将 Kerberos 设置为 LDAP 的绑定认证机制
您可以将 Kerberos 设置为绑定认证机制,以绑定到 LDAP 服务器并执行用户和组搜索。 此绑定认证机制是使用绑定专有名称和绑定密码的简单绑定认证机制的替代方法。
要将 Kerberos 配置为联合存储库中 LDAP 服务器的绑定认证机制,请完成有关在联合存储库配置中配置 LDAP 的主题中的步骤。
要将 Kerberos 配置为独立 LDAP 服务器的绑定认证机制,请完成有关配置 LDAP 用户注册表的主题中的步骤。