配置 Java Servlet 3.1 支持以实现安全性

按 Java™ Servlet 3.1 规范中的定义,Liberty 支持所有安全性更新。

关于此任务

在 Liberty 上采用 Java Servlet 3.1 功能部件。

过程

  1. server.xml 文件中添加 servlet-3.1 功能部件:
    <feature>servlet-3.1</feature>
  2. 确定要使用的以下 Java Servlet 3.1 功能:
    • 在登录表单中指定 autocomplete=off
      对表单登录页面使用 HTML 时,将密码表单字段设置为 autocomplete="off" 以禁止在 Web 浏览器中自动填写密码。例如:
      <form method="POST" action="j_security_check">
      <input type="text" name="j_username">
      <input type="password" name="j_password" autocomplete="off">
      </form>
    • 指定所有认证安全性约束 (**)
      特殊角色名称 ** 指定任何已认证用户。** 显示在授权约束中时,如果用户通过认证,那么该用户具有对该约束中指定的方法的访问权。用户不必在应用程序绑定中映射至此角色。例如:
      <security-constraint id="SecurityConstraint_1">
      		<web-resource-collection id="WebResourceCollection_1">
      			<web-resource-name>Protected with ** role</web-resource-name>
      			<url-pattern>/AnyAuthSecurityConstraint</url-pattern>
      								<http-method>GET</http-method>
      								<http-method>POST</http-method>
      		</web-resource-collection>
      		<auth-constraint id="AuthConstraint_1">
      			<role-name>**</role-name>
      		</auth-constraint>
      </security-constraint>

      使用角色名 ** 调用 isUserInRole() 方法时,如果用户通过认证,那么 isUserInRole() 返回 true。如果 ** 是安全角色的配置中的已定义角色,那么它不会被视为任何特殊已认证用户角色。该用户必须在应用程序绑定中映射至该角色,isUserInRole 才能返回 true。

    • web.xml 文件中指定 deny-uncovered-http-methods 标记。
      如果在 web.xml 文件中指定了 deny-uncovered-http-methods 元素,那么该容器拒绝符合以下条件的任何已发现 HTTP 方法:最符合请求 URL 的 URL 模式的组合安全性约束内未枚举这些方法。将返回 403 (SC_FORBIDDEN) 状态码。例如:
      <servlet-mapping id="ServletMapping_1">
      		<servlet-name>MyServlet</servlet-name>
      		<url-pattern>/MyURLPattern</url-pattern>
      	</servlet-mapping>
      
      <deny-uncovered-http-methods/>
      
      <!-- SECURITY CONSTRAINTS -->
      <security-constraint id="SecurityConstraint_1">
      		<web-resource-collection id="WebResourceCollection_1">
      			<web-resource-name>Protected with Employee or Manager roles</web-resource-name>
      			<url-pattern>/MyURLPattern</url-pattern>
      								<http-method>GET</http-method>
      								<http-method>POST</http-method>
      		</web-resource-collection>
      		<auth-constraint id="AuthConstraint_1">
      			<role-name>Employee</role-name> 
      							<role-name>Manager</role-name>
      		</auth-constraint>
      </security-constraint>
      如果在 web.xml 文件中指定了 deny-uncovered-http-methods 元素,那么 messages.log 文件中将对每个 servlet 中的每个 URL 模式记录一条消息,此消息指示已发现方法,并且带有一个注释,说明这些已发现方法不受保护并且不可访问。例如:
      对于 servlet MyServlet
      中的 URL MyURLPattern,发现以下 HTTP 方法并且它们不可访问:DELETE OPTIONS HEAD PUT TRACE
      如果未在 web.xml 文件中指定 deny-uncovered-http-methods 元素,那么 messages.log 文件中将对每个 servlet 中的每个 URL 模式记录一条消息,此消息指示已发现方法,并且带有一个注释,说明这些已发现方法不受保护并且可访问。例如:
      对于 servlet MyServlet
      中的 URL MyURLPattern,发现以下 HTTP 方法并且它们可访问:DELETE OPTIONS HEAD PUT TRACE

结果

您现在已保护您的应用程序。

用于指示主题类型的图标 任务主题



时间戳记图标 最近一次更新时间: Monday, 5 December 2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-libcore-mp&topic=twlp_servlet31
文件名:twlp_servlet31.html