跳到主要内容

JEP 184:HTTP URL 权限

QWen Max 中英对照

概述​

定义一种新型的网络权限,该权限通过 URL 而不是低级 IP 地址来授予访问权限。

动机​

目前,指定网络权限的唯一方法是使用 java.net.SocketPermission 类,该类有两个主要缺点:

  1. 套接字权限控制着低级 TCP 连接的建立。因此,它们无法区分对某个主机的 HTTP 连接(可能是被允许的)和对该同一主机的其他类型 TCP 连接(可能不被允许)。

  2. 套接字权限基于 IP 地址而不是主机名进行操作。这使得无法区分托管在同一物理服务器上、相同 IP 地址下的虚拟 HTTP 服务器。即使两个这样的服务器拥有不同的域名,SocketPermission 实例也无法用于允许访问其中一个服务器而禁止访问另一个服务器。

描述​

此特性将定义一种更高级别的、特定于 HTTP 或可能更广泛地适用于任意 URL 模式的权限类型。该类能够通过 HTTP 请求方法(GET、POST、PUT 等)以及 URL 的模式、授权和路径组件来表达权限。进行权限检查或比较权限对象的相等性时,无需执行 DNS 查询。

HTTP 协议处理器将检查调用栈中的这些新权限,并使用 有限的 doPrivileged() 功能,它会有效地将 URL 权限转换为实际目标的 SocketPermission。

测试​

此特性引入了一个新类,可以使用 JDK 内置的 HTTP 服务器对其进行测试。针对该类本身的单元测试,即用于测试 implies() 等公共方法的测试,可以直接编写。此特性的工程工作将包括这两种类型的测试。

依赖​

此特性依赖于 JEP 140: Limited doPrivileged。

影响​

  • 安全性:引入了一种新的安全权限。有限的 doPrivileged() 的使用应能降低安全问题的风险。