1

我正在使用带有 X.509 证书的 Spring Security 2.x 的 Preauthentication。

我得到了certificateTextvia HttpServletRequest.getAttribute("CERTIFICATE")

有时,上述调用返回""(空)。我相信它发生在 HTTP 会话过期时。

什么可以解释为什么HttpServletRequest.getAttribute("CERT")返回空?

编辑例如,在 Kerberos 中,票证在每个 HTTP 请求中都可用。证书不总是在 X.509 HTTP 请求中吗?

4

1 回答 1

1
  1. 请使用此代码访问证书: X509Certificate[] certs = (X509Certificate[]) request.getAttribute("javax.servlet.request.X509Certificate");
  2. 客户端证书身份验证成功后,始终会填充证书以请求。

确保您支持长证书链:

  1. 将 max_packet_size 属性添加到 worker.properties 文件中 worker.ajp13w.max_packet_size=65536

  2. 将 packetSize 属性添加到 Tomcat 配置 \conf\server.xml 中的 Ajp 连接器配置中 <Connector port="8089" enableLookups="false" redirectPort="8443" protocol="AJP/1.3" packetSize="65536"/>

Apache 日志: http : //httpd.apache.org/docs/2.2/logs.html#accesslog http://httpd.apache.org/docs/2.2/logs.html#errorlog http://httpd.apache.org /docs/2.2/mod/core.html#loglevel

于 2013-05-10T06:14:14.327 回答