2017-10-05 2 views
0

Ich entwickle Jersey Web Service. In einem der Verfahren, ich bin Aufruf WSO2 Identity Server API: https://docs.wso2.com/display/IS530/apidocs/self-registration/#!/operations#SelfRegister#mePostJersey SSL Ausnahme bei Verbindung zu WSO2

Wenn ich versuche, es zu berufen howerver, gibt er Ausnahme folgende:

SunCertPathBuilderException: unable to find valid certification path to requested target 

Der Code Ich verwende:

Client restClient = ClientBuilder.newClient(); 
WebTarget webTarget = restClient.target("https://localhost:9443/api/identity/user/v0.9/me"); 

String username = "admin"; 
String separator = ":"; 
String password = "admin"; 
// String passphrase = ""; 

HttpAuthenticationFeature feature = HttpAuthenticationFeature.basic(username, password); 

restClient.register(feature); 

Invocation.Builder invocationBuilder = webTarget.request(MediaType.APPLICATION_JSON); 
invocationBuilder.header("Authorization", "Basic " + Base64.encodeAsString(username + ":" + password)); 
Response response = invocationBuilder.post(Entity.entity(UserBean.class, MediaType.APPLICATION_JSON)); 

Also wo ist das Problem. Ich dachte, dass meine Authentifizierung fehlgeschlagen, das Protokoll von WSO2 es unterstützen würde, denn es heißt:

Error occurred while trying to authenticate and Authorization header values are not define correctly. 

So überprüfte ich den Header in den Variablen von debuger und es richtig eingestellt ist, ist alles nach Dokumentation. Ich fand auch diese Frage:

Java Certificate Client SSL: unable to find valid certification path to requested target

in dem es heißt, dass mein Mandant nicht dem Server-Zertifikat vertraut und ich soll es importieren. Ok, aber ich benutze keinen Keystore auf Java oder Jersey, wo würde ich einen Keystore platzieren? Beachten Sie auch, dass der Identity Server lokal uned localhost-Zertifikat ausführt. Wenn ich versuche, vom Browser aus eine Verbindung herzustellen, möchte ich die Website nicht bereitstellen, vermutlich weil der Client (Browser) dem Zertifikat nicht vertraut, da es selbstsigniert ist.

Antwort

1

Die Antwort war, das Zertifikat vom lokalen WSO2 IS Server zu exportieren. Sie als 2 Optionen haben, können Sie

  • entweder add es cacerts in JAVA_HOME
  • oder explizite catalina erstellen truststore und das Zertifikat in jene importieren.