JEP 113:MS-SFU Kerberos 5 扩展
概括
将MS-SFU 扩展添加到 JDK 的 Kerberos 5 实现。
目标
- 实施 MS-SFU S4U2self 协议
- 实施 MS-SFU S4U2proxy 协议
- 确保该实现可与当前的 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 功能。
测试
- JDK 内的功能测试。 S4U对测试KDC的支持
- 与 Microsoft Active Directory 和 MIT 的 Kerberos 5 实现的互操作测试。
影响
- JCP:对JCP没有影响
- 其他 JDK 组件:对其他 JDK 组件没有影响
- 兼容性:最小
- 安全性:不影响安全性
- 便携性:不影响便携性
- 用户界面:无图形用户界面
- CCC:新的 JGSS-API,最有可能是 GSSContext 的新方法,可能是新的配置文件和系统属性
- 文档:JGSS 部分中的新文档/教程
- 国际化:影响最小,可能会添加新的错误消息
- 本地化:影响最小,可能会添加新的错误消息
- 法律:MS-SFU 根据Microsoft 开放规范发布
- 其他:没有已知的其他影响