跳到主要内容

JEP 184:HTTP URL 权限

概括

定义一种新型网络权限,根据 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()应该限制安全问题的风险。