当前位置: 首页 > 知识库问答 >
问题:

RMISecurityManager-加载客户端。政策

刘永望
2023-03-14

我想从文件客户端加载SecurityManager策略。政策我读到我能做到——贾瓦。安全策略=客户端。政策但我不想在命令行中指定这一点。我试图在属性文件中指定它。实际上我的代码抛出异常。如果没有命令行参数,我如何读取策略?

以下是我的代码片段:

prop.load(ClassLoader.getSystemResourceAsStream("config.properties"));
        prop.putAll(System.getProperties());//add Properties from command line

        RMISecurityManager rmi = new RMISecurityManager();
        if (System.getSecurityManager() == null) {
            System.setSecurityManager(rmi);
        }

        //Connect to server by RMIRegistry
        rmiRegistryAddress = prop.getProperty("rmi.registryaddress");
        logger.info("Klient: serwer szukany pod adresem: "+rmiRegistryAddress);
        ISerwer serwer = (ISerwer) Naming.lookup(rmiRegistryAddress + "/" + SERWER_REMOTE_OBJECT_NAME);

config.properties:

    rmi.registryaddress = rmi://192.168.2.3:1099
    #java.rmi.server.codebase=http://...
    java.security.policy=client.policy

客户政策:

grant codeBase "file:src/" {
    permission java.security.AllPermission;
};

例外情况:

JAVA安全AccessControlException:在java上拒绝访问(“java.net.SocketPermission”“192.168.2.3:1099”“连接,解析”)。安全AccessControlContext。java上的checkPermission(AccessControlContext.java:372)。安全访问控制器。在java上检查权限(AccessController.java:559)。lang.SecurityManager。java上的checkPermission(SecurityManager.java:549)。lang.SecurityManager。java上的checkConnect(SecurityManager.java:1051)。网插座在java上连接(Socket.java:574)。网插座在java上连接(Socket.java:528)。网插座(Socket.java:425)在java。网插座(Socket.java:208)太阳报。rmi。运输代理我是袜子工厂。在sun上创建Socket(RMIDirectSocketFactory.java:40)。rmi。运输代理这是一家袜子工厂。在sun上创建Socket(rmisMasterSocketFactory.java:147)。rmi。运输tcp。Tpendpoint。sun上的newSocket(TCPEndpoint.java:613)。rmi。运输tcp。TCP频道。在sun上创建连接(TCPChannel.java:216)。rmi。运输tcp。TCP频道。sun上的newConnection(TCPChannel.java:202)。rmi。服务器UnicastRef。sun的newCall(UnicastRef.java:341)。rmi。注册处。注册Impl_存根。在java上查找(未知源)。rmi。命名。在sr.warcaby上查找(Naming.java:101)。克利特。克利特。在sr.warcaby跑步(Klient.java:88)。克利特。克利特。main(Klient.java:73)

看来是那个客户。策略文件不知何故未被读取。

第二个问题:如何向本地代码授予所有权限?此路径(file: src/)不起作用。我想设置相对路径。

编辑:

我做了一些改变。现在程序工作,但不是我想要的。它给所有的权限代码从远程代码库,但我想只给一些权限远程代码。

变化:

系统。setProperties(道具)

grant codeBase”文件:/-“{permission java.security.AllPermission;}

java。安全policy=src/main/resources/client。政策java。rmi。服务器代码库=http://...somehttpaddress.../warcabycodebase-jar-with-dependencies.jar


共有1个答案

薛滨海
2023-03-14

这里没有任何东西能真正设定你的。属性文件作为系统属性。

注意:您需要设置java。安全策略安装安全管理器之前。

并且您根本不需要安装安全管理器,除非您使用的是RMI代码库功能,以及服务器提供的类。

 类似资料:
  • 我尝试将文件添加到configuration中,以访问站点。我在<code>系统中添加了以下行。属性文件: 之后,我重新启动了,但得到了相同的错误,。我使用keytool将文件转换为,并通过替换以前的行将以下行添加到同一文件中。 在这种情况下,错误消息也是相同的: 响应代码: 非 HTTP 响应代码: handshake_failure 我使用HTTP Client 4作为HTTP Sampler

  • 一些adapter支持过滤策略管理。 这意味着Casbin加载的策略是基于给定过滤器的存储策略的子集。 当解析整个策略成为性能瓶颈时,这将会允许在大型多租户环境中有效地执行策略。 要使用支持的adapter处理过滤后的策略,只需调用 LoadFilteredPolicy 方法。 过滤器参数的有效格式取决于所用的适配器。 为了防止意外数据丢失,当策略已经加载, SavePolicy 方法会被禁用。

  • 我正在尝试做一个HTTP发布到一个URL。后端需要一个文本字段和一个文件。我使用的是Android4.1(minSdkVersion=8,targetSdkVersion=15)。我已经看到了很多关于如何在android上执行此操作的示例(通过Java lib Apache Commons上传文件的简明示例)。但是,我注意到Android4.1附带的apache httpclient版本不存在Po

  • 问题内容: 我收到此错误: ASP.NET Ajax客户端框架加载失败 与错误: ‘Sys’未定义。 错误qppears出现在IE的底部(错误消息),仅当我在服务器上运行该站点时才会出现。在我的本地主机上一切正常。 我搬到新服务器,那里有问题。在我以前的服务器上,一切都很好。 问题来自ajax的SCRIPTMANAGER。 我该怎么办?web.config中是否有东西,或者托管公司是否需要安装东西

  • 在我的项目中,diffrent服务被部署为微服务,授权和身份验证在一个公共jar文件中处理,该文件作为依赖项添加到每个微服务项目中。 微服务之间的通信通过虚拟客户端完成 下面给出了这种服务的分级文件 在一个场景中,我强制使用OAuth库中的feign client来调用我的授权微服务,下面给出了jar的依赖文件 但是,当我用我的服务部署新的jar文件时,在我的jar文件中实现的假客户机不起作用,调

  • 我有一个基本的烧瓶应用程序上传图像文件到服务器,然后在网页上渲染。当多个客户端上传时,在当前的设计中,它们最终覆盖相同的静态资产。当在flask中处理来自多个客户端的上传时,最好的方法是什么?