JavaにおいてXMLを操作するときには「XML for Java」が非常に有名だが、XMLにセキュリティをかけるためのツールとして「XMLセキュリティ・スィート for Java(以下XSS4J)」がある。これを紹介しよう。
XSS4Jは、IBMのalphaWorks(http://www.trl.ibm.com/alphaWorks/)からダウンロードできるJavaのライブラリである。利用する機能によって若干違いがあるが、前提として以下のようなほかのライブラリが必要である。
XSS4Jでは、次の機能を提供している。
対象(Object)、主体(Subject)、操作(Action)の3つに加え、条件(Condition)、必須処理(ProvisionalAction)から構成されるポリシーによって、XMLへのアクセスを制限し、権限のある部分のみを含むViewを作成したり、更新のログを取ったりする機能を提供する。
具体的な例を挙げると「Aさん(Subject)は、2001年4月以降ならば(Condition)、ElementX(Object)を読むこと(Action)ができる、がしかし、そのアクセスはログされなければならない(ProvisionalAction)」といった感じだ。
ASN.1は、SNMP、LDAPなどの通信プロトコル、X.509のようなセキュリティ・プロトコル、PKCSのようなデータ・フォーマットなどに幅広く使われている、構造化データを表現するためのフレームワークである。このライブラリではASN.1とXMLとの間で相互変換機能を提供する。次の種類のデータ構造に対応している。
前項で説明した、XMLの署名を実現するライブラリである。電子署名の技術は暗号化技術の上に成り立っている。そのため、署名するときと検査するときに使用される暗号化技術が一致しないと意味がない。XML署名の規約においては、どの暗号化アルゴリズムを使うかを規定している。XSS4Jでのサポート状況は以下のようになっている。
XSS4Jサポート | アルゴリズムタイプ | アルゴリズム | W3C規約上 | |
---|---|---|---|---|
○ | ダイジェスト | SHA1 | 必須 | |
○ | エンコード | Base64 | 必須 | |
○ | MAC | HMAC-SHA1 | 必須 | |
○ | 署名 | DSAwithSHA1(DSS) | 必須 | |
○ | DSAwithSHA1 | 推奨 | ||
× | 正規化 | Minimal | 推奨 | |
○ | Canonical XML with Comments | 推奨 | ||
○ | Canonical XML (omits comments) | 推奨 | ||
○ | 構造変換 | XSLT | オプション | |
○ | Xpath | 推奨 | ||
○ | Enveloped Signature* | 必須 | ||
XMLの一部を暗号化するためのライブラリである。エレメント単位の暗号化については、まだ仕様が策定中であり、このライブラリの実装については今後仕様が変更される可能性がある。
XMLセキュリティ・スイートを使ってセキュリティをかけることにより、SOAP上でも安全にXMLを扱うことができるが、Apache-SOAPには一部のセキュリティ機能が統合されている。それをご紹介しよう。
また、SOAPを使ったアーキテクチャの実装としてIBMのalphaWorksから配布されている「Web Services Toolkit(WSTK)」には、次のものが入っている。
このSOAPデジタル署名においては、日本国内でもクリティカル・アプリケーションにおける事例が紹介されるなど現実的な実装となっており、「SOAP Security Extensions: Digital Signature(http://www.w3.org/TR/SOAP-dsig/)」としてW3Cに提案が行われている。
以上のようなXMLのセキュリティ機能を駆使することによって、XMLを使ってBtoBインテグレーションを安全に行うことができるようになる。
次回は、SOAPと並べて紹介されることの多い「UDDI」の概説と利用法をご紹介する。
Copyright © ITmedia, Inc. All Rights Reserved.