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

标签 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>

有人知道这样做的方法吗?

谢谢

最佳答案

您可以在 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 来进行安全定义。

关于java - Servlet 3.1 - 安全约束 - 没有 web.xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25552491/

相关文章:

java - 访问注释处理器中的常量字段

java - OOP 解析并将对象添加到列表中

java - cloud9 ide 上的 headless 异常

ruby-on-rails - 如何防止 Rails 用户意外验证为错误的用户?

security - 在 HDFS 中创建一次写入文件

java - Servlet中无法获取参数

java - 什么以及为什么是 Java 6 和 Java 7?

database - 审计跟踪和实现 SOX/HIPAA/等,敏感数据的最佳实践

java - Spring boot 在 servlet 上下文之外获取应用程序基础 url

java - 如何在servlet中使用或调用java类并将结果显示到jsp