2016-07-28 5 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>>; 
} 

Предполагается, что вы включили бы аутентификацию клиента на своем веб-сервере. Для сервера 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" />