2017-01-04 18 views
0

私は、httpsでWebサービスを呼び出すタスクに取り組んでいます。 WSDL自体は、セキュリティに関する次の情報が含まれています -webserviceにプログラムでセキュリティを追加する方法

今、この情報を使用して
<wsid:Identity xmlns:wsid="http://schemas.xmlsoap.org/ws/2006/02/addressingidentity"> 
<dsig:KeyInfo xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> 
<dsig:X509Data> 
<dsig:X509Certificate> 
**XXX** 
</dsig:X509Certificate> 
<dsig:X509IssuerSerial>...</dsig:X509IssuerSerial> 
<dsig:X509SubjectName>CN=FAEncryption, DC=cloud, DC=oracle, DC=com</dsig:X509SubjectName> 
<dsig:X509SKI>**ZZZ**</dsig:X509SKI> 
<dsig:X509Certificate> 
**YYY** 
</dsig:X509Certificate> 
</dsig:X509Data> 
</dsig:KeyInfo> 
</wsid:Identity> 

、私は、次の手順を使用して証明書を思い付いた -

  1. 好きな名前を持つ新しいファイルを作成します。証明書ファイルであることを示すには、拡張子を.cerに変更する必要があります。

  2. テキストエディタを使用して、作成したファイルを開き、最初の行に "----- BEGIN CERTIFICATE -----"と入力します。

  3. 次の行で、サービスWSDLファイルからBase64でエンコードされた証明書を新しく作成した証明書ファイルにコピーします。

  4. 新しい行に "----- END CERTIFICATE -----"を追加してファイルを保存します。これで、サーバーからの公開鍵を含む証明書が作成されました。

  5. コマンドラインを開き、ディレクトリを$ JAVA_HOME/binに変更します。 KeyStoreを作成し、証明書から公開鍵をインポートするには、次のコマンドを使用します。

wsdlには2つの証明書があります。私は両方をキーストアに追加しました。コマンドがある -

のkeytool -import -file〜/ ddriveと/テスト/詳細/ SubmitFlow.cer -alias orakey1 -keypass歓迎-keystore〜/ ddriveと/テスト/詳細/をtest.jks -storepass歓迎

keytool -import -file〜/ ddrive/test/details/SubmitFlow1.cer -alias orakey1 -keypassようこそ-keystore〜/ ddrive/test/details/test.jks -storepassようこそ

最初は、証明書。しかし、後で、私は両方を追加しました。私はweb-service呼び出しを行うためにspring-wsを使用します。しかし、私はまだ401の不正な呼び出しを取得します。

私は何をする必要があるかを示す文書はありません。もし私がここで私を導くことができれば幸いです。ところで、役立つ場合、このWebサービスはOracle HCMに関連しています。

答えて

0

要するに、WSDL証明書をJKSにインポートしましたが、使用していないため、効果はありません。

しかし、これは問題ではありません。実際には、<wsid:Identity>タグは、エンドポイントの身元を確認する方法についての情報を提供しますが、エンドポイントの妥当性検査方法に関する情報は提供しません。

401-Unauthorizedは、資格情報を提供していないことを意味します。まず、Webサーバーでの認証方法(ユーザー名とパスワード、デジタル署名など)を知る必要があります。

WSDL自体には、期待される認証方法を含む<wsp:Policy>が含まれている場合があります。それ以外の場合は、ドキュメントを参照してください。私はあなたの好みのwsdl2javaツールを使ってスタブを生成することを提案します。これは対処するコードを正しく生成するでしょうwsp:policy

関連する問題