1

私はユーザー証明書のセットを持っています。それぞれのユーザー証明書を使用してユーザーを認証したいと思います。異なるユーザー証明書を使用したJava Rest Call

ユーザー認証を有効にするようにサーバーを構成しました。ブラウザからうまく動作します。複数のユーザー証明書の場合は、使用する証明書の必要性を選択するよう求められます。 私の質問は、どうすればjavaからすることができるのですか?私はサーバーと通信するためにRestTemplateを使用しています。

シングルユーザー証明書の場合は、その証明書をJavaキーストアに追加して使用することができます。どのように特定の残りのコールのために特定のユーザー証明書を使用できますか?

答えて

1

ここで使用する標準的な用語は「クライアント証明書」なので、あなたはおそらくそれについてグーグルグーグルが多いでしょう。 "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

厳密に - このコードは、特定のキー/証明書を使用するようにこの特定の要求のみが構成されているlocalhost:8443に対する単一のリクエストを実行する単一のRestTemplateインスタンスを作成する方法を示しています。 –

+0

ありがとうございました。 – Kajal

関連する問題