WebService QoS & Policy 1 日本IBMシステムズ・エンジニアリング(株) Webインフラストラクチャー
by user
Comments
Transcript
WebService QoS & Policy 1 日本IBMシステムズ・エンジニアリング(株) Webインフラストラクチャー
WebService QoS & Policy 日本IBMシステムズ・エンジニアリング(株) Webインフラストラクチャー 高浜 めぐみ ([email protected]) © 2008 IBM Corporation 1 Disclaimer WAS WAS V7 V7 W/S W/S 当資料で提供する技術情報は、各製品の出荷前コードに基づくものを含みます。 この資料は日本アイ・ビー・エム株式会社ならびに 日本アイ・ビー・エム システムズ・エンジニアリング株式会社の正式なレ ビューを受けておりません。 当資料は、資料内で説明されている製品の仕様を保証するものではありません。 資料の内容には正確を期するよう注意しておりますが、この資料の内容は2008年 10月現在の情報であり、製品の新しいリリース、PTFなどによって動作、仕様が変 わる可能性があるのでご注意下さい。 今後国内で提供されるリリース情報は、対応する発表レターなどでご確認くださ い。 WebSphere Application Server V7 Announcement Workshop 2008 #2 © IBM Corporation. 2 Agenda WAS WAS V7 V7 W/S W/S WebサービスにおけるQoS 高信頼性Webサービス~WS-ReliableMessaging~ 会話型Webサービス・セキュリティ~WS-SecureConversation~ Webサービス・ポリシー (参考)Webサービス・トランザクション WebSphere Application Server V7 Announcement Workshop 2008 #3 © IBM Corporation. 3 WebサービスにおけるQoS WebSphere Application Server V7 Announcement Workshop 2008 WAS WAS V7 V7 W/S W/S #4 © IBM Corporation. 4 QoSとは WAS WAS V7 V7 W/S W/S サービスの性能、品質 一般的に非機能要件に属する 非機能要件 機能要件/業務要件 アプリケーション 要件 性能・品質要件 データ要件 9パフォーマンス 9信頼性 9セキュリティー 9運用管理 制約 9予算 9スケジュール 9スキル 9配置場所/環境 9既存システム 9準拠する標準/規約 QoSを支えるWebサービス標準仕様 QoSを支えるWebサービス標準仕様 信頼性 セキュリティ 運用管理 トランザクション WS-ReliableMessaging…. WS-Security,WS-SecureConversation… WS-Policy… WS-AtomicTransaction,WS-BusinessActivity… WebSphere Application Server V7 Announcement Workshop 2008 #5 © IBM Corporation. WebサービスにおけるQoSの在り方について説明します。 QoSは一般的に非機能要件に属します、システムやサービスが提供すべき性能と品質のことを指します。具体的 にはパフォーマンス、信頼性、セキュリティー及び運用管理などが挙げられます。 Webサービスは実装言語や環境に依存しないという特徴から、QoSを実現するための技術を標準仕様で提供し ています。OASISやW3Cなどの標準化団体が策定しています。 5 Webサービス仕様群 WAS WAS V7 V7 W/S W/S Webサービスに関連する仕様 Service Composition Quality of Service (QoS) Description WS-Reliable Messaging WS-Security Messaging XML Transports HTTP/HTTPS WSDL SOAP WS-Transaction WS-Resource Lifetime WS-Resource Properties XSD WS-BPEL WS-Notification WS-Service Group WS-Base Faults WS-Policy WS-Metadata Exchange WS-Addressing SMTP WASv6.1 FeaturePack for WebServices NEW WS-Renewable References RMI / IIOP JMS WAS V7 NEW グレー文字:WAS未サポート WebSphere Application Server V7 Announcement Workshop 2008 #6 © IBM Corporation. 現在標準化団体や営利企業グループによって策定作業が進められているWeb サービス関連 仕様の一部をレイヤー化して示します。青印のものはWAS V6.1 FeaturePack for WebServicesで新たにサポートされた仕様、赤印のものは更に、WAS V7で新たにサポートさ れた仕様を示しています。 グレー文字の仕様はWASではまだサポートされていない仕様です。 6 WAS V7におけるWS-I プロファイル構成 WS-Trust 1.3 WS-I Reliable Secure Profile 1.0 WAS WAS V7 V7 W/S W/S WS-ReliableMessaging 1.1 WS-SecureConversation 1.3 WS-I Basic Profile 2.0 SOAP1.2 WS-I Basic Profile 1.2 WS-Addressing WS-I Basic Security Profile 1.0/1.1 Kerberos Token Profile WS-Security 1.0/1.1 MTOM WS-I Attachment Profile New v7 Username Token Profile X.509 Token Profile WS-I Basic Profile 1.0/1.1 SAML Token Profile REL Token Profile WS-I Simple SOAP Profile WS-I ReliableSecureProfile(RSP) 1.0 Webサービスの信頼性とセキュリティに関する相互運用のためのプロファイル IBMがGM社,Ford社,Daimler Chrysler社と共に作成したB2B要件のプロファイル 2006年4月 WS-Iから正式採用を承認 2008年5月 Working Group Draft Webサービス 非同期通信の標準技術 WebSphere Application Server V7 Announcement Workshop 2008 #7 © IBM Corporation. WAS V7がサポートするWS-Iプロファイルの構成を説明します。 WS-IはWebサービス関連の各種標準を策定しているW3CやOASISと連携しながら活動しています。それ以外 の団体とも協調しながら業界の標準となるものを作成しています。WS-Iの活動のメインは、”プロファイル”と呼ば れるインターオペラビリティに関するガイドを作成することです。プロファイルとはインターオペラビリティの実現に 必要な仕様を選択し組み合わせて、矛盾、曖昧性が無いようにガイドしたものです。WS-Iでは、新しく仕様を作 成することはありません。あくまでも既に存在する複数の標準を対象としてインターオペラビリティを保つにはどの ようにしたらよいかをプロファイルとして文書化して公開しています。一般的な標準化団体では、技術仕様を発表 してから投票採用が実施されますが、WS-Iはまず、企業顧客やソフトウェアベンダーがプロファイルを発表してか ら投票採用が行われます。 ・WS-I Reliable Secure Profile (RAMP) RAMPはIBMがGM社、Ford社、Daimler Chrysler社とともに作成したB2B要件のプロファイルで2006年4月に WS-Iから正式採用が承認されました。Webサービスの非同期通信の標準技術です。RAMPはWS-I BasicProfileおよびWS-I Basic Security Profileの上に、WS-Addressing、WS-ReliableMessaging(WS-RM)、 WS-SecureConversation(WS-SC)の3つの仕様を追加したものになります。 WS-SC V1.3でWS-RM V1.1を使用するよう更新され策定されたのがWS-I RSP(Reliable Secure Profile)です。 RSP1.0はWS-I BasicProfile1.2および2.0、WS-I BasicSecurityProfile1.0および1.1にWS-RM1.1、WSSC1.3の仕様を追加したものになります。 ・WS-I BasicProfile WS-I Basic Profile1.2はWS-Addressingに加えてSOAP MTOM(MessageTransmissionOptimizationMechanism)およびXOP(XML-binary Optimized Packaging)も 対象となっています。MTOMとXOPは添付ファイルに関して規定しています。 SOAP1.2を対象としているのがWS-I BasicProfile2.0になります。 7 WS-I RSPの信頼性 WAS WAS V7 V7 W/S W/S 登場の背景 インターネットを利用したB2Bにおける高信頼性の必要性 WS-I RSPが求める信頼性 メッセージ配信保証 ネットワークの信頼性は各社で異なる 回線速度が速いとは限らない 重複排除 WS-ReliableMessaging 課金処理では必須 順序性 WS-SecureConversation セキュリティ インターネット C社システム A社システム D社システム WebSphere Application Server V7 Announcement Workshop 2008 #8 © IBM Corporation. WS-I RSPの登場背景には「インターネットを利用したB2Bにおける高信頼性の必要性」があり ます。 信頼性としては以下の内容が挙げられます。 ・メッセージ配信保証:複数の会社を相手としたB2Bの場合、ネットワークの信頼性は各社で異 なり回線速度が速いとは限りません。メッセージが確実に配信されたことを保証する必要があり ます。 ・重複排除:処理内容が課金処理であった場合、問題発生時の単純な再試行による2重更新 処理というのは避けなければなりません。 ・順序性:処理内容によっては順序性が必要なケースがあります。 ・セキュリティ:Webサービス通信をセキュアに実行する必要があります。 これらの信頼性を満たすための仕様として登場したのが"WS-ReliableMessaging"と"WSSecureConversation"です。各仕様に対してインターオペラビリティ(相互運用性)の観点から 制約を設け規定したプロファイルがWS-I RSPになります。 8 高信頼性Webサービス ~WS-ReliableMessaging~ WebSphere Application Server V7 Announcement Workshop 2008 WAS WAS V7 V7 W/S W/S #9 © IBM Corporation. Webサービス通信の信頼性を高める「WS-ReliableMessaging(WS-RM)」について説明しま す。 9 WS-RM登場の背景 WAS WAS V7 V7 W/S W/S 既存技術で信頼性を確保する際の問題点 SOAP/HTTP SOAP/HTTP Webサービス・ リクエスター Webサービス・ プロバイダー update システムA システムB エラー発生時・・・ • リクエスター側に再試行の仕組みが必要 • プロバイダー側に2重更新を防ぐ仕組みが必要 開発コスト高 SOAP/JMS 1UOW Webサービス・ プロバイダー update Webサービス・ リクエスター SOAP/JMSを使用したい・・ • SOAP/JMSのサポート(インターオペラビリティなし) • MOM製品(WMQなど)の統一 SOAP/JMS 共通ソフトウェア使用の制約 システムA システムB メッセージ転送は MOM製品が保証 メッセージの処理をグローバルトランザクション で実施すればメッセージロス、2重更新はない WebSphere Application Server V7 Announcement Workshop 2008 # 10 © IBM Corporation. WS-RM登場の背景として、既存技術で信頼性を確保しようとした場合の問題点について触れ てみます。 まずは、SOAP/HTTPの場合です。Webサービス・プロバイダーではデータベースなどのリ ソース更新処理を実行していて2重更新は防ぐ必要があるとします。このようなケースで、Web サービス・リクエスターがエラーを受け取った場合、リクエスター側には再試行の仕組みが必要 になります。しかしながら、エラーの発生したタイミングがリソース更新前なのか後なのかはエ ラー内容からだけでは判断できません。2重更新を防ぐための仕組みが必要になり、最終的に は開発コストが高くなるという問題を抱えることになります。 SOAP/JMSの場合、メッセージ転送はMOM(Message Oriented Middleware)製品によって 保証されます。また、プロバイダー側でメッセージのGETとリソース更新処理をグローバル・トラ ンザクション・スコープ内で実行すればメッセージ・ロスや2重更新を防ぐことができます。しかし ながら、MOM製品を使用するという時点でMOM製品を統一しなければならないという制約が でてきます。また、SOAP/JMSはインターオペラビリティが保証されていないというデメリットが あります。 各々のケースにおいて、再試行の仕組み、2重更新を防ぐ対策、インターオペラビリティという 観点での問題を抱えており、これらの問題を解決すべく登場したのがWS-RMです。 10 WS-RM(Web Services Reliable Messaging)とは WAS WAS V7 V7 W/S W/S Webサービスで信頼性の高いメッセージ送受信を行うための仕組み SOAP/HTTPをベースとした高信頼性を実現するためのプロトコルを規定 RM SourceとRM Destinationが確実なSOAP/HTTPのメッセージ配信を行う アプリケーションで再試行処理のコーディングは必要なし 受信済みのメッセージはRM Destinationが削除 メッセージはRM SoueceとRM Destinationで保管される WS-I RSPによるインターオペラビリティの確保 server1 server2 Webサービス・ リクエスター・アプリ Webサービス・ プロバイダー・アプリ WS.invoke() invoke() メッセージ送信を委譲 CreateSequence CreateSequenceResponse RM Source メッセージ送信 Sequence SequenceAcknowledgement RM Destinationから メッセージを受信 RM Destination メッセージ受信 WS-RMプロトコルによるメッセージ配信保証 WebSphere Application Server V7 Announcement Workshop 2008 # 11 © IBM Corporation. Web Services Reliable Messaging(WS-RM)はWebサービスで信頼性の高いメッセージ送 受信を行うための仕組みを規定したOASISの標準仕様です。 2005年2月にV1.0、2007年6月にV1.1がリリースされ、WAS V7ではV1.0/1.1の両方をサポー トしています。 ○OASIS Web Services Reliable Messaging http://docs.oasis-open.org/wsrx/wsrm/v1.1/wsrm.html WS-RMではSOAP/HTTPをベースとした高信頼性を実現するためのプロトコルを規定してい ます。 基本的な仕組みとして、Webサービス・リクエスター・アプリケーションがWebサービス呼び出し を実行すると、RM Sourceがメッセージ送信を委譲します。メッセージ受信についても同様で、 アプリケーションの代わりにRM Destinationがメッセージを受信し、Webサービス・プロバイ ダー・アプリケーションのメッセージを渡します。 WS-RMプロトコルの規定に従った信頼性の高いメッセージ配信はRM SourceとRM Destinationの間で行われます。 Webサービス・アプリケーションでは、例外発生時の再試行処理のコーディングは必要なく、ま た、一度受信されたメッセージはRM Destinationが削除するので2重更新の心配はありません。 また、メッセージはRM SourceとRM Destinationの両方で保管されるため、設定によりますが、 障害時のメッセージ・ロスもありません。 WS-I RSP(Reliable Secure Profile)によってインターオペラビリティも確保されています。 11 WS-RMの基本動作 -非同期型片方向- WAS WAS V7 V7 W/S W/S リクエストに対して、WS-RMのメッセージで送達確認(Ack)が返される 送達確認が返されないリクエストは自動で再送信 重複メッセージはRM Destinationで削除 プロバイダー (RM Destination) リクエスター (RM Source) リクエスト1 リクエスト1の送達確認 リクエスト2 障害 リクエスト2 リクエスト2 リクエスト2の送達確認 × 削除 RM Sourceによるリクエスト送信 はアプリケーションとは別スレッド WebSphere Application Server V7 Announcement Workshop 2008 # 12 © IBM Corporation. WS-RMの基本動作について、非同期型片方向を例に説明します。 [リクエスト1]Webサービス・リクエスターがWebサービス呼び出しを実行すると、アプリケーショ ンが実行されているスレッドとは別スレッドでRM Sourceがリクエスト送信を行います。WS-RM のプロトコルでは、リクエストに対して送達確認(Ack)が返ってくると正常に処理が完了したこと になります。 [リクエスト2]リクエストの送信中にネットワーク障害などが発生し、リクエストがRM Destination に届かないとします。RM Sourceは一定の間隔で送達確認が返されないリクエストを自動的に 再送信します。 リクエスト2をRM Destinationが受信し、送達確認をRM Sourceが受け取る前に、RM Source がリクエスト2の再送信を実行したとします。RM Destinationはリクエスト2を既に受信し、Web サービス・プロバイダーに渡したことを記録しているので、重複メッセージとなるリクエスト2は削 除します。 12 WS-RMの基本動作 -同期型、非同期型双方向- WAS WAS V7 V7 W/S W/S リクエストとレスポンスの両方に対して、送達確認(Ack)が返される 送達確認が返されないリクエストとレスポンスは再送信 重複メッセージは削除 障害時 正常時 リクエスター (RM Source) プロバイダー リクエスター (RM Destination) (RM Source) プロバイダー (RM Destination) リクエスト1 リクエスト1 リクエスト1の送達確認 リクエスト1 障害 リクエスト1の送達確認 レスポンス1 レスポンス1 レスポンス1の送達確認 障害 レスポンス1 レスポンス1の送達確認 WebSphere Application Server V7 Announcement Workshop 2008 # 13 © IBM Corporation. 同期型、非同期型双方向のWebサービス呼び出しのケースを説明します。 前ページの非同期型片方向を組み合わせた形でリクエストとレスポンスの両方に対して送達 確認(Ack)が返されます。非同期型片方向と同様に、送達確認が返されないリクエストとレスポ ンスは再送信され、重複メッセージは削除されます。 13 メッセージは「シーケンス」の概念の元で送受信される WAS WAS V7 V7 W/S W/S シーケンス:特定のRMSourceとRMDestination間で送受信されるメッセージ集合 特定のWebサービスで送受信されるメッセージ集合 シーケンス確立でRMSourceとRMDestinationのエンドポイントURLの組を情報として持つ シーケンス確立後にメッセージ送信を行う リクエスター (RM Source) プロバイダー (RM Destination) CreateSequence ①シーケンスの確立 ①シーケンスの確立 CreateSequenceResponse(Identifier=seq1) リクエスト1(Identifier=seq1,Message#=1) リクエスト1送達確認(Identifier=seq1,Message#=1 ) ②メッセージの送信 ②メッセージの送信 SOAPヘッダーにSequence情報を含む SOAPヘッダーにSequence情報を含む リクエスト2(Identifier=seq1,Message#=2) リクエスト2送達確認(Identifier=seq1,Message#=1~2 ) : TerminateSequence(Identifier=seq1) ③シーケンスの終了 ③シーケンスの終了 TerminateSequenceResponse(Identifier=seq1) WebSphere Application Server V7 Announcement Workshop 2008 # 14 © IBM Corporation. WS-RMのメッセージは「シーケンス」という概念の元で送受信されています。 「シーケンス」とは特定のRM SourceとRM Destinationの間で送受信されるメッセージ集合、 つまり、特定のWebサービスで送受信されるメッセージ集合と言えます。 WS-RMの仕様では、このシーケンスを明示的に区切り、シーケンス内で送受信されるメッセー ジ集合について確実な配信を行います。WASの実装では、デフォルトでアプリケーション起動 後の最初のリクエスト実行時にシーケンス確立の処理が行われます。明示的にシーケンスを区 切るにはアプリケーションでのコーディングが必要になります。コーディング方法の詳細につい ては、以下リンクのInfoCenterをご参照ください。 ○WAS V7 InfoCenter 「Controlling WS-ReliableMessaging sequences programmatically」 http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/topic/com.ibm.websphere.nd.doc/i nfo/ae/ae/twbs_wsrm_prog_seq.html WS-RMのプロトコルでは最初にシーケンスの確立を行い、RM SourceとRM Destinationの 互いのエンドポイントURLの組を情報として保持します。この時にシーケンスIDが発行されます。 確立されたシーケンスの元で、Webサービス呼び出しがRM SourceとRM Destinationの間で 行われます。同一のWebサービス呼び出しについては、同じシーケンスの元で異なるメッセー ジIDが割り当てられることになります。すべてのリクエストにシーケンスIDとメッセージIDが付与 され、管理されます。障害発生時にもシーケンスIDによって宛先にエンドポイントURLを認識し、 メッセージIDによって配信に失敗したリクエストを判断し、リクエストの再送信を実行することが できます。 14 (参考)シーケンスの確立 WAS WAS V7 V7 W/S W/S CreateSequenceメッセージ(新規シーケンス作成要求) <soapenv:Envelope ><soapenv:Header> <wsa:To>http://abcd.makuhari.japan.ibm.com/HelloWSRMSrvWeb/HelloWSRMService</wsa:To> </soapenv:Header> <soapenv:Body> RM Destination側 <wsrm:CreateSequence xmlns:wsrm="http://docs.oasis-open.org/ws-rx/wsrm/200702"> エンドポイントURL <wsrm:AcksTo> <wsa:Address>http://efgh.makuhari.japan.ibm.com/HelloWSRMSrvWeb/HelloWSRM</wsa:Address> </wsrm:AcksTo> </wsrm:CreateSequence> RM Source側 </soapenv:Body></soapenv:Envelope> エンドポイントURL CreateSequenceResponseメッセージ(シーケンス作成応答) <soapenv:Envelope><soapenv:Header> <wsa:To>http://efgh.makuhari.japan.ibm.com/HelloWSRMSrvWeb/HelloWSRM</wsa:To> </soapenv:Header> <soapenv:Body> <wsrm:CreateSequenceResponse xmlns:wsrm="http://docs.oasis-open.org/ws-rx/wsrm/200702"> <wsrm:Identifier>urn:uuid:BB591B19CEBBA392711187699405920</wsrm:Identifier> </wsrm:CreateSequenceResponse> </soapenv:Body></soapenv:Envelope> シーケンスID シーケンスIDとRM シーケンスIDとRM Source/RM Source/RM DestinationのエンドポイントURLが紐付けられる DestinationのエンドポイントURLが紐付けられる WebSphere Application Server V7 Announcement Workshop 2008 # 15 © IBM Corporation. 参考情報としてシーケンス確立時の送受信されるCreateSequenceメッセージと CreateSequenceResponseメッセージをご紹介します。 SOAPヘッダーにWS-RMのプロトコルが含まれていることがわかります。 CreateSequenceResponseメッセージではシーケンスIDが付与されていることがわかります。 15 (参考)WS-Addressing WAS WAS V7 V7 W/S W/S W3Cの仕様、Webサービスのアドレス情報を記述するための標準 二つの概念を定義 End Point References(EPRs) エンドポイントの場所を特定するためのURI(必須)+参照プロパティ+参照パラメーター <wsrm:AcksTo> <wsa:Address>http://abcd.makuhari.japan.ibm……..</wsa:Address> </wsrm:AcksTo> Message Information ヘッダー ==<wsrm:AcksTo> メッセージを転送するための情報 Toヘッダー <wsa:To>http://host/…..</wsa:To> エンドポイントのURI ReplyToヘッダー <wsa:ReplyTo> <wsa:Address>http://host/…</wsa:Address> </wsa:ReplyTo> 応答メッセージが送信されるべきEP R(エンドポイントURI) MessageID <wsa:MessageID>uuid:0123555</wsa:MessageID> メッセージを一意に識別するためのURI Action <wsa:Action>http://host/……</wsa:Action> メッセージの意図を特定するための情報 RelatesTo <wsa:RelatesTo>uuid:0123555</wsaRelatesTo> 先に交換されているメッセージのMessageId を含み、そのメッセージとの関連を示す トランスポート・レベルに依存することなくメッセージを伝搬 トランスポート・レベルに依存することなくメッセージを伝搬 WebSphere Application Server V7 Announcement Workshop 2008 # 16 © IBM Corporation. 参考情報として、WS-Addressingの情報をご紹介します。 WS-Addressingは、それ自体単独で使用されることは稀ですが、WS-RMやWS-Transaction などの他のWebサービス技術の中で暗黙的に使用されることの多い技術です。 Webサービスのアドレス情報を記述するためのW3Cの標準仕様で、HTTPヘッダーの情報と は別にSOAPヘッダーにアドレス情報を含ませる場合に使用されます。 16 MessagingEngine(ME)を使用したメッセージの永続化 WAS WAS V7 V7 W/S W/S WASではメッセージをメモリー、またはMessagingEngine(ME)に保管 別JVM上で稼動するMEを使用することでメッセージの永続化を実現 server1 server2 Webサービス・ リクエスター Webサービス・ プロバイダー WS.invoke() QoS invoke() メッセージ送信を委譲 RM Source メモリー メッセージ送信 CreateSequence CreateSequenceResponse Sequence SequenceAcknowledgement RM Destinationから メッセージを受信 RM Destination メッセージ受信 QoS メモリー WS-RMプロトコルによるメッセージ配信保証 1. 2. 3. 4. 5. アプリケーションからRM Sourceにメッセージ送信を委譲 RM Sourceはメッセージを保管してから、制御をアプリケーションに戻す RM SourceはメッセージをRM Destinationに送信 RM Destinationはメッセージを受信すると、保管してから送達確認を送信 RM Destinationはアプリケーションにメッセージを送信 WebSphere Application Server V7 Announcement Workshop 2008 # 17 © IBM Corporation. WS-RMを使用する上で、WASではWebサービスのSOAPメッセージをローカルのメモリー上、 もしくは別JVMで稼動するMessaging Engine(ME)に保持することができます。ME上にメッ セージを保管することで、アプリケーション・サーバーの障害時にもメッセージを失うことなく永 続化が可能です。 処理の遷移は以下になります。 1.Webサービス・リクエスター・アプリケーションでWebサービス呼び出しが実行されると、メッ セージ送信はRM Sourceに委譲されます。 2.RM SourceはSOAPメッセージをメモリー、もしくはMEに保管してから、制御をアプリケー ションに戻します。 3.RM SourceはSOAPメッセージをRM Destinationに送信します。 (この間はWS-RMプロトコルによるメッセージのやりとりが行われます) 4.RM DestinationはSOAPメッセージを受信すると、メモリー、もしくはMEに保管してから送 達確認を送信します。 5.RM DestinationはWebサービス・プロバイダー・アプリケーションにメッセージを送信します。 17 WS-RMのQoSの設定 WAS WAS V7 V7 W/S W/S WASでは3つのレベルのQoSを提供 QoSの内容 ①メッセージ、シーケンス情報の保管方法 ②トランザクション・サポートの有無 非管理非パーシスタント ローカル・メモリー上に情報を保持 トランザクション・サポート無し サーバー障害時にメッセージ情報を失う 管理非パーシスタント MEに情報を保持、情報を非同期にデータストアに保管 トランザクション・サポート有り ME障害時にはメッセージ情報を失う ME自体はJVM 上で稼動 管理パーシスタント MEに情報を保持、情報を同期的にデータストアに保管 トランザクション・サポート有り ME障害時にもメッセージ情報を失わない DB メッセージ永続化のためにデータス トアとしてDBかファイルを指定 WebSphere Application Server V7 Announcement Workshop 2008 # 18 © IBM Corporation. WASでは、WS-RMのQoS設定として3つのレベルを設けています。 QoSで設定する内容は、①WS-RMのメッセージやシーケンス情報の保管方法と②トランザクション・サポートの有 無の2点です。 ・非管理非パーシスタント メッセージやシーケンス情報はJVMのメモリー上に保持するため、サーバー障害(JVM障害)時に情報を失い、 メッセージのロスに繋がります。また、トランザクションをサポートしていません。 ・管理非パーシスタント メッセージやシーケンス情報をMEに保管し、MEのデータストアに対して非同期に永続化を実施します。サー バー障害時には情報を失いませんが、ME障害時に情報を失う可能性があります。(ME障害時にデータストアへ 保管されていない情報を失います)トランザクションをサポートしています。 ・管理パーシスタント メッセージやシーケンス情報をMEに保管し、MEのデータストアに対して同期的に永続化を実施します。サー バー障害時、ME障害時の両方で情報を失うことはありません。トランザクションをサポートしています。 ※以下、用語の使い方をまとめています。 非管理:メモリー上に情報を保持。トランザクション・サポート無し 管理:MEに情報を保持。トランザクション・サポート有り 非パーシスタント:サーバー障害、もしくはME障害時に情報を失う可能性があります。 パーシスタント:サーバー障害、ME障害時、共に情報を失うことはありません。 18 (参考)管理非パーシスタントと管理パーシスタントの違い WAS WAS V7 V7 W/S W/S MEの「メッセージの信頼性」が異なる 管理非パーシスタント:「高信頼性非パーシスタント」 MEはアプリケーションからメッセージの送信/受信要求を受け取ると、メッセージをキャッ シュ・バッファに書き込んだ時点で、アプリケーションに制御を戻します。メッセージがある 程度、キャッシュ・バッファに滞留した場合のみ書き込みます。 キャッシュ・バッファのサイズ指定可能です。 管理パーシスタント:「保障パーシスタント」(最も信頼性が高くメッセージのロス はなし) MEはアプリケーションからメッセージの送信/受信要求を受け付けると、同期的にメッセージ をデータ・ストアに挿入/削除します。書き込みがうまくいったことを確認してから、アプリ ケーションに制御を戻します。 共にMEの高可用性は別途考慮が必要 WebSphere Application Server V7 Announcement Workshop 2008 # 19 © IBM Corporation. 管理非パーシスタントと管理パーシスタントの違いを説明します。 共にメッセージやシーケンス情報をMEに保管するという点は同じですが、MEに設定する「メッ セージの信頼性」のレベルが異なります。 管理非パーシスタントの信頼性は「高信頼性非パーシスタント」でMEのJVM上にある一定の メッセージが滞留した段階でデータストアにメッセージが保管されます。 管理パーシスタントの信頼性は「保障パーシスタント」でMEはメッセージの送受信と同期的に データストアに情報を挿入/削除します。データストアへの書き込みが成功してからアプリケー ションに制御を戻すため、データストアへの情報保管は確実に実行されます。 共にMEを使用する構成となるため、MEの高可用性については別途考慮が必要です。 19 トポロジー構成 WAS WAS V7 V7 W/S W/S 非管理非パーシスタント シングルサーバー構成が対象 クラスター構成のサービスに適用するとアプリケー ションが始動しない アプリケーション・サーバー障害時に情報を損失 Webサービス・ リクエスター RM Source Webサービス・ プロバイダー RM Destination メモリー server1 メッセージのロス 管理非パーシスタント/管理パーシスタント シーケンス情報を別JVM上のMEで共用 クラスター構成が可能 全クラスターメンバーがMEからシーケンス情報を取得 サーバー障害時に情報を損失しない Webサービス・ プロバイダー 他のクラスター・メンバーが処理を実施 Webサービス・ リクエスター WAS Proxyサーバー RM Source RM Destination server1 Webサービス・ プロバイダー ME RM Destination server2 Cluster WebSphere Application Server V7 Announcement Workshop 2008 # 20 © IBM Corporation. WS-RMを使用した場合のトポロジー構成について説明します。 WS-RMのトポロジー構成はQoS設定によって画面に示すように異なります。 ・非管理非パーシスタント シーケンスやメッセージの情報をメモリー上に保管する非管理非パーシスタントは、シングル サーバー構成を対象としており、クラスター構成を組むことができません。アプリケーション・ サーバー障害時には情報を損失するので、メッセージのロスにも繋がります。最もシンプルな 構成でネットワーク障害時のみに対応可能です。 ・管理非パーシスタント/管理パーシスタント クラスター構成が可能で、シーケンスやメッセージ情報をMEで共用します。サーバー障害時 にもMEに保管された情報によって他のクラスター・メンバーが処理を続行します。 クラスター構成を組む場合、WS-RMプロトコルのメッセージを同一のアプリケーション・サー バー(クラスター・メンバー)に処理させるためには、Webサービス・リクエスターとWebサービ ス・プロバイダーの間にIHSなどのWebサーバーではなくWASのプロキシー・サーバーを配置 する必要があります。同一シーケンスの情報を同じアプリケーション・サーバーに送信するア フィニティ機能をWebサーバーは持っていないためです。 クラスター構成では、ネットワーク障害に加えてアプリケーション・サーバー障害にも対応できま す。 20 トランザクション・サポート <リクエスター側> WAS WAS V7 V7 W/S W/S 管理パーシスタント/管理非パーシスタントが対象 リクエスター側 非同期型片方向のみトランザクション処理が可能(双方向はサポートされない) MEへのメッセージのPUTがトランザクションスコープに含まれる MEへのメッセージPUTが成功した段階でアプリケーションに制御が戻る server1 1UOW RequesterApp server2 ut.begin() ProviderApp update DB invoke() ut.commit() RM Source Webサービス・リクエスター トランザクションのコ ミットのタイミングで メッセージを送信 RM Destination Webサービス・プロバイダー 設定方法 リクエスター側のコーディングでenableTransactionOnewayプロパティを"true"にセットする Map<String, Object> rc = ((BindingProvider) port).getRequestContext(); rc.put(com.ibm.websphere.webservices.Constants.ENABLE_TRAN_ONEWAY,new Boolean(true)); WebSphere Application Server V7 Announcement Workshop 2008 # 21 © IBM Corporation. WS-RMを使用した場合のトランザクション・サポートについて説明します。 まず、Webサービス・リクエスター側のトランザクション処理ですが、Webサービス呼び出しが 非同期型片方向の場合のみサポートされています。双方向型の場合、応答メッセージの受信 までをトランザクション処理に含めることはできませんのでサポートされていません。WS-RMの 処理をトランザクショナルに実行したい場合、MEへのメッセージのPUT処理をトランザクショ ン・スコープに含めることが可能です。トランザクションのコミット処理が完了したタイミングでメッ セージの送信が実行されます。例えば、リクエスター側のアプリケーション処理にデータベース 更新処理などが含まれている場合、データベース更新処理をMEへのメッセージのPUTを同 一トランザクションの処理として実行することができます。MEのPUT処理に失敗した時に、 データベース更新処理をロールバックすることが可能です。 ・設定内容は以下の2点です。 アプリケーション内でトランザクションの開始(begin)・終了(commit)処理を実行します。 Webサービス・リクエスターのenableTransactionOnewayプロパティを"true"にセットします。 21 トランザクション・サポート <プロバイダー側> WAS WAS V7 V7 W/S W/S 管理パーシスタント/管理非パーシスタントが対象 プロバイダー側 非同期型片方向と双方向でトランザクション処理が可能 RM Destinationからアプリケーションへのメッセージのディスパッチがトランザク ションスコープに含まれる 双方向ではトランザクションがコミットされてから応答メッセージが送信されます 1UOW server1 RequesterApp server2 ProviderApp DB RM Source Webサービス・リクエスター RM Destination Webサービス・プロバイダー 設定方法 WS-RMポリシーで「送信順にメッセージを配信」にチェックする *順序性を保つために、キューにメッセージが保留されるとパフォーマンスのオーバーヘッドとなる WebSphere Application Server V7 Announcement Workshop 2008 # 22 © IBM Corporation. Webサービス・プロバイダー側のトランザクション処理について説明します。 プロバイダー側では非同期型片方向と双方向の両方でトランザクション処理が可能です。 RM Destinationからアプリケーションへのメッセージのディスパッチがトランザクション・スコー プに含まれます。 双方向(同期型)の処理ではトランザクションがコミットされてから応答メッセージが送信されま す。 ・設定方法 WS-RMポリシーの設定で「送信順にメッセージを配信」にチェックをつけます。 (もしくはwsadminツールでinOrderDeliveryをtrueに設定します) 順序性を保つために、キューのメッセージが保留されるのでパフォーマンスのオーバーヘッド となることに注意してください。 22 (参考)その他考慮点 WAS WAS V7 V7 W/S W/S 順序性 WS-RMポリシーで「送信順にメッセージを配信」にチェックをつける WS-ATとの関係 QoSでMEを使用する場合WS-ATは使用できない MEを使用しない非管理対象ではWS-ATを使用可能 WS-ATのトランザクション・スコープ 1UOW ut.begin() update update DB invoke() DB ut.commit() × WS-AT&WS-RMプロトコル メモリー RM Source Webサービス・リクエスター RM Destination × メモリー Webサービス・プロバイダー WebSphere Application Server V7 Announcement Workshop 2008 # 23 © IBM Corporation. その他の考慮点として以下の2点を説明します。 ・順序性 WS-RMでRM Sourceが処理した順番通りにRM Destinationに処理を実行させたい場合に 使用します。 ・WS-ATとの関係 QoS設定でMEを使用する場合(管理パーシスタント/管理非パーシスタント)は、WS-ATを併用 することはできません。 WS-ATを使用するというのは画面の絵に示すように、Webサービス・リクエスターからWeb サービス・プロバイダーまでの全ての処理をトランザクション・スコープに含めるということになり ます。 MEを使用しない非管理非パーシスタントの構成(シングルサーバー構成になります)ではWSATを併用することができます。 ○InfoCenter 「Providing transactional recoverable messaging through WSReliableMessaging」 http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/topic/com.ibm.websphere.nd.doc/i nfo/ae/ae/twbs_wsrm_trans.html 23 WS-RMの運用① WAS WAS V7 V7 W/S W/S 管理コンソールによるシーケンスのモニタリング RM Destinationが保持 するシーケンス情報 RM Sourceが保持する シーケンス情報 RM Sourceからの送信でエ ラーが発生していることを示す WebSphere Application Server V7 Announcement Workshop 2008 # 24 © IBM Corporation. WS-RMの運用として、WASの管理コンソールではWS-RMのシーケンス情報をモニタリング することができます。 ナビゲーション・ツリーから[サービス]>[高信頼性メッセージングの状態]を選択すると画面のよ うなページが表示されます。 ・メッセージストア:WS-RMで使用するMEの状態を確認します ・インバウンド・シーケンス:RM Destinationが保持するシーケンス情報を確認します ・アウトバウンド・シーケンス:RM Sourceが保持するシーケンス情報を確認します 送信が完了できていないメッセージがあると画面に示すような警告マークが表示されエラーが 発生していることを示します。 24 WS-RMの運用② WAS WAS V7 V7 W/S W/S トラブルシューティングは管理コンソールから可能 障害が回復すれば処理は正常に実施される RM Sourceで保持する メッセージ数 送信済み+保持するメッ セージ数 エラー情報 WebSphere Application Server V7 Announcement Workshop 2008 # 25 © IBM Corporation. WS-RMの処理でエラーが発生した場合のトラブルシューティングは管理コンソールから行うこ とができます。 例としてアウトバウンドシーケンスのページを画面に示します。 シーケンスごとに、シーケンスID、アプリケーション名、エンドポイントURL、RM Sourceで保持 している(未送信の)メッセージ数、送信済みメッセージ(送信済み+保持するメッセージ)数、 エラー情報、状況を示します。 シーケンスIDを選択すると、保持しているメッセージのメッセージ番号とメッセージ内容を確認 することができます。エラーが発生した場合などで、保持しているメッセージの送信をキャンセ ルする場合は、この画面で削除します。 25 (参考)WS-RMの運用③ WAS WAS V7 V7 W/S W/S ZIPファイルでエクスポート(中身はテキスト形式) 新規シーケンスを作成して未送信メッセージを割り振る WebSphere Application Server V7 Announcement Workshop 2008 # 26 © IBM Corporation. エラーが発生している場合、未送信メッセージ(保持しているメッセージ)をZIP形式のファイル でエクスポートすることができます。("未送信メッセージのエクスポート"ボタン) また、現在のシーケンスでの送信を止め、新規シーケンスを作成して未送信メッセージを割り 振るということも可能です。("メッセージの再割り振り"ボタン) 26 会話型Webサービス・セキュリティ ~WS-SecureConversation~ WebSphere Application Server V7 Announcement Workshop 2008 WAS WAS V7 V7 W/S W/S # 27 © IBM Corporation. 会話型のWebサービス・セキュリティとして「WS-SecureConversation(WS-SC)」について説 明します。 まずは、Webサービス・セキュリティの説明を簡単に行い、その後にWS-SecureConversation の説明となります。 27 Webサービスにおけるセキュリティ WAS WAS V7 V7 W/S W/S Webサービスのセキュリティを確保するためには以下の方法がある トランスポート・レベル SSL(HTTPS)通信とHTTPベーシック認証によるアクセス制御 データは全て暗号化 Webサービス リクエスター SSL通信 SSLは2地点間のみの仕組み SOAP/HTTPのみの環境でしか利用できない マシン間でのセキュリティ Webサービス アプリケーション SOAP SOAP 平文 平文 メッセージ・レベル SOAPメッセージの全体または一部へのデジタル署名の付加/メッセージ自体の暗号化 Webサービス アプリケーション Webサービス リクエスター SOAP SOAP SOAP 平文 暗号化 平文 トランスポート層に非依存 メッセージ・レベルのセキュリティ サービス単位のセキュリティ SOAPメッセージをセキュアに扱うた めの仕様としてWS-Securityが策定 WebSphere Application Server V7 Announcement Workshop 2008 # 28 © IBM Corporation. Webサービスを使用する環境において、セキュリティを確保するためには、「トランスポート・レ ベルのセキュリティ」と「メッセージ・レベルのセキュリティ」の2つの方法が挙げられます。 ・トランスポート・レベルのセキュリティ SSL(HTTPS)通信とHTTPベーシック認証によるアクセス制御を行う従来の方法です。SSLは マシン間の通信データを全て暗号化し、セキュリティを確保しています。2地点間のみの仕組 みであること、SOAP/HTTPのみの環境でしか利用できないといった特徴があります。 ・メッセージ・レベルのセキュリティ SOAPメッセージの全体、または一部に対してデジタル署名の付加やメッセージの暗号化を行 います。このSOAPメッセージをセキュアに扱うための仕様として作成されたのがWS-Security です。 Webサービスの考えをベースとしていることから、トランスポート層に依存せず、また、サービス 単位でセキュリティをかけることができます。更に、細かくメッセージ・レベルでのセキュリティも 可能です。 28 WS-Securityとは WAS WAS V7 V7 W/S W/S WS-Security SOAPメッセージングのセキュリティ強化仕様 OASISでの仕様策定 2004年4月 v1.0リリース / 2006年2月 v1.1リリース 以下のセキュリティ要件に対応 認証(Authentication) サービスを使用できるクライアントか? セキュリティ・トークンによる認証 完全性(Integrity) メッセージが不正に改ざんされていないか? XML署名とセキュリティ・トークンの組み合わせ 複数のメッセージ要素に対して、柔軟に署名が可能 機密性(Confidentiality) メッセージの盗聴はされていないか? XML暗号化とセキュリティ・トークンの組み合わせ 複数のメッセージ要素に対して、柔軟に暗号化が可能 WebSphere Application Server V7 Announcement Workshop 2008 # 29 © IBM Corporation. WS-Securityの目標は、アプリケーションがセキュアなSOAPメッセージ交換を行えるようにす ることです。 SOAPメッセージにおける、セキュリティ・トークンの受け渡し、メッセージの完全性、およびメッ セージの機密性の3つの主要なメカニズムを提供します。 これらのメカニズムは単独で使用することも、統合した手法で使用することもできます。(メッ セージの署名と暗号化を行い、署名と暗号化で使用される鍵に関連付けられたセキュリティ トークン階層を提供するなど)また、SOAP仕様のactor/role要素を使用して、複数のセキュリ ティ・モデルを使用して別々のメッセージ要素に対して署名・暗号化をかけることや、同一の メッセージ要素に対して署名・暗号化を同時にかけるなど柔軟な設計が可能です。 WS-Securityは明示的な固定されたセキュリティプロトコルについて記述しているわけではあり ません。将来的なスタンダードへの対応も見据え、拡張可能な形のフレームワークとして設計 されています。 29 (参考)セキュリティ・トークン WAS WAS V7 V7 W/S W/S セキュリティ・トークンはSOAPメッセージを保護するためのものとしてWSSecurityで定義 SecurityToken : A security token represents a collection (one or more) of claims. Claim – A claim is a declaration made by an entity (e.g. name, identity, key, group, privilege, 290 capability, etc). ID、鍵、役割等のclaims(申告)を含む セキュリティ・ヘッダとしてSOAPメッセージに組み込まれる WS-Securityでサポートするセキュリティ・トークン UsernameToken ユーザー名とパスワードをテキスト形式で含む SSLとの併用が必要 署名なしセキュリティ・トークン BinarySecurityToken X.509証明書、Kerberos V5チケットなど デジタル署名、暗号化で参照される鍵を含む 署名付きセキュリティ・トークン Security Token BinarySecurityToken UsernameToken X.509証明書 Kerberosチケット 第3の機関によってBinary Security Tokenは保証されて いる WebSphere Application Server V7 Announcement Workshop 2008 # 30 © IBM Corporation. セキュリティ・トークンは内部にリクエスターのIDや鍵情報、役割情報などのclaims(申告)とよ ばれる認証の為の情報を含みます。 WS-Securityはこのセキュリティ・トークンをSOAPヘッダーに組み込む方法を定義しています。 WS-Security1.0/1.1ではサポートされるセキュリティ・トークンとして基本認証に使用される UsernameTokenおよび任意のバイナリ・セキュリティ・トークンがサポートされます。 バイナリー・セキュリティ・トークンは証明書を含み署名が施されたトークンのため、署名付きセ キュリティ・トークンとして分類されます。一方でUsernameTokenはユーザー名とパスワードの みを含む単独なトークンです。そのままではネットワーク上にこれらのトークンの値が平文で流 れてしまうためSSL等と併用する必要があります。また、リプレイ攻撃への対策のため、nonce およびタイムスタンプを使用してダイジェスト化を行うことが推奨されます。バイナリー・セキュリ ティ・トークンが含む証明書の公開鍵をデジタル署名・暗号化に利用することができます。 30 (参考)XMLデジタル署名概要 WAS WAS V7 V7 W/S W/S WS-Securityのデジタル署名はXML署名がベース XML署名はXMLにデジタル署名を埋め込むための標準化仕様 平文からハッシュ関数を使用してメッセージダイジェストを生成 ① 署名対象データを正規化した上で、ダイジェスト値を計算する ② ①のダイジェスト値を子要素としてXML署名情報要素(SignedInfo)に入れ、 さらにその署名情報要素に対して署名値を計算する SOAP データ 計算 送信! ダイジェスト Aさん AさんのKey ダイジェスト 比較 復号化 ダイジェスト 計算 計算 SOAP データ ダイジェスト OK! ダイジェスト 計算 ダイジェスト AさんのKey Bさん ダイジェスト 復号化 比較 OK! ダイジェスト WebSphere Application Server V7 Announcement Workshop 2008 # 31 © IBM Corporation. WS-Securityのデジタル署名はXML署名(http://www.w3.org/Signature/)をベースとする仕 様です。 XML署名はXMLにデジタル署名を埋め込むための仕様で、公開鍵暗号化方式をベースにし た署名方式です。 以下の流れで署名対象のデータに対して署名を行います。 ①署名対象データを正規化した上で、ダイジェスト値を計算し、署名情報要素(SignedInfo)に 格納 ※XML文書では内容が同じであってもXML構文に挿入された空白文字や改行などが任意に 加わると表現が異なり、結果としてダイジェスト値が変わり、署名値が異なってしまうから。 ②署名情報要素に対して正規化を行った後に、指定した署名アルゴリズムで署名値 (SignatureValue)を計算し文書内に含める。 検証時の流れは署名時の逆に ①署名情報要素(SignedInfo)内のダイジェスト値を検証 ②署名情報要素に対して計算された暗号化署名値を検証 オプションとしてKeyInfo要素に署名検証のための鍵情報を含めることができます。 31 (参考)XML暗号概要 WAS WAS V7 V7 W/S W/S データを暗号化しXML文書で表す標準仕様 任意のXML文書、XML要素、XML要素の内容の暗号が可能 XML暗号仕様 W3C「XML Encryption WG」 http://www.w3.org/Encryption/2001/ WS-Securityの暗号化 XML暗号に基づく SOAPメッセージ(header, body)の全部または一部を暗号化 データの暗号化そのものは、共通鍵暗号方式を使用 共通鍵は事前に送受信者で共有、または、公開鍵で暗号化してメッセージに含めて送付 元の データ SOAP SOAP 暗号化した データ 暗号化した データ 暗号化 復号化 元の データ 送信! 暗号化Key情報 暗号化Key情報 Bさん Aさん WebSphere Application Server V7 Announcement Workshop 2008 # 32 © IBM Corporation. WS-Securityの暗号化はXML暗号(http://www.w3.org/Encryption/2001/)をベースとする仕 様です。 XML暗号は任意のXML文書、要素、値を暗号化してXML文書で表すための仕様で、公開鍵 暗号化方式をベースにすることができます。 公開鍵暗号化方式を使用する場合、以下の流れで対象データに対して暗号化を行います。 ①対象データを共通鍵で暗号化 ②共通鍵をプロバイダーの公開鍵で暗号化 ③リクエストメッセージに暗号化した共通鍵を含め、送信 検証時の流れは、暗号化時の逆に ①プロバイダーは秘密鍵で共通鍵を復号化 ②対象データを共通鍵で復号化 共通鍵を何らかの方法で事前に渡すことが可能な場合、公開鍵を間に挟まずに共通鍵のみ でデータの暗号化・復号化が可能です。 32 WS-Securityのインターオペラビリティ WAS WAS V7 V7 W/S W/S WS-IよりWS-Securityの相互運用に関する多数のプロファイルが策定 WS-Securityの基本動作に関するプロファイル Basic Security Profile WS-Securityで使用するセキュリティ・トークンに関するプロファイル Username Token Profile/X.509 Token Profile/Kerberos Token Profile WS-RMとWS-SC、WS-Trustに関するプロファイル Reliable Secure Profile WS-Trust 1.3 WS-I Reliable Secure Profile 1.0 WS-ReliableMessaging 1.1 WS-SecureConversation 1.3 WS-I Basic Security Profile 1.1 WS-Security 1.1 Kerberos Token Profile New v7 SAML Token Profile REL Token Profile WS-I Basic Security Profile 1.0 WS-I Basic Profile 1.1 WS-Security 1.0 Username Token Profile X.509 Token Profile WS-I Basic Profile 1.0 WebSphere Application Server V7 Announcement Workshop 2008 # 33 © IBM Corporation. 異なるベンダー実装間でWebサービスによる接続を行う際には、関連する各仕様の厳密でな い定義部分が相互接続性に影響を与える可能性があります。WSDLやSOAP仕様において は標準化団体WS-IのBasicProfileによって相互接続のための制約が提言されています。WSSecurityにおいては同団体によってBasicSecurityProfileが規定されています。 WS-Securityで使用されるセキュリティ・トークンについては別にプロファイルが作成されており、 Username Token Profile / X.509 Token Profile / Kerberos Token Profileがあります。 Kerberos Token ProfileのサポートはWAS V7からの新機能です。 BasicSecurityProfileではSAML Token ProfileやREL(Rights Expression Language) Token Profileについて記述されていますが、WAS V7ではサポートされておりません。 WS-Security V1.0に関して規定されたプロファイルがBasic Security Profile V1.0、 WSSecurity V1.1に関して規定されたプロファイルがBasic Security Profile V1.1になります。 Basic Security Profile 1.1にWS-Trust V1.3/WS-SecureConversation V1.3/WSReliableMessaging V1.3を使用する上での相互接続性の観点での制約を規定したものが Reliable Secure Profileになります。(2008/10現在 V1.0がWorkingGroupDraftのステータス です) 33 WS-Secure Conversation/WS-Trust WAS WAS V7 V7 W/S W/S WS-SecureConversation(WS-SC) 複数のメッセージ交換に渡るセキュリティ提供方法を定義 セキュリティ・コンテキストの作成・共有 WS-Trust セキュリティ・トークンの発行および交換方法を定義 WS-SC WS-SC WS-Security WS-Security リクエスター WS-Trust WS-Trust プロバイダー プロバイダー リクエスター 暗号化 復号化 SO AP +W S-S ecu rit 復号化 暗号化 暗号化 復号化 y 拡張 暗号化 復号化 メッセージレベルの保護を目的とした、 認証、署名および暗号化の方法を定義 暗号化 復号化 公開鍵暗号方式を使用した署名、暗号 化を要求/応答の度に実行 *図では例として暗号化を実施しています。 SCT作成要求 SCT作成応答 復号化 SO AP 復号化 +W S-S C SO AP +W S-S C 暗号化 暗号化 復号化 暗号化 複数のメッセージ交換に渡るセキュリティ 提供方法を定義 SCT:セキュリティ・コンテキスト・トークン WebSphere Application Server V7 Announcement Workshop 2008 # 34 © IBM Corporation. WS-SecurityはSOAPメッセージ交換をセキュアに行うことを目的とし、認証、署名および暗号 化の方法を定義していますが、将来的な拡張を見据えた仕様としていることから複数のメッ セージ交換を考慮したものではありません。複数のメッセージ交換が発生すると認証、および 公開鍵暗号方式を使用した署名、暗号化が要求/応答処理の度に実行され、CPU負荷を高め る要因になります。 WS-SecureConversation(WS-SC)では、そのような問題を解消すべくWS-Securityを拡張し た複数メッセージ交換に渡るセキュリティ提供方法を定義しています。WS-SCがセキュリティ・ コンテキストの作成・共有方法について定義しているのに対して、WS-Trustではセキュリティ・ トークンの発行および交換方法を定義した仕様になります。別仕様として規定されていますが、 WS-SCを使用する上でWS-Trustは必須機能です。 WS-SecureConversation、WS-Trustは共にOASISで策定された標準仕様です。2007年3 月にV1.3がリリースされています。 34 WS-SCの仕組み① セキュリティ・コンテキスト・トークンの生成 WAS WAS V7 V7 W/S W/S セキュリティ・コンテキスト リクエスター、プロバイダー間の認証を確立するために使用した鍵や関連プロパティ WS-SCの通信関係が存続している間、2者間で共有される 共通秘密鍵 セキュリティ・コンテキスト・トークンとは セキュリティ・コンテキストを含む、セキュリティ・トークン RSTを受けて、セキュリ ティ・コンテキスト・トーク ン(SCT)を作成 プロバイダー リクエスター RequestSecurityToken(RST) RequestSecurityTokenResponse(RSTR) トラスト・ サービス SC T WS-Security ランタイム SCTはメモリー 上にキャッシュ S CT Webサービス・ プロバイダー WebSphere Application Server V7 Announcement Workshop 2008 # 35 © IBM Corporation. WS-SCの仕組みの前半としてセキュリティ・コンテキスト・トークン(SCT)の生成について説明します。 セキュリティ・コンテキストとは、リクエスターとプロバイダー間の認証を確立するために使用した鍵や関連プロパ ティを示します。WS-SCの通信関係が存続している間、2者間で共有される共通秘密鍵のようなものです。 ※SOAPメッセージ内ではセキュリティ・コンテキストを<SecurityContextToken>と表します。 セキュリティ・コンテキスト。トークン(SCT)とは、セキュリティ・コンテキストを含んだセキュリティ・トークンを意味しま す。 WS-SCは最初にSCTを生成し、リクエスターとプロバイダーの両者間で共有するところからConversationが開始 されます。WS-SCの最初の処理シーケンスを説明します。 ①リクエスターからRequestSecurityTokenメッセージ(SOAPメッセージ)が送信されます。 ②RSTを受けて、プロバイダーのトラスト・サービスはセキュリティ・コンテキスト・トークン(SCT)を生成します。* ③プロバイダーは生成したSCTをリクエスターに送信します。リクエスターとプロバイダーの両者間でSCTは一定 期間キャッシュされます。 WS-SCの最初に行われるSCTの受け渡し(①と③)処理はWS-Securityの公開鍵暗号方式を使用し、セキュリ ティを確保します。 *SCTの生成はWS-Trustで規定されており、通常は第3者機関に委ねられるようです。WASの実装ではRSTを 受けたWASのランタイム上のトラスト・サービスがSCTを発行します。 WASにおけるWS-Trustのサポート状況については未サポート部分がいくつかありますので、詳細については以 下リンクのInfoCenterの記述をご参照ください。 ○InfoCenter 「Web Services Secure Conversation」 http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/topic/com.ibm.websphere.nd.doc/info/ae/ae/cwbs_ wssecureconv.html 35 WS-SCの仕組み② 派生鍵 WAS WAS V7 V7 W/S W/S セキュリティ・コンテキスト・トークンから派生した鍵を使用してアプリケー ション・メッセージにセキュリティをかける WS-Trustプロトコル (SCTの受け渡し)は WS-Securityの公開鍵 暗号方式 リクエスター プロバイダー 暗号化 復号化 RequestSecurityToken(RST) RequestSecurityTokenResponse(RSTR) 復号化 トラスト・ サービス 暗号化 S CT WS-Security ランタイム 暗号化 復号化 暗号化 復号化 派生鍵 SO A +W P S-S C SO AP +W S-S C アプリケーション・メッセージはSCTから派生した 派生鍵を使用して暗号化・署名を実行 復号化 WS-Security ランタイム 暗号化 復号化 暗号化 派生鍵 対称鍵暗号方式 によるパフォーマンスの向上 WebSphere Application Server V7 Announcement Workshop 2008 # 36 © IBM Corporation. WS-SCの仕組みについて前ページのセキュリティ・コンテキスト・トークン(SCT)の受け渡しに 続いて説明します。 リクエスターとプロバイダーの両者間でSCTを共有し、次の段階から通常の要求/応答処理が 行われます。 WS-Securityでは公開鍵暗号方式が使用されますが、WS-SCではSCTから派生した派生鍵 を使用した対称鍵暗号方式を使用してメッセージの暗号化・署名が実行されます。公開鍵暗 号方式と比較して対称鍵暗号方式は負荷が低く、複数メッセージ交換を行うケースではパ フォーマンスの向上が見込めます。 派生鍵のしくみについては次ページで詳細に説明しています。 36 (参考)派生鍵 WAS WAS V7 V7 W/S W/S 元の鍵に対してハッシュ関数でハッシュを行い派生した鍵 WS-SCではセキュリティ・コンテキスト・トークンを元に派生鍵を作成 メッセージごとに異なる派生鍵を作成 ⇒鍵の堅牢性を高める S CT ハッシュ Length,Nonce WASでは以下の形式で署名と暗号化が実施される 派生鍵 WS-Addressingヘッダー、タイムスタンプ、本文には派生鍵を使用してHMACアルゴリズ ムで署名 署名エレメント、本文には、AESアルゴリズムを使用した派生鍵で暗号化 WS-Securityヘッダーに<wsc:DerivedKeyToken>エレメントが含まれる <wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> <wsc:SecurityContextToken wsu:Id="sct_13" xmlns:wsc="http://schemas.xmlsoap.org/ws/2005/02/sc" xmlns:wsu="http://docs.oasisopen.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> <wsc:Identifier>uuid:680A09B552E9898E141189654995452</wsc:Identifier> </wsc:SecurityContextToken> <wsc:DerivedKeyToken wsu:Id="dkt_17" xmlns:wsc="http://schemas.xmlsoap.org/ws/2005/02/sc" xmlns:wsu="http://docs.oasisopen.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> <wsse:SecurityTokenReference> <wsse:Reference URI="#sct_13" ValueType="http://schemas.xmlsoap.org/ws/2005/02/sc/sct"></wsse:Reference> </wsse:SecurityTokenReference> <wsc:Length>16</wsc:Length> <wsc:Nonce>iY6Pc4emqRf3f0n+7JZxodf9JCjdPX0PorJPYgUXER2JpddtNbATZ8WPtKduiB8SHXxZpcS+Ztinn4eSHQHAkDX76x8pHuwlzHtc8Ncz0z LDsQOaXB7IZ+HV6cB/UUV/+3tAwMmEriWuTp/TMKN7/RUS9eiuFeWJD7IR6OyfTfg=</wsc:Nonce> </wsc:DerivedKeyToken> LengthとNonceを使用して、メッセージごとに異なる派生鍵を使用 鍵ID *AES(Advanced Encryption Standard):対称暗号方式 WebSphere Application Server V7 Announcement Workshop 2008 # 37 © IBM Corporation. 派生鍵とは元の鍵に対してハッシュダイジェスト関数でハッシュを行い派生した鍵です。WSSCではセキュリティ・コンテキスト・トークンを元にハッシュダイジェスト関数などを使用して派生 鍵を生成します。 ハッシュ関数にはLengthとNonceの値が使用されますが、Webサービス・プロバイダーに LengthとNonceの情報を渡すことで、Webサービス・プロバイダー側も同じ派生鍵を生成し、 復号化することが可能になります。 また、ハッシュ関数に使用されるLengthとNonceは毎回異なる値が使用されるので、派生鍵も メッセージごとに異なるものが使用されることで鍵の安全性が高まります。 WASでは派生鍵を使用した署名にHMACアルゴリズムを使用します。HMACはハッシュ関数 を共有秘密鍵と組み合わせて使用します。ハッシュの計算、署名の検証に共有秘密鍵を使用 するので共有秘密鍵を保持していないと検証ができません。 派生鍵を使用した暗号化にはAESアルゴリズム(対称暗号方式)が使用されます。 37 WASにおけるWS-SCのスコープ WAS WAS V7 V7 W/S W/S 同一リクエスターからのサービス呼び出しは同じsecure conversationを使用 同じセキュリティ・コンテキスト・トークン(SCT)を使用 リクエスター・アプリケーションA Secured conversation 1 S CT instance instance instance リクエスター・アプリケーションB S CT Service 1 S CT instance instance S CT Secured conversation 2 WebSphere Application Server V7 Announcement Workshop 2008 # 38 © IBM Corporation. WASにおけるWS-SCのスコープ、つまり同じセキュリティ・コンテキスト・トークンが使用される 範囲について説明します。 画面の絵に示すように、同一リクエスターからの特定のサービス呼び出しは同じsecure conversationを使用します。 詳細につきましては、以下のInfoCenterの記述をご参照ください。 ○InfoCenter 「Scoping of Web Services Secure Conversation」 http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/topic/com.ibm.websphere.nd.doc/i nfo/ae/ae/cwbs_wsscscoping.html 38 WS-RMにWS-SCを使用する WAS WAS V7 V7 W/S W/S WS-RMで、シーケンス上のメッセージ送受信にWS-SCを使用可能 WS-RMシーケンスはSCTの派生鍵によって署名、暗号化 SCTにWS-RMのシーケンスをスコープとして宣言する WS-RMをセキュアに、 低負荷で実行 + リクエスター (RM Source) プロバイダー (RM Destination) インターオペラビリティ RequestSecurityToken RequestSecurityTokenResponse CreateSequence CreateSequenceResponse(Identifier=seq1) WS-I Reliable Secure Profile の目指すところ リクエスト1(Identifier=seq1,Message#=1) リクエスト1送達確認(Identifier=seq1,Message#=1 ) リクエスト2(Identifier=seq1,Message#=2) SCTの派生鍵によって 対称鍵暗号方式で 署名と暗号化 リクエスト2送達確認(Identifier=seq1,Message#=1~2 ) : WebSphere Application Server V7 Announcement Workshop 2008 # 39 © IBM Corporation. WS-I Reliable Secure Profile(RSP)でWS-SCとWS-RMを規定しているのは、WS-RMを使 用した際の複数メッセージ交換をセキュアに、且つ、低負荷で実行することを目的としていま す。 WS-RMにWS-SCを使用すると、WS-RMのシーケンスにおけるメッセージ交換はセキュリ ティ・コンテキスト・トークン(SCT)の派生鍵によって署名・暗号化されます。 39 (参考)WS-SCクライアントのキャッシュ WAS WAS V7 V7 W/S W/S リクエスターとプロバイダーの両方でセキュリティ・コンテキスト・トークンが キャッシュされる メモリー上にキャッシュ クラスター環境では複製ドメインを使用して共用可能(デフォルト・オフ) WebSphere Application Server V7 Announcement Workshop 2008 # 40 © IBM Corporation. WS-SCではリクエスターとプロバイダーの両方でセキュリティ・コンテキスト・トークン(SCT)が JVMのメモリー上にキャッシュされます。WASでは管理コンソールからキャッシュに関する設定 を行うことができます。 また、クラスター環境においては複製ドメインを使用することによって、クラスター・メンバー内で SCTを複製し共用することができます。 詳細情報につきましては、以下リンクのInfoCenterの記述をご参照ください。 ○InfoCenter 「Secure conversation client cache」 http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/topic/com.ibm.websphere.nd.doc/i nfo/ae/ae/cwbs_wssecureconvclientcache.html ○InfoCenter 「Enable distributed cache and session affinity when using Secure Conversation」 http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/topic/com.ibm.websphere.nd.doc/i nfo/ae/ae/twbs_enablesecconvcluster.html 40 Webサービス・ポリシー WebSphere Application Server V7 Announcement Workshop 2008 WAS WAS V7 V7 W/S W/S # 41 © IBM Corporation. 41 WS-*とポリシーの関係 WAS WAS V7 V7 W/S W/S WebサービスにおけるQoSの設定をポリシー(ルール)として独立に記述 WS-*の設定をDeploymentDescripterではなく、ポリシーに設定 作成したポリシーをWebサービス・アプリケーションに関連付け ポリシーの表記や Webサービスに関連付ける方法 を規定したOASIS標準仕様 Web Services Policy A社 Internet B社 SOAP/HTTP プロバイダー リクエスター Policy A B社のサービスに接続する ために、ポリシーAをアプリ ケーションにアタッチしよう WS-Security1.1を使用 X509v3証明書を使用 ポリシーAに則って サービスに接続し てください WebSphere Application Server V7 Announcement Workshop 2008 # 42 © IBM Corporation. Webサービス・ポリシーとはWebサービスにおけるQoSの設定をポリシーとして独立に記述し たものです。従来はQoSにあたるWS-*の設定はアプリケーションの DeploymentDescripter(デプロイメント記述子)ファイルに記述していましたが、アプリケーショ ンとは分離し、ポリシーとして記述することになります。 QoS内容を記述したポリシーを作成し、Webサービス・アプリケーションに関連付けることで、 QoS設定を施します。 ポリシー内容の表記やWebサービスに関連付ける方法について規定したOASIS標準仕様が Web Services Policy(WS-Policy)です。 42 Web Services Policy(WS-Policy)とは New v7 WAS WAS V7 V7 W/S W/S Webサービスのポリシーに関するOASIS標準仕様 以下の仕様から構成される WS-Policy Framework 1.5 Webサービスのポリシーを表現するための文法を定義 WS-Policy Attachments 1.5 ポリシーをWebサービスに関連付ける方法を定義 WS-Policy Assertions 1.5 ポリシー内容のアサーション(表明)を定義 各QoSごとにアサーションに関する仕様が作成されている WS-SecurityPolicy1.2 WS-RM PolicyAssertion1.0/1.1 WS-MetadataExchange メタデータを取得する方法を規定 ポリシー情報をメタデータとして取得する際に使用 WebSphere Application Server V7 Announcement Workshop 2008 # 43 © IBM Corporation. WS-PolicyはWebサービスのポリシーに関して規定したOASISの標準仕様ですが、以下の仕 様から構成されます。 ・WS-Policy Framework 1.5 ・WS-Policy Attachments 1.5 ・WS-Policy Assertion 1.5 PolicyAssertionについては各QoSごとに別仕様が策定されており、QoSの表記方法につい て規定されています。 *WAS V6.1 FeaturePack for WebServicesではポリシーを採用していましたが、WS-Policy の仕様をサポートしたものではありませんでした。WS-Policyのサポートが明確に表明された のはWAS V7からになります。 WS-MetadataExchangeはメタデータを取得する方法を規定した仕様ですが、WS-Policyで はWebサービス・リクエスターがWebサービス・プロバイダーのポリシー情報をメタ・データとし て取得する際に使用します。 43 WASにおけるWS-Policyの実装 WAS WAS V7 V7 W/S W/S WASではポリシー・セットとしてWS-Policyを実装 Webサービス・アプリケーション(プロバイダー/リクエスター)に対してポリシー・ セットを関連付け JAX-WSで開発したWebサービス・アプリケーションに対応(JAX-RPCは使用不可) 用語 ポリシー・セット:ポリシーをまとめたもの ポリシー(タイプ):QoSを定義したもの バインディング:ポリシー・セットに対してシステム固有の情報を定義をしたもの Webサービス・ リクエスター・アプリケーション ①ポリシー・セットに含めるポリシーを選択 ②ポリシーセットをアプリケーションに関連付け ③バインディングをセット attach !! Policy B Policy D B D ポリシー・セットA B D バインディング・セット WebSphere Application Server V7 Announcement Workshop 2008 # 44 © IBM Corporation. WASではポリシー・セットとしてWS-Policyを実装しています。 Webサービス・アプリケーション(プロバイダー/リクエスター)に対して、ポリシー・セットを関連付 けます。対象となるのはJAX-WSで開発したWebサービス・アプリケーションでJAX-RPCのア プリケーションではポリシー・セットは使用できません。 ポリシーはQoSを定義したもので、ポリシー・セットは複数(もしくは単一)のポリシーをまとめた ものです。 バインディングはポリシー・セットに対してシステム固有の情報を定義したものになります。 44 ポリシーとポリシー・セット WAS WAS V7 V7 W/S W/S ポリシー 使用可能なポリシー(7種類) HTTPトランスポート ,JMSトランスポート,SSLトランスポート, WS-Addressing WS-ReliableMessaging, WS-Security, WS-Transaction ポリシー・セット WASでデフォルトで用意 アプリケーション・ポリシー・セット アプリケーションに対するポリシー・セット デフォルトで11種類のポリシー・セットが定義 Kerberos V5 HTTPS default,LTPA WSSecurity default,SSL SSL WSTransaction,Username SecureConversation,Username WSSecurity default,WS-I RSP,WS-I RSP ND,WSAddressing default,WSHTTPS default,WSReliableMessaging persistent システム・ポリシー・セット セキュリティー・トークン・サービス(トラスト・サービス)のためのポリシー・セット デフォルトで3種類のポリシーセットが定義 SystemWSSecurityDefault,TrustServiceSecurityDefault,TrustServiceSymmetricDefault ポリシーを組み合わせてカスタムでポリシー・セットを作成可能 WebSphere Application Server V7 Announcement Workshop 2008 # 45 © IBM Corporation. WASで使用可能なポリシーは以下の7種類です。 HTTPトランスポート / JMSトランスポート / SSLトランスポート / WS-Addressing / WSReliableMessaging / WS-Security / WS-Transaction ポリシー・セットはWASにデフォルトで用意されているものと、ポリシーを組み合わせて作成し た独自のポリシー・セットの両方を使用することができます。 デフォルトで用意されているポリシー・セットはアプリケーション・ポリシー・セットとシステム・ポリ シー・セットの2種類で、計14種類です。 デフォルトで用意されているポリシー・セットをコピーして独自にカスタマイズして新規ポリシー・ セットを作成することも可能です。 45 ポリシー・セットの使用方法① WAS WAS V7 V7 W/S W/S ① ② アプリケーション単位 サービス単位 オペレーション単位 WebSphere Application Server V7 Announcement Workshop 2008 # 46 © IBM Corporation. ポリシー・セットの使用方法について説明します。 例として、Webサービス・リクエスターにポリシー・セットをアタッチする方法を説明します。 ①ナビゲーション・ツリーから[サービス]>[サービス・クライアント]を選択し、サービス・クライアン トがリストされた画面を表示し、対象のアプリケーションのリンクをクリックします。 ②アプリケーション単位/サービス単位/オペレーション単位でポリシー・セットを関連付けること ができるので、適宜チェックボックスにチェックを付けて、「クライアント・ポリシー・セットの関連 付け」を選択します。 どの単位でポリシー・セットの関連付けが可能かはポリシー・セットに含まれるポリシーによって 異なり、オペレーション単位で関連付けができないものも多くあります。詳細につきましては InfoCenterでご確認ください。 46 ポリシー・セットの使用方法② WAS WAS V7 V7 W/S W/S ③ WebSphere Application Server V7 Announcement Workshop 2008 # 47 © IBM Corporation. ③関連付け可能なポリシー・セット一覧がプルダウンに表示されるので、選択してポリシー・ セットを関連付けます。 ※独自のポリシー・セットを使用したい場合は、事前にポリシー・セットを作成する必要がありま す。 47 ポリシー・セットの使用方法③ WAS WAS V7 V7 W/S W/S ④ WebSphere Application Server V7 Announcement Workshop 2008 # 48 © IBM Corporation. ④ポリシー・セットの関連付けの後に、バインディングの割り当てを行います。「バインディング の割り当て」ボタンを選択すると、割り当て可能なバインディング一覧が表示されるので、選択 します。独自のバインディング設定を行いたい場合は「新規アプリケーション固有バインディン グ」を選択します。 48 (参考)HTTPトランスポート・ポリシー WAS WAS V7 V7 W/S W/S SOAP/HTTPのWebサービス・アプリケーションに対して設定可能 読み取りタイムアウト 書き込みタイムアウト 接続タイムアウト 持続接続を使用 再送有効 WebSphere Application Server V7 Announcement Workshop 2008 # 49 © IBM Corporation. 参考情報としてHTTPトランスポート・ポリシーについて説明します。 ここでの設定内容は、HTTPトランスポートでの設定内容と同一であり、通常はアプリケーショ ン・サーバー単位で設定するものです。 HTTPトランスポート・ポリシーを使用することで、アプリケーション単位でHTTPトランスポートの 設定を行うことができます。 49 (参考)JMSトランスポート WAS WAS V7 V7 W/S W/S SOAP/JMSのWebサービス・アプリケーションに対して設定可能 要求タイムアウト SOAP/JMSの双方向処理で使用 応答が返るまでのタイムアウト値 Webサービス・ リクエスター 1UOW transaction.begin() WS.invoke() transaction.commit() 今まではアプリケーションのコーディングやDeploymentDescripterで設定 アプリケーションの変更や再デプロイすることなく変更が可能に!! WebSphere Application Server V7 Announcement Workshop 2008 # 50 © IBM Corporation. 参考情報としてJMSトランスポート・ポリシーについて説明します。 SOAP/JMSのWebサービス・リクエスターに対して設定可能なポリシーです。 要求タイムアウトは双方向処理に、チェックボックスの設定は片方向処理に有効な設定になり ます。 どちらの設定値も今まではアプリケーションのコーディングやDeploymentDescripterで設定し ていたものなので、ポリシーで設定できることによって、アプリケーションの変更や再デプロイす ることなく変更することが可能になりました。 ※片方向の非同期オペレーションでトランザクション・メッセージングを許可 非同期片方向の処理において、Webサービス・リクエスターの処理とSOAP/JMSのサービス 呼び出しにおけるキューへのメッセージPUTの処理を1UOWのトランザクション処理として実 行したい場合に適用する設定です。 これを設定することによって、SOAP/JMSプロバイダー側のキューからのメッセージGET処理 とMDBのonMessage()メソッドの処理も1UOWのトランザクション処理となります。 (onMessage()メソッドのトランザクション属性はRequiredになっている必要があります。) 50 New v7 ポリシーの伝播 WAS WAS V7 V7 W/S W/S Webサービス・プロバイダーで設定されるポリシー・セットの情報をリクエスター に伝播 サービス利用者に必要なQoS情報を伝える リクエスターは動的にポリシー・セットがアタッチされる ポリシー・セットの情報はプロバイダーが提供するWSDLに含めることができる (WS-Policyで規定された標準フォーマット) HTTP GETリクエスト(endpointURL+"?wsdl") WS-MetadataExchangeによるGetMetadataリクエスト A社 Internet B社 SOAP/HTTP リクエスター プロバイダー Policy A WS-Security1.1を使用 X509v3証明書を使用 WebSphere Application Server V7 Announcement Workshop 2008 # 51 © IBM Corporation. Weサービス・プロバイダーで設定されるポリシー・セットの情報をリクエスターに伝播することが 可能です。リクエスターはポリシー・セットを設定する必要なく、プロバイダーに設定されたポリ シー・セットの情報が動的にリクエスターに設定されます。 プロバイダーが提供するポリシー・セットの情報はWSDLファイルに含めることができます。 WSDLファイルに含まれるポリシー・セットの情報を取得方法は以下の2つです。 ・HTTP GETリクエスト:Webサービス・プロバイダーのエンドポイントURLの末尾に「?wsdl」を 追加してWebブラウザーから確認することができます。 ・WS-MetadataExchangeによるGetMetadataリクエストによってWSDL情報を取得できます。 (55、56ページ参照) 51 (参考)ポリシーの伝播設定 <リクエスター側> WebSphere Application Server V7 Announcement Workshop 2008 WAS WAS V7 V7 W/S W/S # 52 © IBM Corporation. 参考情報としてポリシーを伝播させる設定を説明します。(リクエスター側) ポリシー・セットを関連付ける画面にて、「適用されたポリシー」のリンク(デフォルト"なし")を選 択します。 クライアントWS-Policy制御プロパティの画面が表示されるので、そこでポリシーを適用しない (なし)か、もしくは「プロバイダー・ポリシーのみ」(プロバイダーのポリシーセットを使用する)を 選択します。 「プロバイダー・ポリシーのみ」を選択した場合は、ポリシーの取得方法としてHTTP GET要求 かWS-MetadataExchange要求のどちらかを選択します。WS-MetadataExchange要求を選 択した場合は、その要求に対してWS-Securityのポリシー・セットを関連付けることも可能です。 52 (参考)ポリシーの伝播設定 <リクエスター側> WebSphere Application Server V7 Announcement Workshop 2008 WAS WAS V7 V7 W/S W/S # 53 © IBM Corporation. 既にリクエスターにポリシー・セットが関連付けられている場合、「適用されたポリシー」では「ク ライアント・ポリシーのみ」(プロバイダーのポリシーは使用しない)か、「クライアント・ポリシーと プロバイダー・ポリシー」のどちらかを選択します。 53 (参考)ポリシーの伝播設定 <プロバイダー側> WebSphere Application Server V7 Announcement Workshop 2008 WAS WAS V7 V7 W/S W/S # 54 © IBM Corporation. ポリシーを伝播させる設定を説明します。(プロバイダー側) プロバイダー側はポリシー設定を伝播する側になりますが、「ポリシー共用」で設定をすること になります。 ポリシー・セットの関連付けを行う画面にて「ポリシー共用」のリンク(デフォルト"使用不可")を 選択します。 クライアントに対して許可するポリシーの取得方法を設定します。 54 (参考)WS-MetadataExchange:GetMetadataリクエスト WAS WAS V7 V7 W/S W/S <?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"> <wsa:To>http://localhost:9083/TestAppOnewayProvWeb/TestOnewayService</wsa:To> <wsa:MessageID>urn:uuid:131DB4FAE7D29EBF3D1222865209480</wsa:MessageID> <wsa:Action>http://schemas.xmlsoap.org/ws/2004/09/mex/GetMetadata/Request</wsa:Action> </soapenv:Header> <soapenv:Body> <mex:GetMetadata xmlns:mex="http://schemas.xmlsoap.org/ws/2004/09/mex"> <mex:Dialect>http://schemas.xmlsoap.org/wsdl/</mex:Dialect> </mex:GetMetadata> </soapenv:Body> </soapenv:Envelope> WebSphere Application Server V7 Announcement Workshop 2008 # 55 © IBM Corporation. 参考情報としてWS-MetadataExchangeのGetMetadataリクエストのSOAPメッセージを載せ ています。 55 (参考)WS-MetadataExchange:GetMetadataレスポンス WAS WAS V7 V7 W/S W/S <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"> <wsa:Action>http://schemas.xmlsoap.org/ws/2004/09/mex/GetMetadata/Response</wsa:Action> <wsa:RelatesTo>urn:uuid:131DB4FAE7D29EBF3D1222865209480</wsa:RelatesTo> </soapenv:Header> <soapenv:Body> <mex:Metadata xmlns:mex="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:tns="http://oneway.jp.ibm.com"> <mex:MetadataSection Dialect="http://schemas.xmlsoap.org/wsdl/" Identifier="{http://oneway.jp.ibm.com}TestOnewayService"> <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsu="http://docs.oasisopen.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsp="http://www.w3.org/ns/ws-policy" name="TestOnewayService" targetNamespace="http://oneway.jp.ibm.com"> <wsdl:types> <xsd:schema targetNamespace="http://oneway.jp.ibm.com"> (中略) </wsdl:service> <wsp:Policy wsu:Id="548f2fdb-6add-4251-abb2-6c8c66a86d9e"> <wsp:ExactlyOne> <wsp:All><rmassertion:RMAssertion xmlns:rmassertion="http://docs.oasis-open.org/ws-rx/wsrmp/200702"> <wsp:Policy><rmassertion:DeliveryAssurance wsp:Ignorable="true"> <wsp:Policy><rmassertion:ExactlyOnce></rmassertion:ExactlyOnce></wsp:Policy></rmassertion:DeliveryAssurance></wsp:Policy> </rmassertion:RMAssertion></wsp:All> <wsp:All><rmassertion:RMAssertion xmlns:rmassertion="http://schemas.xmlsoap.org/ws/2005/02/rm/policy"> <InactivityTimeout Milliseconds="86400000"></InactivityTimeout> <BaseRetransmissionInterval Milliseconds="15000"></BaseRetransmissionInterval> <AcknowledgementInterval Milliseconds="3000"></AcknowledgementInterval> </rmassertion:RMAssertion> </wsp:All><wsp:All></wsp:All> </wsp:ExactlyOne> </wsp:Policy> </wsdl:definitions></mex:MetadataSection><mex:MetadataSection Dialect="http://schemas.xmlsoap.org/wsdl/"><mex:Location>http://localhost:9083/TestAppOnewayProvWeb/TestOnewayService?wsdl</mex:Location> </mex:MetadataSection></mex:Metadata></soapenv:Body></soapenv:Envelope> ポリシー情報 WebSphere Application Server V7 Announcement Workshop 2008 # 56 © IBM Corporation. 参考情報としてWS-MetadataExchangeのGetMetadataレスポンスのSOAPメッセージを載 せています。 ポリシー情報を含んだWSDLファイルの情報が返ってきていることがわかります。 56 ポリシー・セットのExport/Import WAS WAS V7 V7 W/S W/S ポリシー・セットの内容をxml形式のファイルとして扱う Export/Import可能 <?xml version="1.0" encoding="UTF-8" standalone="yes" ?> - <ps:PolicySet xmlns:ps="http://www.ibm.com/xmlns/prod/websphere/200605/policyset" xmlns:psa="http://www.ibm.com/xmlns/prod/websphere/200605/policysetattachment" version="7.0.0.0" type="application" name="Kerberos V5 HTTPS default" description="$KEY_policySetDescription020" default="true"> <ps:PolicyType type="WSSecurity" provides="" enabled="true" /> <ps:PolicyType type="SSLTransport" provides="" enabled="true" /> <ps:PolicyType type="WSAddressing" provides="" enabled="true" /> </ps:PolicySet> WebSphere Application Server V7 Announcement Workshop 2008 # 57 © IBM Corporation. ポリシー・セットの内容はXML形式のファイルとしてExportやImportすることができます。 ExportしたファイルをRADなどの開発ツールに取り込んで開発環境でテストすることもできま す。 57 (参考)WS-Transaction WAS WAS V7 V7 W/S W/S WS-Transation Webサービス環境においてトランザクション処理を実現する技術 WS-Coordination/WS-AtomicTransaction/WS-BusinessActivityで構成 WASv7ではV1.0とV1.1の両方をサポート(サーバー単位で選択) V1.1はJAX-WSアプリケーションのみで使用可能 V1.0はJAX-WSとJAX-RPCの両方で使用可能 JAX-RPCとJAX-WSの通信でWS-Transactionを使用したい場合はV1.0を使用 × 「サーバー」>server_name>「トランザクション・サービス」で設定 WS-TX v1.1 Webサービス リクエスター Webサービス プロバイダー JAX-WS JAX-RPC WS-TX v1.0 WebSphere Application Server V7 Announcement Workshop 2008 # 58 © IBM Corporation. WS-TransactionはWebサービス環境においてトランザクション処理を実現する技術です。 OASISより策定されている標準仕様で、2007年12月にV1.1がリリースされています。実際に はWS-Coordination / WS-AtomicTransaction / WS-BusinessActivityで構成されています。 WAS V7からのアップデートとしてはWS-Transation V1.1を新たにサポートするようになりまし た。 V1.0とV1.1の両方をサポートしていますが、V1.1はJAX-WSアプリケーションのみで使用可能、 V1.0はJAX-WSとJAX-RPCの両方で使用可能です。 注意点として、リクエスターとプロバイダーで異なるWS-Transactionのバージョンを使用するこ とはできません。必ずバージョンは統一するようにしてください。WASのJAX-RPCアプリケー ションとのやりとりが発生する場合、低レベルのV1.0を選択することになります。 バージョンの選択はアプリケーション・サーバー単位で行います。ナビゲーション・ツリーの [サーバー]>[server_name]>[トランザクション・サービス]でバージョンを選択します。 58 Summary WAS WAS V7 V7 W/S W/S WS-I ReliableSecureProfile(RSP) WS-RMによって信頼性の高いWebサービス通信が可能 WS-SCによってWS-RMシーケンス上のメッセージをセキュアにできる WS-SCは派生鍵を使用した対称鍵暗号方式で負荷が低い WS-RM、WS-SCはWS-I RSPによってインターオペラビリティが保証される Webサービス・ポリシー QoSの適用は管理コンソールからポリシー・セットを関連付け ポリシー・セットによってサービス単位で柔軟なアプリケーション管理 WebSphere Application Server V7 Announcement Workshop 2008 # 59 © IBM Corporation. 59 Reference WAS WAS V7 V7 W/S W/S WAS V7 InfoCenter http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp WAS V6.1 SOA Webサービス・ワークショップ資料 http://www.ibm.com/developerworks/jp/websphere/library/was/was61_soa_ws// WS-ReliableMessaging と WS-Polling の関係 http://www-06.ibm.com/jp/developerworks/webservices/library/ws-soa-wsrmwsp.shtml IBM Redbooks:Web Services Feature Pack for WAS V6.1 http://publib-b.boulder.ibm.com/Redbooks.nsf/RedbookAbstracts/sg247618.html?Open WS-I http://www.ws-i.org/ WS-I Reliable Secure Profile http://www.ws-i.org/deliverables/workinggroup.aspx?wg=reliablesecure OASIS Web Services Reliable Messaging http://docs.oasis-open.org/ws-rx/wsrm/v1.1/wsrm.html OASIS Web Services Secure Conversation http://docs.oasis-open.org/ws-sx/ws-secureconversation/v1.3/wssecureconversation.html OASIS Web Services Trust http://docs.oasis-open.org/ws-sx/ws-trust/v1.3/ws-trust.html W3C Web Services Policy 1.5 – Framework http://www.w3.org/TR/ws-policy/ WebSphere Application Server V7 Announcement Workshop 2008 # 60 © IBM Corporation. 60