忽略IBM WebShere应用程序服务器

时间:2016-10-16 13:35:03

标签: spring rest security model-view-controller websphere

我有一个spring MVC rest应用程序,它作为war文件部署到IBM WebSphere应用程序服务器v 8.5,我想保护这个应用程序中的一些其余的api,因此,我使用了应用程序web.xml并声明了我想要的安全角色,然后我从WAS控制台启用了应用程序安全性,但由于某种原因我的安全角色被忽略,我可以访问应该受到保护的所有其他API,感谢任何帮助。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
  <servlet>
    <servlet-name>appServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>/WEB-INF/applicationContext.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>appServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
  <security-constraint>
    <web-resource-collection>
      <web-resource-name>LBS_System</web-resource-name>
      <url-pattern>/LBS/*</url-pattern>
      <http-method>POST</http-method>
      <http-method>PUT</http-method>
      <http-method>DELETE</http-method>
    </web-resource-collection>
    <auth-constraint>
      <role-name>Administrators</role-name>
    </auth-constraint>
  </security-constraint>
  <login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>defaultWIMFileBasedRealm</realm-name>
  </login-config>
  <security-role>
    <role-name>Administrators</role-name>
  </security-role>
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <resource-ref>
    <res-ref-name>jdbc/MoictDB</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
  </resource-ref>
  <persistence-unit-ref>
    <persistence-unit-ref-name>persistence/MoICTAppUnit</persistence-unit-ref-name>
    <persistence-unit-name>MoICTAppUnit</persistence-unit-name>
  </persistence-unit-ref>
</web-app>

1 个答案:

答案 0 :(得分:0)

您不应在url-pattern中包含context-root(在您的情况下为LBS)。它与您的应用程序context-root相关。 /*模式可以保护所有网址,但仅保护您的应用,而不是其他网址。因此,如果您只想保护例如rest api,它通常会映射到某个子路径,例如/LBS/rest/something,在这种情况下,您会将/rest/*放在模式中。

您不应该在web.xml中的任何映射和url模式中包含context-root,特别是该应用程序可能部署在不同的context-root下,在这种情况下它将被破坏。