サイト内の現在位置を表示しています。

WebOTX Application Server - Webサービス対応

WebOTXでは、Webサービスの基盤機能を提供しています。

Webサービスで用いられる技術

Webサービスで用いられる技術として、SOAP、WSDLがあります。次にこれらの関係について説明します。

Simple Object Access Protocol (SOAP)

SOAPはXMLメッセージを交換するためのプロトコル仕様です。既存のHTTPやSMTPといったインターネットに親和性のあるプロトコルに乗せて使います。Webサービス用のXMLの記述方法(コンテンツ)とその交換手順(プロトコル)と考えると良いでしょう。次にSOAPメッセージの構造を示します。

SOAPメッセージの構造の図
SOAPメッセージの構造の図

Web Service Description Language (WSDL)

サービス提供者がサービス利用者にWebサービスを参照させるときに、相手が理解できるように仕様を公開する必要があります。この公開仕様の記述形式がWSDLです。WSDLはXML文書でサービスやインターフェースの記述を行うときのフォーマットや規格のうちの一つです。次のような要素で構成されます。

名前空間の定義
名前空間の定義

SOAP、WSDLの相関

SOAP、WSDLの相関は次のようになります。

SOAP、WSDLの相関図
SOAP、WSDLの相関図

WebOTXは、SOAP1.2/1.1仕様とWSDL1.1に準拠したエンジンを提供します。

WebOTXではDOPG(分散オブジェクト推進協議会)やXMLコンソーシアムなどで多くのベンダー製品での相互運用性も報告してきました。

WS-I Basic Profile仕様への対応
Webサービスは、企業間や企業内での情報交換をインターネットの標準手順を活用して行なうことで、ビジネス連携の効率化や自動化を目指すものです。しかしWebサービスにおける基本仕様となる、SOAP、WSDLなどは、その仕様そのものや仕様中に使われている例に曖昧性や誤り、矛盾などがありました。また、SOAPやWSDLは、XML Schemaに従わない独自のエンコーディング(SOAPエンコーディング)を利用していました。そのため、これまで各ベンダーの提供するWebサービスのプラットフォーム(APサーバなど)ごとに、仕様の解釈が異なっており、サポート範囲が異なっていたため、相互運用性の面で問題となっていました。

そのため、Webサービスの普及促進を図る業界団体「WS-I」によって、「WS-I Basic Profile」が策定されました。これは異なるメーカ製品を使用して相互接続性のあるWebサービスを実現するためのガイドラインであり、WebOTXは「WS-I Basic Profile Version 1.0」に対応しています。

Webサービスセキュリティ(WS-Security)の対応 (V9まで提供)

WebOTXは、Web サービス間通信におけるセキュリティ技術である、Web Services Security(WS-Security)に対応しています。また、ユーザ認証データを安全に交換するための標準仕様である「Web Services Security SAML Token Profile 1.0」に業界で初めて対応しています。また、安全なデータ交換を可能とする標準仕様である「OASIS Web Services Security 1.0 (WS-Security 2004)」にも対応しています。

SOAPメッセージの暗号化、およびユーザ認証
SOAPメッセージの暗号化、およびユーザ認証

WebOTXでは、ユーザネームトークンとデジタル署名による認証機能を提供しています。クライアントとサーバでやり取りされる双方向のSOAPメッセージに対して、それぞれのSOAP Body要素、あるいはその中の特定の要素を対象としてデジタル署名をすることができます。これにより、メッセージの改ざん、なりすまし、否認を防止します。

開発ツールでWebサービスAP生成の際の署名構成の設定
WebOTX開発環境(Eclipse)でWebサービスAPを生成する際の署名構成設定画面

加えてWebOTXでは、クライアントとサーバでやり取りされる双方向のSOAPメッセージに対しても、それぞれのオペレーション要素の内容、あるいはその中の特定のパラメータ要素の内容を暗号化することができます。これにより、メッセージ自身の盗聴も防止します。

クライアントとサーバでやり取りされる双方向のSOAP メッセージに対して、それぞれにタイムスタンプを付与することができます。これにより、不正なリプレイ攻撃などを防止します。タイムスタンプに署名したり、暗号化することもできます。

開発ツールでWebサービスAP生成の際の暗号化方式の設定
WebOTX開発環境(Eclipse)でWebサービスAPを生成する際のメッセージ暗号化方式設定画面

