2011-02-08 240 views
1

我正在尝试使用客户端密钥进行客户端身份验证的Web应用程序。我想我已经弄清楚了整个信任库问题,所以我可以让客户端实际进行身份验证。但我不想要求客户端身份验证。我只想测试它并启用功能。Jetty Truststore身份验证与SSL客户端身份验证

我可以使用.wantClientAuth来请求它,但如果它不存在则允许连接。但是我找不到任何属性来确定请求是否已通过身份验证。

这应该存在,否则wantClientAuth的目的是什么。我如何使用它?

+0

这两种方法都不起作用。我还没有积极解决这个问题,因为我能够找到一种解决方法,包括通过一个单独的渠道发送客户授权的通信。我可能会继续使用该解决方案。 – Arelius 2011-02-24 07:48:38

回答

0

如果您使用了servlet API使用Tim的方法。这里有一些其他的想法,取决于你的呼叫环境。

握手完成后,你可以调用SSLSession的getCertChain。如果它为空,那么客户端没有通过客户端证书进行身份验证。

见定制方法在这里:

http://www.javadocexamples.com/java_source/org/mortbay/jetty/security/SslSocketConnector.java.html

另外,您可以拨打getLocalPrincipal或getLocalCertificates上HttpsURLConnection的。如果它们为空,那么就没有客户端证书。