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/