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

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

笔记:安全支持Kerberos由于添加了身份验证机制WebSphere® Application Server版本7.0 。 Kerberos 是一种成熟、灵活、开放式且非常安全的网络认证协议。 Kerberos 包括认证、相互认证、消息完整性和机密性以及委派功能。 可以在服务器端启用 Kerberos。 支持丰富的 Java™ 客户端使用Kerberos用于身份验证的令牌WebSphere Application Server

什么是 Kerberos?

Kerberos 已历经时间的考验,现在为 V5.0。 Kerberos享有广泛的平台支持(例如,对于 Windows, Linux®、索拉里斯、 AIX®, 和z/OS®)部分原因是Kerberos源代码可以从其最初创建地麻省理工学院 (MIT) 免费下载。

Kerberos 由以下三部分组成:客户机、服务器以及可信的第三方(称为 Kerberos 密钥分发中心,KDC)。 KDC 提供认证和凭单授予服务。

KDC 为其领域中所有安全性主体维护用户帐户的数据库或存储库。 大量 Kerberos 分发操作对 Kerberos 主体和策略 DB 使用基于文件的存储库,其他分发操作使用轻量级目录访问协议 (LDAP) 作为存储库。

Kerberos 不支持任何概念的组(即,iKey 组或者用户或主体组)。 KDC 为其帐户数据库中每个主体维护长期密钥。 此长期密钥派生自该主体的密码。 仅该主体表示的 KDC 和用户应该知道该长期密钥或密码的内容。

将 Kerberos 用作认证机制的益处

