我遇到的情况是我需要拒绝访问未使用的HTTP方法 我们在JBoss 4.2上运行并需要登录。除GET和POST外,应拒绝所有其他访问尝试。
我尝试过以下web.xml的配置,但它没有帮助。 servlet仍然被调用并返回例如。 a"访问被拒绝"在DELETE请求上。'
相反,我希望返回501: Not implemented
如果我没有在第一个安全约束中包含任何HTTP方法,则会立即向用户提供未经授权的页面。
<web-app>
<security-constraint>
<web-resource-collection>
<web-resource-name>Deny most when not logged in</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<!-- no auth-constraint tag here -->
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>Allow methods</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
<http-method>PUT</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>Admin</role-name>
</auth-constraint>
</security-constraint>
</web-app>
关于如何做到这一点的任何想法?
答案 0 :(得分:0)
玩不同的可能性和Postman我发现第一个安全约束是黑名单。这里添加的http方法被拒绝,JBoss返回403 所以第一个安全约束现在看起来像这样:
<security-constraint>
<web-resource-collection>
<web-resource-name>Deny most when not logged in</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>PUT</http-method>
<http-method>DELETE</http-method>
</web-resource-collection>
<auth-constraint/>
</security-constraint>