跳到主要内容

JEP 113:MS-SFU Kerberos 5 扩展

概括

将MS-SFU 扩展添加到 JDK 的 Kerberos 5 实现。

目标

  1. 实施 MS-SFU S4U2self 协议
  2. 实施 MS-SFU S4U2proxy 协议
  3. 确保该实现可与当前的 MS 和 MIT 实现互操作。

动机

在典型的网络服务中,前端(例如Web服务器)通常需要代表客户端访问后端(例如数据库服务器)。Kerberos 5支持委派,但要求所有层都使用 Kerberos。在某些情况下,客户端和前端之间的身份验证不是在 Kerberos 中执行的(例如,客户端使用摘要身份验证登录到 Web 服务器),并且没有要委派的 Kerberos 凭据。 Microsoft 定义了用户服务 (S4U) 扩展,以便前端仍然可以在没有客户端凭据的情况下代表客户端访问后端。

此外,通过标准 Kerberos 5 委派(Microsoft 称为开放委派),一旦您授予服务帐户委派能力,它就可以委派给任何服务。这意味着人们需要非常小心地对待这一特权。另一方面,MS-SFU 委派(微软称之为约束委派)要安全得多。在这里,管理员可以精确控制特定服务可以委托给哪些服务。

Microsoft 从 Windows Server 2003 开始使用 S4U,最近 MIT Kerberos 5 实现(在 krb5-1.8 中)也支持该功能。

描述

S4U 包括 RFC 4120 中定义的原始 Kerberos 协议的两个扩展:Service-for-User-to-Self (S4U2self),它允许前端服务代表用户获取其自身的 Kerberos 服务票证,以及 Service- for-User-to-Proxy (S4U2proxy),这使其能够代表用户获取第二个后端服务的服务票证。

总的来说,这两个扩展使前端服务能够代表用户获取 Kerberos 服务票证。生成的服务票可用于:

  • 请求服务自己的信息。
  • 模拟用户的服务计算机本地访问控制。
  • 冒充用户请求其他服务。

我们将提供一些新的公共 JGSS-API 来支持此功能。还可能添加新的配置文件和/或系统属性。

备择方案

我们还可以增强本机 JGSS 提供程序,以利用本机 Kerberos 实现中的现有 S4U 功能。

测试

  1. JDK 内的功能测试。 S4U对测试KDC的支持
  2. 与 Microsoft Active Directory 和 MIT 的 Kerberos 5 实现的互操作测试。

影响

  • JCP:对JCP没有影响
  • 其他 JDK 组件:对其他 JDK 组件没有影响
  • 兼容性:最小
  • 安全性:不影响安全性
  • 便携性:不影响便携性
  • 用户界面:无图形用户界面
  • CCC:新的 JGSS-API,最有可能是 GSSContext 的新方法,可能是新的配置文件和系统属性
  • 文档:JGSS 部分中的新文档/教程
  • 国际化:影响最小,可能会添加新的错误消息
  • 本地化:影响最小,可能会添加新的错误消息
  • 法律:MS-SFU 根据Microsoft 开放规范发布
  • 其他:没有已知的其他影响