拥有的好处Kerberos作为认证机制WebSphere Application Server包括以下这些:

  • Kerberos 协议是一项标准。 这使得能够与其他应用程序(例如.NET、 DB2以及其他支持Kerberos验证。 它提供了可互操作的单点登录 (SSO) 端到端解决方案并保存原始请求者标识。
  • 当使用 Kerberos 认证时,用户明文密码永不遗留在用户机器上。 用户通过使用用户密码的单向散列值来进行认证并从 KDC 获取 Kerberos 凭单授予凭单 (TGT)。 用户还会通过使用该 TGT 从 KDC 获取 Kerberos 服务凭单。 这Kerberos代表客户端身份的服务票被发送到WebSphere Application Server进行身份验证。
  • Java 客户端可以参与Kerberos使用Kerberos要进行身份验证的凭证缓存WebSphere Application Server
  • J2EE 、Web 服务、使用 HTTP 协议的 .NET 和 Web 浏览器客户端可以使用简单且受保护的 GSS-API 协商机制 (SPNEGO) 令牌向WebSphere Application Server并使用 SPNEGO 网络身份验证参与 SSO。 此版本新增对 SPNEGO 作为 Web 身份验证服务的支持WebSphere Application Server

    阅读SPNEGO 单点登录了解更多信息。

  • WebSphere Application Server可以同时支持Kerberos和轻量级第三方认证(LTPA)认证机制。
  • 提供了使用 Kerberos 认证的服务器到服务器通信。

单个 Kerberos 领域环境中的 Kerberos 认证

WebSphere Application Server支持Kerberos单一身份验证Kerberosrealm环境如下图所示:

图 1。 单个 Kerberos 领域环境中的 Kerberos 认证
WebSphere Application Server支持Kerberos单一身份验证Kerberos领域环境

当。。。的时候WebSphere Application Server收到Kerberos或 SPNEGO 令牌进行身份验证,它使用Kerberos服务主体 (SPN) 与请求者建立安全上下文。 如果建立了安全上下文,则WebSphereKerberos登录模块提取客户端 GSS 委派凭证,创建Kerberos基于身份验证令牌Kerberos凭证,并将它们与其他令牌一起放置在客户端主题中。

如果服务器必须使用下游服务器或后端资源,那么它会使用客户机 GSS 委派凭证。 如果下游服务器不支持 Kerberos 认证,那么服务器会使用 LTPA 令牌而不是 Kerberos 令牌。 如果客户机未将 GSS 委派凭证包括在请求中,那么服务器会对下游服务器使用 LTPA 令牌。 作为安全性属性传播功能的一部分,会将 Kerberos 认证令牌和主体传播至下游服务器。

如果WebSphere Application Server和 KDC 不使用相同的用户注册表,那么JAAS可能需要自定义登录模块来映射Kerberos校长姓名WebSphere用户名。

跨 Kerberos 领域环境或可信 Kerberos 领域环境中的 Kerberos 认证

WebSphere Application Server也支持Kerberos交叉或受信任的身份验证Kerberosrealm环境如下图所示:

图 2。 跨 Kerberos 领域环境或可信 Kerberos 领域环境中的 Kerberos 认证
WebSphere Application Server也支持Kerberos交叉或受信任的身份验证Kerberos领域环境

当。。。的时候WebSphere Application Server收到Kerberos或 SPNEGO 令牌进行身份验证,它使用Kerberos服务主体 (SPN) 与请求者建立安全上下文。 如果建立了安全上下文,则WebSphereKerberos登录模块始终提取客户端 GSS 委派凭证,并且Kerberos票证并将它们与其他令牌一起放置在客户端主题中。

如果服务器必须使用下游服务器或后端资源,那么它会使用客户机 GSS 委派凭证。 如果下游服务器不支持 Kerberos 认证,那么服务器会使用 LTPA 令牌而不是 Kerberos 令牌。 如果客户机未将 GSS 委派凭证包括在请求中,那么服务器会对下游服务器使用 LTPA 令牌。 作为安全性属性传播功能的一部分,会将 Kerberos 认证令牌和主体传播至下游服务器。

如果WebSphere Application Server和 KDC 不使用相同的用户注册表,那么JAAS可能需要自定义登录模块来映射Kerberos校长姓名WebSphere用户名。

在此版本中WebSphere Application Server,新安全多域仅支持Kerberos在细胞水平上。 全部WebSphere Application Server必须由同一个Kerberos领域。 然而,客户端和/或后端资源(例如DB2 、.NET 服务器等)支持Kerberos身份验证可以有自己的Kerberos领域。 仅支持对等和可传递的可信跨领域认证。 必须为可信 Kerberos 域执行下列步骤:

  • Kerberos 可信领域设置必须在每个 Kerberos KDC 上完成。 请参阅 Kerberos Administrator and User's Guide,以获取有关如何设置 Kerberos 可信领域的更多信息。
  • Kerberos 配置文件可能需要列示可信领域。
  • 添加Kerberos在管理控制台中单击全球安全>CSIv2出站通信>受信任的身份验证领域 - 出站

下图显示了使用Kerberos要进行身份验证的凭证缓存WebSphere Application Server和Kerberos受信任的令牌Kerberos领域:

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

下图显示了使用Kerberos要验证的主体名称和密码WebSphere Application Server和Kerberos令牌(token):

图 4: 用一个Kerberos要验证的主体名称和密码WebSphere Application Server和Kerberos令牌
用一个Kerberos要验证的主体名称和密码WebSphere Application Server和Kerberos令牌。
在上图中,发生了下列事件:
  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. 可选地,自定义JAAS如果 KDC 和WebSphere Application Server不要使用相同的用户注册表。
  6. 使用用户注册表验证用户WebSphere Application Server
  7. 将结果返回给客户机。

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

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

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

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

    [z/OS]以下安全自定义属性应设置为真的: com.ibm.websphere.security.krb.longLivedTicket。

  • 如果您打算将客户机委派 Kerberos 凭证用于下游认证,请确保可以请求超过 10 分钟的服务凭单。 如果客户机授权 Kerberos 凭证生存期少于 10 分钟,那么服务器将尝试更新此凭证。
笔记:客户端, WebSphere Application Server并且KDC机器必须保持时钟同步。 最佳实践是使用时间服务器来使所有这些系统都保持同步。
对于此版本的WebSphere Application Server,请注意以下事项:
  • 完整的端到端Kerberos使用以下 KDC 可以获得 Tivoli® Access Manager 的支持:
    • z/OS
    • Microsoft(单领域或多领域)
    • AIX
    • Linux
  • 您现在可以配置并启用Kerberos跨领域WebSphere Application Server和瘦客户端。
  • WebSphere Application Server行政职能Kerberos受到以下限制:
    • 用于灵活管理活动的首选认证机制是 Rivest Shamir Adleman (RSA) 认证机制(缺省情况下)。
    • 在将 Kerberos 作为管理认证的情况下配置的作业管理器不支持跨 Kerberos 领域。 它们必须与注册的节点在同一 Kerberos 领域中,或将管理认证设置为 RSA
    • 尽管Kerberos管理客户端(wsadmin 或 Java 客户端)支持身份验证,您应使用与WebSphere Application Server它管理。 否则,建议使用用户标识和密码。
    • 混合细胞Kerberos并且当某些节点WebSphere Application Server发布6.x节点或更早版本。

用于 Kerberos 认证的支持信息

支持以下方案:
  • 不在相同林中的外部域信任
  • 同一林中的域信任
  • Kerberos 域信任
不支持以下方案:
  • 跨林信任
  • 林外部信任

将 Kerberos 设置为 WebSphere Application Server 的认证机制

您必须按照列出的顺序执行步骤配置Kerberos作为认证机制WebSphere Application Server建立Kerberos作为认证机制WebSphere Application Server
笔记:Kerberos服务器端的身份验证机制必须由系统管理员完成,而 Java 客户端的身份验证机制则由用户完成。 必须对 Kerberos 密钥表文件进行保护。

配置Kerberos作为纯 Java 客户端的身份验证机制

最终用户可以选择设置Kerberos纯Java客户端的身份验证机制。 阅读配置 Java 客户端Kerberos验证了解更多信息。

[8.5.5.19 或更高版本]

配置Kerberos作为 LDAP 的绑定身份验证机制

您可以设置Kerberos作为绑定身份验证机制绑定到 LDAP 服务器并执行用户和组搜索。 此绑定身份验证机制是简单绑定身份验证机制的替代,它使用绑定可分辨名称和绑定密码。

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

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