さらに、WebSAM SECUREMASTER と連携して、SAML(Security Assertion Markup Language) Assertion の付与、検証機能を提供します。

上述の物流サービスを例に考えてみましょう。ある商品をあるWebサイトから注文する場合、いくつかの物流会社の在庫管理Webサービス、および銀行の決済Webサービスが連携して一連の手続き行います。その際、それぞれのサービスでそれぞれの認証チェックをさせられるとなると利用者にとってはかなり面倒です。Webサイトで何度もIDやパスワードの入力をするなんて考えるだけでうんざりしそうです。逆にこれらのデータが不正利用されないかと不安にもなるでしょう。

SAMLでは、それらを解消するためのシングルサインオン、およびセキュアな認証データ管理の仕様について定義されています。よってWebOTXのようなSAMLに準拠した製品間では認証データの相互引き継ぎが可能です。

WebSAM SECUREMASTER/DS V4.0からの認証アサーションの取得&Webサービス間での連携モデル
WebSAM SECUREMASTER/DS V4.0からの認証アサーションの取得、およびWebサービス間での連携の流れ

EJBエンドポイント

EJBのアプリケーションをWebサービス経由で呼ぶ際に、従来ではWebサービスの形式で送られてきた要求をEJBアプリケーション側で理解できるように変換する必要がありました。そのためにサーブレットなどWebアプリケーションを新たに開発し、それを介して処理要求を行うようにする必要があり面倒でした。

従来のWebサービスからEJBへのアクセス
従来のWebサービスからEJBへのアクセス

EJB2.1、およびJSR921(Implementing Enterprise Web Services 1.1)の仕様では、EJBアプリケーションをWebサービスとして扱えるような規定が加わっており、WebOTXでも対応しています。Webアプリケーションを介することなく、EJBアプリケーションがWebサービス形式の要求の直接処理が可能です。Webアプリーションの介入が不要になったことは、同時に業務処理要求のオーバーヘッドを軽減でき、性能向上が図れることも意味しています。

WebサービスからEJBへのアクセス
WebサービスからEJBへのアクセス

WS-ReliableMessaging (WS-RM) (V9まで提供)

WS-ReliableMessaging はSOAP メッセージの送受信における送達保障を行う機能などを規定しています。これにより、メッセージの欠落を回避するための再送や再送によって発生する同一メッセージの重複および送信順序と異なって到着する現象である順序の乱れの防止機能を提供します。

なお、WS-ReliableMessaging を利用することで、Web サービスで以下のような機能を利用することができます。

機能 概要
シーケンスの状態管理 メッセージ送信シーケンスの生成、削除、メッセージナンバーの割り振りを受信側で行います。
シーケンスの有効期限管理 送受信する処理シーケンスの有効期限を管理します。有効期限を超過したシーケンスには自動的に後処理を行います。これにより、送信中メッセージが滞留することなくシステムを運用できます。
メッセージの状態管理 メッセージが未送信か、送信中か、あるいは送信済みか、などの状態を管理します。
メッセージの有効期限管理 送受信するメッセージの有効期限を管理します。有効期限を超過したメッセージには自動的に後処理を行います。これにより、送信中メッセージが滞留することなくシステムを運用できます。
Ack 送信、受信、再送
(配送保障)
受信側はメッセージを受信し、データストアに格納したら、送信側へAck を送信します。送信側はAckを受信するまで、再送を試みます。これら一連の処理により配送保障を実現します。
重複防止/順序保障 重複防止機能を有効にすることで受信側は、すでに受信済みのメッセージと同じメッセージを受信した場合、そのメッセージを捨て重複処理を行わないようにすることが可能です。また、順序保障機能を有効にするとメッセージナンバーの順にメッセージを配信することも可能です。もし先に後続のメッセージが到着したとしても、次のメッセージが到着するまで待つことで処理順序を保持することができます。

Webサービス適用例

Webサービスを利用した一般的なモデルの1つとして、次のような業務システムが考えられます。

Webサービス適用例
Webサービス適用例

旅行会社のアプリケーションは、ホテル予約、航空機予約、列車予約といったサービスを利用して業務要求を発行します。このように点在したサービスを連携してシステムを運用するのに、Webサービスは適していると言えます。