2016-07-28 11 views
0

私は自己署名入りのSSL証明書を生成し、クライアントに渡しました。クライアントはREST要求を送信するたびに、サーバー上でクライアント証明書認証を行います。私はJavaコードで証明書のデータを取得する必要があります。それ、どうやったら出来るの?私はジャージーフレームワークを使用しています。HTTPリクエストでクライアント証明書を受け取る方法は?

答えて

0

@Context Annotationを使用してHttpServletRequestを抽出できます。

@POST 
@Path("/getHelloWorld") 
@Consumes(MediaType.APPLICATION_JSON) 
public String helloWorld(@Context HttpServletRequest httpRequest) { 
    X509Certificate[] certs = (X509Certificate[]) httpRequest.getAttribute("javax.servlet.request.X509Certificate"); 
    if (null != certs && certs.length > 0) { 
     return <<YOUR CODE HERE>>; 
    } 
    return <<YOUR CODE HERE>>; 
} 

Webサーバーでクライアント認証を有効にしていることが前提です。 tomcatサーバーの場合

< Connector SSLEnabled="true" acceptCount="100" clientAuth="true" 
disableUploadTimeout="true" enableLookups="false" maxThreads="25" 
port="8443" keystoreFile="conf/keystore.jks" keystorePass="changeit" 
truststoreFile="conf/truststore.ts" truststorePass="changeit" 
protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="https" 
secure="true" sslProtocol="TLS" /> 
関連する問題