使用SSL客户端身份验证的Jetty truststore身份验证
我正在尝试制作一个web应用程序,使用客户端密钥进行客户端身份验证。我想我已经解决了整个truststore的问题,这样我就可以让客户机真正通过身份验证。但是,我不想要求客户端身份验证。我只是想测试它,如果它被启用了,我就启用它的特性 我可以使用.wantClientAuth来请求它,但如果它不存在,则允许连接。但是我找不到任何属性来确定请求是否已通过身份验证使用SSL客户端身份验证的Jetty truststore身份验证,ssl,clojure,jetty,truststore,Ssl,Clojure,Jetty,Truststore,我正在尝试制作一个web应用程序,使用客户端密钥进行客户端身份验证。我想我已经解决了整个truststore的问题,这样我就可以让客户机真正通过身份验证。但是,我不想要求客户端身份验证。我只是想测试它,如果它被启用了,我就启用它的特性 我可以使用.wantClientAuth来请求它,但如果它不存在,则允许连接。但是我找不到任何属性来确定请求是否已通过身份验证 这应该存在,否则wantClientAuth的目的是什么。如何使用它?我没有在这里运行安装程序来测试它,但不应该 request.get
这应该存在,否则wantClientAuth的目的是什么。如何使用它?我没有在这里运行安装程序来测试它,但不应该
request.getUserPrincipal()
和
request.getAuthType()
给你想要的
看
(假设您在工作的上下文中有权访问servlet请求)如果您正在使用servlet API,请使用Tim的方法。以下是一些其他的想法,具体取决于您的通话环境 握手完成后,您可以在SSLSession上调用getCertChain。如果为null,则客户端没有使用客户端证书进行身份验证 请参见此处的自定义方法:
或者,您可以在HttpsURLConnection上调用getLocalPrincipal或getLocalCertificates。如果它们为空,则没有客户端证书。我确实有serverlet请求。问题是这两种方法都返回零。这两种方法都不起作用。我还没有积极地解决这个问题,因为我找到了一个解决方法,包括通过一个单独的通道发送客户端授权的通信。我可能会继续使用这个解决方案。