跳到主要内容

JEP 184:HTTP URL 权限

QWen Max 中英对照

概述

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

动机

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

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

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

描述

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

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

测试

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

依赖

此特性依赖于 JEP 140: Limited doPrivileged

影响

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