java - 如何使用自定义 PolicySpi

标签 java security permissions policy

我正在尝试实现自定义 java.security.Permission 类型,该类型应在运行时检查(因此没有策略文件,但在代码中)。此检查由 java.security.Policy 完成。我知道我应该为此实现自己的 java.security.PolicySpi

我找不到任何关于如何初始化和使用 PolicySpi 的解释,或者有更好的方法吗?

最佳答案

检查权限

在您的问题中,您声明您希望使用 java.security.Policy 检查权限,但不使用 spi.policy 文件。

来自PolicySpi API ,你可以看到一个PolicySpi对象有4个方法:

  1. engineGetPermissions(CodeSource codesource)
  2. engineGetPermissions(ProtectionDomain domain)
  3. engineImplies(ProtectionDomain domain, Permission permission)
  4. engineRefresh()

但是,您可能不需要 PolicySpi,因为有更简单的解决方案来检查权限。

参见:

由于您没有指定您将授予哪种权限,我假设它是关于 java.security.CodeSource 的权限。对象。

检查文件的所有当前权限:

public static void main(String[] args) {

    CodeSource source;

    try {
      source = new CodeSource(new URL("file:/c:/*"), (java.security.cert.Certificate[]) null);

      Policy policy = Policy.getPolicy();
      System.out.println(policy.getPermissions(source));

    } catch (IOException e) {
      e.printStackTrace();
    }
  }

SecurityManager checkPermission() 的一个很好的例子是 this tutorial .

用于检查具体FilePermission s,你可以使用:

FilePermission perm = new FilePermission("path/file", "read");
AccessController.checkPermission(perm);

授予权限

可以在运行时授予权限 java.lang.RuntimePermission .

有关如何授予文件权限的其他示例,我建议您阅读以下内容:


这应该会给你带来很长的路要走!祝你好运!

关于java - 如何使用自定义 PolicySpi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22016669/

相关文章:

c++ - 我需要帮助开发多态引擎 - 指令依赖树

shell - New-PSDrive:找不到网络路径

java - Lambda 与 SNS -> SQS AWS

java - 通过返回语句调用私有(private)方法java

java - 数组列表中的排序

java - WebSocket 安全 Java 配置

java - Eclipse Maven 失败

Delphi 7 TIdFTP FTP安全(密码保护)

android - 从通过路由器连接的Android设备访问Wamp localhost

android - unity3d中实现Android 6.0权限