1

У меня есть набор пользовательских сертификатов, я хотел бы аутентифицировать пользователей, используя соответствующий сертификат пользователя.Java Rest вызов с различными сертификатами пользователя

Я настроил сервер, чтобы включить аутентификацию пользователя. Он отлично работает в браузере. В случае нескольких сертификатов пользователей мне предлагается выбрать сертификат, который необходимо использовать. Мой вопрос в том, как я могу это сделать из java ?? Я использую RestTemplate для связи с сервером.

В случае однопользовательских сертификатов я могу добавить это в хранилище ключей Java и использовать его. Как я могу использовать конкретный сертификат пользователя для определенного вызова отдыха?

ответ

1

Стандартная терминология, используемая здесь, - это «клиентские сертификаты», поэтому для этого, вероятно, будет больше удачи для Google. «Клиентский сертификат RestTemplate».

Вот некоторые копировать/вставить код из another переполнением стека ответ:

KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); 
keyStore.load(new FileInputStream(new File("keystore.jks")), 
     "secret".toCharArray()); 
SSLConnectionSocketFactory socketFactory = new SSLConnectionSocketFactory(
     new SSLContextBuilder() 
       .loadTrustMaterial(null, new TrustSelfSignedStrategy()) 
       .loadKeyMaterial(keyStore, "password".toCharArray()).build()); 
HttpClient httpClient = HttpClients.custom().setSSLSocketFactory(socketFactory).build(); 
ClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(
     httpClient); 
RestTemplate restTemplate = new RestTemplate(requestFactory); 
ResponseEntity<String> response = restTemplate.getForEntity(
     "https://localhost:8443", String.class); 
+0

Спасибо @August Lilleaas. Я хочу использовать конкретный сертификат для конкретного вызова. Одновременно можно вызвать удаленный сервер. Для каждого вызова мне может понадобиться использовать разные сертификаты. – Kajal

+0

Точно - этот код показывает, как сделать один экземпляр RestTemplate для выполнения одного запроса на localhost: 8443, где только этот конкретный запрос настроен на использование определенного ключа/сертификата. –

+0

Большое вам спасибо. – Kajal

Смежные вопросы