对于安全性的 Kerberos (KRB5) 认证机制支持

Kerberos 认证机制支持与支持 Kerberos 认证的其他应用程序 (例如 .NET , DB2® 和其他应用程序) 的互操作性。 它提供了可互操作的单点登录 (SSO) 端到端解决方案并保存原始请求者标识。

注: 安全性支持 Kerberos ,因为已为 WebSphere® Application Server V 7.0添加认证机制。 Kerberos 是一种成熟、灵活、开放式且非常安全的网络认证协议。 Kerberos 包括认证、相互认证、消息完整性和机密性以及委派功能。 可以在服务器端启用 Kerberos。 支持使富 Java™ 客户机能够使用 Kerberos 令牌向 WebSphere Application Server进行认证。

什么是 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 认证,如下图所示:

图 1。 单个 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 认证,如下图所示:

图 2。 跨 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 配置文件可能需要列示可信领域。
  • 通过单击 全局安全性 > CSIv2 出站通信 > 可信认证域-出站在管理控制台中添加 Kerberos 可信域。

下图显示了使用 Kerberos 凭证高速缓存通过可信 Kerberos 域中的 Kerberos 令牌向 WebSphere Application Server 认证的 Java 和管理客户机:

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

下图显示了使用 Kerberos 主体名称和密码向 WebSphere Application Server 认证 Kerberos 令牌的 Java 和管理客户机:

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

下图显示服务器到服务器通信:

图 5。 服务器到服务器通信
当 WebSphere Application Server 启动时,它使用服务器标识和密码登录到 KDC ,然后获取 TGT。 接着,它使用 TGT 来请求服务凭单,以便与另一服务器进行通信。 如果 WebSphere Application Server 使用内部服务器标识而不是服务器标识和密码,那么将使用 LTPA 令牌完成服务器到服务器的通信。

WebSphere Application Server 启动时,它使用服务器标识和密码登录到 KDC ,然后获取 TGT。 接着,它使用 TGT 来请求服务凭单,以便与另一服务器进行通信。 如果 WebSphere Application Server 使用内部服务器标识而不是服务器标识和密码,那么将使用 LTPA 令牌完成服务器到服务器的通信。 在上图中,发生了下列事件:

  1. WebSphere Application Server 1 在 WebSphere Application Server 2 中运行的 Enterprise JavaBeans (EJB) 上调用方法 foo ()。
  2. Server1 使用 Server1 TGT 为 Server2 获取 Kerberos 服务凭单 (TGS_REQ)。
  3. 与步骤 2 相同。
  4. 从 KDC 返回的 Kerberos 令牌 (TGS_REP) 被添加至 CSIv2 消息认证令牌并发送至 Server2 以进行认证。
  5. Server2 调用 acceptSecContext () 方法以使用 server2 Kerberos 服务主体名称 (SPN) 和 krb5.keytab 文件中的密钥通过 server1 建立安全上下文。 如果 server2 成功地与 server1 建立安全上下文,那么它会始终抽取 server1 GSS 委派凭证和凭单,然后将它们放置到主体集中。
  6. 将使用 WebSphere 用户注册表验证服务器标识。
避免麻烦: 如果 Java 客户机应用程序和应用程序服务器存在于同一机器上,并且它们使用不同的 Kerberos 域名,那么运行时将使用 Kerberos 配置文件中的缺省域名。 此外,您可以在登录过程中指定领域名。
避免麻烦: 可以在多个 KDC 环境中配置 Kerberos 和 LTPA 认证。 基本认证可以由密码和不带 Kerberos 域名的短名称组成。 对于此基本认证, domain_realm 元素与 default_realm 元素的组合确定 Kerberos 客户机用于认证请求的 KDC。 不属于确定的 KDC 的用户必须使用标准 Kerberos 主体名称 (例如, Bob@myKerberosRealm. ) 登录。

将 Kerberos 设置为 WebSphere Application Server 的认证机制之前要考虑的事项

WebSphere Application Server 现在支持 HTTP 头中的 SPNEGO 令牌, Kerberos 令牌, LTPA 令牌和 BasicAuth (GSSUP) 进行认证。

要为 Kerberos 解决方案提供端到端 Kerberos 和端到端 SPNEGO,请注意下列事项:
  • 必须选择已启用 Kerberos 凭证的委派选项。 有关此选项的更多信息,请参阅 使用管理控制台将 Kerberos 配置为认证机制
  • 客户机必须获取带有可转发、无地址及可更新标志的凭单授予凭单 (TGT),以便目标服务器可抽取客户机委派 Kerberos 凭证并将它用于访问下游服务器。
  • 不能将具有地址的客户机 TGT 用于下游服务器、数据复制服务 (DRS) 高速缓存以及集群环境。
  • 请查看 Kerberos KDC 平台,以确保它允许客户机委派 Kerberos。
  • 对于长期运行的应用程序,客户机应该请求带有可更新标志的 TGT,以便目标服务器可继续使用委派 Kerberos。
  • 对于长时间运行的应用程序,请确保 Kerberos 凭单至少在应用程序运行期间有效。 例如,如果应用程序处理一个要耗用 5 分钟的事务,那么 Kerberos 凭单必须至少在 5 分钟之内有效。
  • 对于同一林中 Active Directory 跨域信任,Kerberos 认证和 SPNEGO Web 认证都受支持。
  • 为了让管理代理程序使用 Kerberos 认证机制,它必须与管理子系统概要文件交换 LTPA 密钥。
  • 如果您打算将客户机委派 Kerberos 凭证用于下游认证,请确保可以请求超过 10 分钟的服务凭单。 如果客户机授权 Kerberos 凭证生存期少于 10 分钟,那么服务器将尝试更新此凭证。
注: 客户机, WebSphere Application Server 和 KDC 机器必须保持时钟同步。 最佳实践是使用时间服务器来使所有这些系统都保持同步。
对于此发行版的 WebSphere Application Server,请注意以下事项:
  • 使用以下 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 设置为 WebSphere Application Server 的认证机制 中列出的顺序执行这些步骤,以将 Kerberos 设置为 WebSphere Application Server的认证机制。
注: 服务器端的 Kerberos 认证机制必须由系统管理员完成,用户必须在 Java 客户机端完成。 必须对 Kerberos 密钥表文件进行保护。

将 Kerberos 设置为纯 Java 客户机的认证机制

最终用户可以选择为纯 Java 客户机设置 Kerberos 认证机制。 有关更多信息,请参阅 配置 Java 客户机以进行 Kerberos 认证

[9.0.5.7 或更高版本]

将 Kerberos 设置为 LDAP 的绑定认证机制

您可以将 Kerberos 设置为绑定认证机制,以绑定到 LDAP 服务器并执行用户和组搜索。 此绑定认证机制是使用绑定专有名称和绑定密码的简单绑定认证机制的替代方法。

要将 Kerberos 配置为联合存储库中 LDAP 服务器的绑定认证机制,请完成有关在联合存储库配置中配置 LDAP 的主题中的步骤。

要将 Kerberos 配置为独立 LDAP 服务器的绑定认证机制,请完成有关配置 LDAP 用户注册表的主题中的步骤。