Servlet 3.1 - 安全约束 - 没有web.xml

时间:2014-08-28 15:22:31

标签: java security servlets web.xml

Java Servlet 3.0和3.1规范允许开发人员使用Java代码执行许多常见的基于配置的任务,而不是通过提供web.xml文件的传统机制。

我已将所有这些工作用于我的应用程序,但在寻求解决应用程序安全性时,我找不到任何关于如何或是否可以通过代码配置应用程序安全性约束的参考。

基本上,我正在寻找一种以编程方式执行以下操作的方法:

<security-constraint>
    <web-resource-collection>
        <web-resource-name>my-secure-webapp</web-resource-name>
        <url-pattern>/*</url-pattern>
        <http-method>GET</http-method>
        <http-method>POST</http-method>
    </web-resource-collection>
    <auth-constraint>
        <role-name>SSORole</role-name>
    </auth-constraint>
</security-constraint>
<login-config>
    <auth-method>CLIENT-CERT</auth-method>
</login-config>
<security-role>
    <role-name>SSORole</role-name>
</security-role>

是否有人知道这样做的方法?

感谢

2 个答案:

答案 0 :(得分:5)

您可以在Mark提供的部分找到详细信息,但是为了简单起见,您可以在servlet中输入以下内容:

@ServletSecurity((httpMethodConstraints = {
    @HttpMethodConstraint(value = "GET", rolesAllowed = "SSORole"),
    @HttpMethodConstraint(value = "POST", rolesAllowed = "SSORole",
    transportGuarantee = TransportGuarantee.CONFIDENTIAL)
})

然而,在Web模块安全性中使用注释仍然存在一些缺点:

  • 您的url-pattern将与您的servlet映射直接匹配 - 无法为整个应用定义/*,例如通过web.xml
  • 遗憾的是,login-config
  • 仍然没有注释

所以我建议坚持使用web.xml来保证更长时间的安全性。

答案 1 :(得分:0)

您需要阅读Servlet 3规范的第13.4节。