我正在嘗試使用客戶端密鑰進行客戶端身份驗證的Web應用程序。我想我已經弄清楚了整個信任庫問題,所以我可以讓客戶端實際進行身份驗證。但我不想要求客戶端身份驗證。我只想測試它並啓用功能。Jetty Truststore身份驗證與SSL客戶端身份驗證
我可以使用.wantClientAuth來請求它,但如果它不存在則允許連接。但是我找不到任何屬性來確定請求是否已通過身份驗證。
這應該存在,否則wantClientAuth的目的是什麼。我如何使用它?
我正在嘗試使用客戶端密鑰進行客戶端身份驗證的Web應用程序。我想我已經弄清楚了整個信任庫問題,所以我可以讓客戶端實際進行身份驗證。但我不想要求客戶端身份驗證。我只想測試它並啓用功能。Jetty Truststore身份驗證與SSL客戶端身份驗證
我可以使用.wantClientAuth來請求它,但如果它不存在則允許連接。但是我找不到任何屬性來確定請求是否已通過身份驗證。
這應該存在,否則wantClientAuth的目的是什麼。我如何使用它?
我沒有設定運行在這裏,現在對其進行測試,但不應該 request.getUserPrincipal()
和 request.getAuthType()
給你想要的東西。
見http://www.docjar.com/docs/api/javax/servlet/http/HttpServletRequest.html
(即假定您可以訪問在您正在使用的上下文中的servlet請求)
我確實有serverlet請求。問題是這兩個都返回零。 – Arelius 2011-02-08 05:21:13
如果您使用了servlet API使用Tim的方法。這裏有一些其他的想法,取決於你的呼叫環境。
握手完成後,你可以調用SSLSession的getCertChain。如果它爲空,那麼客戶端沒有通過客戶端證書進行身份驗證。
見定製方法在這裏:
http://www.javadocexamples.com/java_source/org/mortbay/jetty/security/SslSocketConnector.java.html
另外,您可以撥打getLocalPrincipal或getLocalCertificates上HttpsURLConnection的。如果它們爲空,那麼就沒有客戶端證書。
這兩種方法都不起作用。我還沒有積極解決這個問題,因爲我能夠找到一種解決方法,包括通過一個單獨的渠道發送客戶授權的通信。我可能會繼續使用該解決方案。 – Arelius 2011-02-24 07:48:38