- PR -

エレメント暗号化されたデータをSOAPで扱う場合のWSDL記述内容

1
投稿者投稿内容
d@
会議室デビュー日: 2007/01/20
投稿数: 10
投稿日時: 2008-03-09 03:26
apache axis 1.4 / Eclipse 3.3 WTP WSDLエディタを使用したWebサービスを開発しています。
3DESでエレメント暗号化したパスワードをやり取りしたいというオーダーがありました。

エレメント暗号化されたデータは下記のようなものと想定すると、

コード:
<xenc:EncryptedData xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" type="http://www.w3.org/2001/04/xmlenc#Element">
  <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"/>
  <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"></ds:KeyInfo>
  <xenc:CipherData xmlns:xenc="http://www.w3.org/2001/04/xmlenc#">
    <xenc:CipherValue xmlns:xenc="http://www.w3.org/2001/04/xmlenc#">xxxxxxxxxxxxxxxxx</xenc:CipherValue>
  </xenc:CipherData>
</xenc:EncryptedData>



WSDLの記述としては
・W3Cが公開しているエレメント暗号化スキーマをインポート
・パスワードはEncryptedDataType型とすればよい
・・・と考え、以下のようなtypes要素を記述しました。

コード:

<wsdl:types>
  <xsd:schema targetNamespace="http://www.example.org/password/" xmlns:Q1="http://www.w3.org/2001/04/xmlenc#">
  <xsd:import schemaLocation="http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/xenc-schema.xsd" namespace="http://www.w3.org/2001/04/xmlenc#"></xsd:import>
  <xsd:element name="getPassword">
    <xsd:complexType>
      <xsd:sequence>
      <xsd:element name="password" type="Q1:EncryptedDataType"></xsd:element></xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>
</wsdl:types>




しかし、前述のEclipse 3.3 WTP WSDLエディタでこれを記述したところ、
xenc-schema.xsdのインポートで「Failed To Read Schema」と表示され、読み込むことができませんでした。
件のスキーマファイルをローカルにコピーし、そちらのURIを指定しても同様でした。

また、上記WSDLファイルからaxisのサーバ/クライアントコードを自動生成したのですが、
EncryptedDataTypeをJavaオブジェクトで表現するクラスがsyntaxエラーでコンパイルエラーとなりました。
syntaxエラー自体は単純な文法ミス(引数の順序が誤っていた)のが原因だったので
すぐに解消することができましたが、
いかんせん自動生成したコードがこのような状態ではかなり不安な感じです・・・

そんなわけで、
・WSDL記述の方針は正しいでしょうか?
・xenc-schema.xsdのインポート失敗はただのEclipseのバグと考えてよいでしょうか?
・もし、エレメント暗号化されたデータを扱うWSDLが一般公開されているなら、参考までに教えてください。

Webサービスはおろか、XMLを扱う仕事自体が初めてなので、試行錯誤の連続状態です。
よろしくお願いします。
1

スキルアップ/キャリアアップ(JOB@IT)