跳到主要内容

JEP 113:MS-SFU Kerberos 5 扩展

QWen Max 中英对照

概述

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

目标

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

动机

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

此外,使用标准的 Kerberos 5 委派(微软称之为开放式委派),一旦你授予一个服务账户委派的能力,它就可以委派给任何服务。这意味着在使用此权限时需要非常小心。另一方面,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 Open Specification
  • 其他:无其他已知影响