以下部分应强制所有客户端使用 https 连接。
<security-constraint>
<web-resource-collection>
<web-resource-name>securedapp</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
实际发生的是只有 index.html 页面受 ssl 保护。所以像:这样的请求http://localhost/JAX-RS_Service/
被重定向到https://localhost/JAX-RS_Service/
并显示 index.html 页面。但是http://localhost/JAX-RS_Service/index.html
,如果我尝试请求http://localhost/JAX-RS_Service/services/customers/1
,则不会重定向到 https,因此所有内容都以明文形式通过网络发送。
执行身份验证也是如此
<security-constraint>
<web-resource-collection>
<web-resource-name>Authenticated customers only</web-resource-name>
<url-pattern>/services/customers/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>CUST</role-name>
</auth-constraint>
</security-constraint>
像这样的 url 模式<url-pattern>/services/*</url-pattern>
不会完成这项工作。
为什么不<url-pattern>/*</url-pattern>
为子定位工作。有没有办法解决这个问题?