java - Tomcat 7 和 request.getUserPrincipal() 上的相互身份验证

标签 java tomcat struts pki authentication

我正在尝试在 Tomcat 7 应用程序上设置相互身份验证。我的 server.xml 有以下连接器:

 <Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
        port="8443" 
        enableLookups="true"
        acceptCount="100" 
        connectionTimeout="20000"
        useURIValidationHack="false" 
        disableUploadTimeout="true"
        scheme="https" 
        secure="true" 
        SSLEnabled="true"
        keystoreFile="servercert.jks"
        keystorePass="password"
        truststoreFile="truststore.jks"
        truststorePass="password"
        clientAuth="true" 
        sslProtocol="TLS" />

当我尝试使用与“https://testserver:8443/myapp/LoadUser.do”类似的 URL 执行 struts 操作时,浏览器会提示我输入客户端证书。当我提供服务器信任的证书时,它似乎可以很好地进行身份验证。在服务器端,我希望通过调用 request.getUserPrincipal() 来获取客户端证书的公用名,但它只是空。我是否正确假设 getUserPrincipa() 应设置为 CN?如果是,我做错了什么/遗漏了什么。如果没有,如何在服务器端检索CN?

谢谢。

最佳答案

我像个假人一样看错了地方。我从请求中获取所有证书信息:

request.getAttribute(org.apache.catalina.Globals.CERTIFICATES_ATTR);

关于java - Tomcat 7 和 request.getUserPrincipal() 上的相互身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9151395/

相关文章:

java - Tomcat 和 SLF4J - 不将日志写入文件

Java 应用程序后处理在 Eclipse Tomcat 中有效,但在本地 Tomcat 服务器上无效

oracle - 在 Quercus/Tomcat 上使用 Zend 并连接到 Oracle

java - Struts 表单和 Javascript

java - JTable 单元格未在单击输入时更新

java - JFileChooser 未显示,我的 ActionListener 有问题吗?

java - 以下代码在 Eclipse 中工作,但是当我转换为 Maven 项目时,此代码给出错误

java - eclipse servlet java.lang.ClassNotFoundException : javax. servlet.Servlet

java - 如何在javascript中使用struts标签

java - 将项目从 JDeveloper 转换为 Netbeans