2011-02-08 18 views
1

クライアント認証用のクライアント鍵を使用してWebアプリケーションを作成しようとしています。私はクライアントが実際に認証されるようにトラストストア全体の問題を理解したと思います。しかし、私はクライアントの認証を要求したくありません。私はただそれをテストし、有効になっている場合は機能を有効にしたいだけです。SSLクライアント認証を使用したJettyのトラストストア認証

私は要求する.wantClientAuthを使用できますが、存在しない場合は接続を許可します。しかし、私は、リクエストが認証されているかどうかを調べるためのプロパティを見つけることができません。

これは存在するはずです。それ以外の場合は、wantClientAuthの目的は何か。どうやって使うの?

+0

これらの2つの方法のどちらも機能しませんでした。私は依然として問題に積極的に取り組んでいません。なぜなら、クライアントが認可した通信を別のチャネルで送信するという回避策を見つけることができたからです。そして私はその解決法を使い続けるかもしれません。 – Arelius

答えて

0

私はセットアップは今それをテストするために、ここで実行されていませんが、 request.getUserPrincipal()request.getAuthType()は何をしたいあなたを与えるべきではありません。

は(それはあなたが作業しているれているコンテキスト内のサーブレットリクエストへのアクセス権を持っていると仮定し)

http://www.docjar.com/docs/api/javax/servlet/http/HttpServletRequest.htmlを参照してください

+0

私はサーバーレット要求を持っています。問題は、これらの両方がゼロに戻ることです。 – Arelius

0

あなたはサーブレットAPIの使用ティムのメソッドを使用している場合。

ハンドシェイクが完了した後、SSLSessionでgetCertChainを呼び出すことができます。 nullの場合、クライアントはクライアント証明書で認証されませんでした。

は、ここでカスタマイズ方法を参照してください。

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

を別の方法としては、HttpsURLConnectionの上getLocalPrincipalまたはgetLocalCertificatesを呼び出すことができます。 nullの場合、クライアント証明書はありません。

関連する問題