1

Ich habe eine Reihe von Benutzer-Zertifikate, ich möchte Benutzer mit entsprechenden Benutzer-Zertifikat authentifizieren.Java Rest Anruf mit verschiedenen Benutzer certs

Ich habe den Server konfiguriert, um die Benutzerauthentifizierung zu aktivieren. Es funktioniert gut aus dem Browser. Im Falle von Mehrfachbenutzungszertifikaten fordert es mich auf, das zu verwendende Zertifikat auszuwählen. Meine Frage ist, wie kann ich das von Java tun? Ich verwende RestTemplate, um mit dem Server zu kommunizieren.

Im Falle von Einzel-Benutzer-Zertifikate kann ich das zum Java-Schlüsselspeicher hinzufügen und davon Gebrauch machen. Wie kann ich ein bestimmtes Benutzer-Cert für einen bestimmten Ruhezustand verwenden?

Antwort

1

Die Standard-Terminologie hier zu verwenden sind "Client-Zertifikate", so dass Sie wahrscheinlich mehr Glück haben würden, googeln dafür, z. "RestTemplate-Client-Zertifikat".

Hier einige Kopieren/Einfügen-Code aus another Stack-Überlauf Antwort:

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

Danke @August Lilleaas. Ich möchte das bestimmte Zertifikat für einen bestimmten Anruf verwenden. Es kann gleichzeitig einen Anruf zum entfernten Server geben. Bei jedem Anruf muss ich möglicherweise verschiedene Zertifikate verwenden. – Kajal

+0

Genau - dieser Code zeigt, wie eine einzelne RestTemplate-Instanz eine einzige Anforderung an localhost ausführen kann: 8443, wobei nur diese bestimmte Anforderung für die Verwendung eines bestimmten Schlüssels/Zertifikats konfiguriert ist. –

+0

Vielen Dank. – Kajal