2017-10-05 10 views
0

私はJersey Webサービスを開発しています。いずれかの方法で、私はWSO2アイデンティティ・サーバーのAPIを呼び出している:私はhowerverそれを起動しようとするとhttps://docs.wso2.com/display/IS530/apidocs/self-registration/#!/operations#SelfRegister#mePostジャージーSSL例外WS02に接続

、それは次の例外を返します。

SunCertPathBuilderException: unable to find valid certification path to requested target 

コード私が使用している:

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)); 

だからどこに問題がありますか。私はそれが述べているのでWSO2からのログは、それを支持するだろう、私の認証が失敗したことを考えた:

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

だから私はdebugerの変数にヘッダをチェックし、それが正しく設定され、すべてがマニュアルに従っています。

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

私のクライアントは、サーバー証明書を信頼し、私はそれをインポートする必要があることをしないことを、述べて:私もこの質問を見つけました。しかし、私はJavaやJerseyのレベルでキーストアを使用していません。そのキーストアをどこに置くのですか?また、Identity Serverはローカルでuned localhost証明書を実行します。私はブラウザから接続しようとすると、おそらくクライアント(ブラウザ)が自己署名されているので証明書を信頼しないため、サイトを登録することができなくなります。

答えて

1

答えは、ローカルWSO2 ISサーバから証明書をエクスポートすることでした。 JAVA_HOMEのcacerts

  • または明示的なカタリナtruststoreを作成し、それらに証明書をインポートする2つのオプションを持っている、あなたができる

    • いずれかaddよりもあなたには。