0

5我之前没有在 Websphere 上工作过,现在遇到了安全问题。

  • 我在 WebSphere 中部署了一个 War 文件。路径:C:\IBM\WebSphere\AppServer\profiles\AppSrv01\installedApps\ip-0AC30DDBNode01Cell\DMS_war.ear
  • 在 UI 中,当我们单击特定按钮时,它会加载一个 JSP 文件,该文件又会尝试读取一个 xml 文件(存储在 WEB-INF/classes/mcc.xml 中)。
  • jsp 文件无法读取 xml 文件。

请帮助如何添加安全性/权限 WebSphere。另外我不确定我们必须在哪个文件中执行此操作。(app.policy,java.policy,was.policy)

日志

com.ibm.ws.webcontainer.servlet.ServletWrapper service SRVE0068E: 在应用程序 DMS_war 中的 servlet /awc/pcmgr/pcmgr.jsp 的服务方法之一中创建了未捕获的异常。异常创建:java.security.AccessControlException:访问被拒绝(java.io.FilePermission C:\IBM\WebSphere\AppServer\profiles\AppSrv01\installedApps\ip-0AC30DDBNode01Cell\DMS_war.ear\DMS.war\WEB-INF\classes\ mcc.xml 读取) 在 java.security.AccessController.checkPermission(AccessController.java:108) 在 java.lang.SecurityManager.checkPermission(SecurityManager.java:532) 在 java.lang.SecurityManager.checkRead(SecurityManager.java:871)

到目前为止,我尝试了一切,这是最新的was.policy文件。(位置:META-INF/)

//
// Template policy file for enterprise application.
// Extra permissions can be added if required by the enterprise application.
//
// NOTE: Syntax errors in the policy files will cause the enterprise application FAIL to start.
//       Extreme care should be taken when editing these policy files. It is advised to use
//       the policytool provided by the JDK for editing the policy files
//       (WAS_HOME/java/jre/bin/policytool). 
//

grant codeBase "file:${application}" {
permission java.security.AllPermission;
};

grant codeBase "file:${jars}" {
};

grant codeBase "file:${connectorComponent}" {
};

grant codeBase "file:${webComponent}" {
};

grant codeBase "file:${ejbComponent}" {
};

更新:这是现有代码读取 XML 文件的方式

SAXBuilder builder  = new SAXBuilder();
Document   doc      = builder.build(getServletContext().getRealPath("/WEB-INF/classes/mcc.xml")); 
// Use doc to get properties defined in file

谢谢

4

1 回答 1

1

更容易判断你在阅读文件的地方发布了一段源代码。但如果我是你,我会尝试将该文件作为资源流读取。

像这样的东西:

InputStream is = this.getClass().getClassLoader().getResourceAsStream("mcc.xml");
if (is == null) {
    // file not found or something went wrong
}

// read the stream
于 2016-01-13T14:09:05.440 回答