java - 仅提示来自特定 servlet 的(任何)客户端证书

标签 java tomcat servlets x509 client-certificates

有没有办法只在 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/

相关文章:

java - 在 Ice Cream Sandwich 中移动 Android 状态栏

java - Elastic APM Tomcat zip 文件或 JAR list 丢失

java - 如何在Google AppEngine中实现GCM?

java - 设置默认 servlet

java - 如何为运行正则表达式的 Java 函数设置时间限制

java - 我如何管理 WebSphere 中的类路径

java - 如何编写一个将字符串中每个数字的数字相加的 java 方法

maven - 我在 Tomcat 的 webapps 文件夹中看不到我的 WAR 文件

java - log4j 失败 - 无法刷新 servlet 中的编写器(java.io.IOException : Bad file descriptor)

java - 如何通过本地网络向服务器发送请求