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.