有没有办法只在 Web 应用程序的特定部分强制执行客户端证书身份验证,即处理客户端证书身份验证的某些 servlet?
server.xml 上的 clientAuth 参数设置为“true”或“want”对我有用,但不方便,因为它会提示用户在应用程序的任何部分选择证书。
另一方面,我尝试将 clientAuth 设置为“false”,并使用 web.xml 仅在特定 servlet 上实现安全性。它有效,但这仅限于 tomcat-users.xml 文件中指定的用户,因此其他用户的证书未被 tomcat 授权给 servlet。
我需要能够将客户端证书身份验证限制到我的应用程序的特定 url,同时接受任何证书(受信任的,甚至不是),用于身份验证和配置目的(servlet 基本上从任何证书读取信息,应用程序决定做什么)。
我知道有类似 [1] 的问题,但我没有找到适合这些特定需求的答案。非常感谢。
[1] Using CLIENT-CERT for Tomcat without specifying a username
最佳答案
ssl 是工作在 https 之下的网络层。所以你不能在 serlvet 中控制它。
唯一的方法是将您的网络应用程序部署在非 SSL 网络服务器中。当 servlet(或其他资源)需要 SSL 客户端身份验证时,只需重定向到 https url(具有 https 端口的同一站点或其他站点)。
关于java - 仅提示来自特定 servlet 的(任何)客户端证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21135264/