24 AS4ベースのメッセージ交換の有効化

この章では、Oracle B2Bで取引パートナ間のAS4ベースのメッセージ(通常はSOAPベース)交換を有効化する方法について説明します。

この章の構成は、次のとおりです。

24.1 AS4ベースのメッセージ交換の概要

Applicability Statement4 (AS4)は、必要なトランザクション機能を提供するための、Webサービス標準が集約された最新の標準です。受信確認の受取とエラー・メッセージを定義することによって例外処理を標準化し、メッセージ・コレオグラフィをサポートします。Webサービスを使用してドキュメントに依存しない安全な方法でペイロードを交換するために、Oracle B2Bは交換プロトコル・スタック内でAS4プロトコルをサポートしています。

AS4は、一方向プッシュ、一方向プル、信頼性、セキュリティなどの、Webサービスを介した様々な機能を提供します。AS4では、認証、メッセージ整合性、発信元の否認防止およびプライバシ機能でデータを保護します。

24.2 カスタムWSDLファイルによるAS4ベースのサービス・メッセージの交換

AS4ベース・メッセージは、インバウンドおよびアウトバウンド方向の両方でサポートされます。要件に応じたカスタマイズが可能なWeb Service Definition Language (WSDL)ファイルを作成するか、一般的なWebサービスを使用するか、またはアップロードする必要があります。

AS4 ebHandlerではSOAP 1.2が必須であり、SOAP 1.1に依存するBSP 1.1からの要件は適用されません。同様に、DESCRIPTION (WSDL)およびREGDATA (UDDI)は使用されないため、これらの要件は適用されません。SOAP 1.1の場合、SOAPフォルトはサービスから受信されます。

AS4では、ドキュメント・タイプのマッピングのピットフォールと、SOAPの操作とアクションに対するビジネス・プロセスを回避することによって、WSDLの複雑さが排除されるため、WSDLを指定する必要はありません。既存の汎用WSDLはSOAP 1.2サポートによって使用できます。

24.2.1 アウトバウンド・メッセージの交換

バックエンド・アプリケーション(Fabric/AQ/JMS/File/FTP/SFTP)からのメッセージは、他のメッセージと同じようにB2Bに送信されます。B2Bでは、From/To/ActionとService、またはFrom/To/DoctypeとDoc Revisionに基づいて、アグリーメント識別が発生します。

アグリーメント構成に基づいて、メッセージ(任意のドキュメント・タイプ)はAS4交換プラグイン、SOAPパッキングを使用して処理され、取引パートナ・デリバリ・チャネルで構成されているとおりに、AS4トランスポートを介して送信されます。デリバリ・チャネルの構成に基づいて、トランスポートのSYNC/NoneおよびAsyncモードがサポートされます。

24.2.2 インバウンド・メッセージの交換

登録されているAS4 WSリスニング・チャネルに基づいて、取引パートナは適切なAS4ヘッダーを使用してメッセージを投稿できます。AS4エンドポイントは、「管理」→「リスニング・チャネル」を使用して登録できます。ドキュメントは、ユーザー・メッセージのSOAPヘッダーまたは通常のドキュメント識別フローに基づいて識別されます。メッセージは、AS4交換プラグインによって処理され、構成済のバックエンド・アプリケーションに配信されます。

AS4交換は次のURLによって識別されます。
http://docs.oasis-open.org/ebxml-msg/ebms/v3.0/ns/core/200704/

AS4交換プラグインでは、トランスポート・レイヤーとしてWS-HTTPも使用されます。汎用SOAP交換では、これを交換の識別に使用します。AS4交換プラグインは汎用WSよりかなり前に追加されるため、交換がAS4として識別された場合、汎用交換は識別レイヤーをスキップします。

ドキュメントの識別はSOAPヘッダー「CollaborationInfo」→Action/Serviceの組合せに基づいて行われます。取引パートナの識別は、常にebMS 3.0仕様のPartyInfo→From/To partyIdおよびタイプの組合せに基づいて行われます。AS4には固有の識別子がないため、「管理」→「タイプ」の一部としてカスタム識別子を構成でき、同様にパートナ・プロファイル構成で使用できます。 デフォルトの識別子は、名前または他のdunsなどの識別子です。ただし、AS4には固有の識別子がありません(AS4識別子なし)

24.3 取引パートナとホストの設定

Oracle B2Bは、取引パートナとのAS4 Webサービス・ベースのメッセージ交換をサポートします。これは、バックエンド・アプリケーションからのペイロードを、B2Bバインディング、あるいはAQ、JMS、File、FTPまたはSFTPとのコンポジットによって開始することで実現されます。同様に、取引パートナにもAS4を使用して送信できます。

インバウンド側では、Oracle B2BはAS4メッセージを受信し、SOAコンポジットを使用して(あるいはAQ、JMS、File、FTPまたはSFTPを介して)、これをバックエンド・アプリケーションに配信します。Oracle B2Bは、SOAPエンベロープ・ヘッダー「PartyInfo」に基づいて、受信した取引パートナを識別します。
開始取引パートナを追加して取引パートナ・デリバリ・チャネルを構成するには:
  1. パートナ構成で、「パートナ」をクリックします。
  2. ホストの名前を会社名に変更します。
  3. 「+」をクリックして取引パートナを追加し、パートナの名前を入力します。
  4. 作成した取引パートナをクリックします。
  5. サポートされるドキュメントを追加するために「ドキュメント」タブをクリックし、「+」をクリックして適切なドキュメントを追加します。
  6. 「チャネル」タブをクリックし、「+」をクリックして交換/トランスポートを追加します。
  7. 「プロトコル」リストで、AS4-1.0を選択します。
  8. 「管理者」でカスタムWSDLファイルを定義した場合は、ここでそれを選択します。カスタムWSDLファイルがない場合は、「汎用SOAPの使用」オプションを選択します。
  9. 「サービス」ドロップダウン・リストから、Generic SOAPServiceを選択します。
  10. 「ポート」ドロップダウン・リストから、Generic Portを選択します。
  11. 「SOAPアクション」ドロップダウン・リストから、generic/soap/processを選択します。
  12. エンドポイントのURLを入力します。
    URLの例: http://myhost.com:7878/b2b/services/ws/tradingpartnername_listeningchannel
  13. 「保存」をクリックして詳細を保存します。

    ノート:

    前述のステップに従って、同様に応答者も設定します(ステップ2では応答者の名前を使用します)。

24.4 メッセージ・パーティション・チャネル

メッセージ・パーティション・チャネル(MPC)によって、送信者から受信者へのメッセージのフローを複数のフローにパーティション化して、個別に制御することや異なる方法で消費することが可能になります。

MPCでは、次のことが可能です。

  • 転送優先度の設定: 一部のメッセージは、送信された順序に関係なく、他よりも高い優先度で転送されます。

  • 受信者側でのメッセージのインフローの編成: 受信者はフローごとに異なる方法を指定できます。

次の図に、一方向プル・トランザクションのMPCワークフローの例を示します。

これは、Oracle B2Bの既存の順序付けメカニズムによって実現されます。バックエンド・アプリケーションからメッセージが「MPC」プロパティを使用して送信された場合、順序メッセージ・ターゲットとしてMPCが使用されます。これはappmessage表と順序マネージャ表に挿入されます。プル・メッセージ・リクエストが受信されるまで、B2Bはメッセージを処理できません。

プル・メッセージ・リクエストに基づいて、対応するメッセージが順序マネージャ表から取得され、イベント・キューにエンキューされます。メッセージは次に、From/To/Action/ServiceまたはFrom/To/Doctype/Docrevisionに基づいて、アグリーメント識別をパス・スルーします。アグリーメント構成に基づいて、メッセージは処理され、デリバリ・チャネル構成に従って取引パートナに送信されます。

メッセージの優先度付けは、プル・リクエストおよびレスポンスの一部として処理されます。

24.5 重複メッセージの検出

重複メッセージの検出機能を使用すると、メッセージIDに基づいてメッセージの重複を検出できます。AS4では、既存の重複検出機能が再利用されています。

デリバリ・チャネルの一部として構成できます。インバウンド・メッセージ・フローでは、重複検出が有効化されている場合、メッセージ重複が識別され、メッセージの送信者にフォルト・メッセージが送信されます。

例24-1 例 - 重複メッセージの検出

次のメッセージIDを使用して、メッセージが重複しているかどうかが検出されます。

eb:MessageInfo/eb:MessageId

24.6 P-Modeのパラメータ

B2Bでは、P-Modeパラメータをサポートします。次に、AS4機能に関連するパラメータの一覧を示します。

表24-1 P-Modeのパラメータと説明

P-Modeのパラメータ 説明
PMode.ID 取引パートナ・プロファイル。識別子は構成可能です。
PMode.Agreement アグリーメントIDは、アグリーメント参照の指定に使用されます。
PMode.MEP メッセージ交換パターン(MEP)は、バックエンド・アプリケーションからからエンキューされたeventNameに基づきます。
PMode.MEPbinding メッセージ交換パターン(MEP)は、バックエンド・アプリケーションからからエンキューされたeventNameに基づきます。取引パートナ・デリバリ・チャネル構成を使用できます。
PMode.Initiator.Party エンキュー時に送信元パーティは常に開始者に設定されます
PMode.Initiator.Role エンキュー時にActionName/イベント名を設定してFromRoleを設定します
PMode.Initiator.Authorization.username Basic認証の場合はOWSM資格証明にAuthユーザーを設定します
PMode.Responder.Party エンキュー時に送信先パーティは常に応答者に設定されます
PMode.Responder.Role エンキュー時にActionName/イベント名を設定してToRoleを設定します
PMode.Responder.Authorization.username Basic認証の場合はOWSM資格証明にAuthユーザーを設定します
Protocol.Address デリバリ・チャネルのhttp部分が常に想定されるため、これに固有の構成を行う必要はありません。
Protocol.SOAPVersion AS4デリバリ・チャネル構成で十分であり、常にSOAP 1.2が使用されます
BusinessInfo.Service: エンキューの一部として、ActionName/イベント名とサービスを指定するか、静的サービスの場合はカスタム・ドキュメント・プロトコルの一部として設定します
BusinessInfo.Action エンキューの一部として、ActionName/イベント名とアクションを指定するか、静的アクションの場合はカスタム・ドキュメント・プロトコルの一部として設定します
BusinessInfo.Properties[]: プロパティの追加はサポートされません
ErrorHandling.Report.ReceiverErrorsTo エラー/例外が発生した場合、B2Bは送信者に例外メッセージを送信します
ErrorHandling.Report.AsResponse エラー/例外が発生した場合、B2Bは送信者に例外メッセージを送信します
[1].ErrorHandling.Report.ProcessErrorNotifyProducer エラーは処理され、リクエスト・メッセージの状態は「エラー」に更新されます。
ErrorHandling.Report.DeliveryFailuresNotifyProducer エラーは配信されず、エラー受信確認メッセージの状態は「エラー」に変更されます。
Security.WSSVersion OWSM構成ハンドル
Security.X509.Sign OWSM構成ハンドル
Security.X509.Signature.Certificate OWSM構成ハンドル
Security.X509.Signature.HashFunction OWSM構成ハンドル
Security.X509.Signature.Algorithm OWSM構成ハンドル
セキュリティ。X509.Encryption.Encrypt OWSM構成ハンドル
Security.X509.Encryption.Certificate OWSM構成ハンドル
Security.X509.Encryption.Algorithm OWSM構成ハンドル
Security.UsernameToken.username OWSM構成ハンドル
Security.UsernameToken.password OWSM構成ハンドル
Security.UsernameToken.Digest OWSM構成ハンドル
Security.UsernameToken.Created OWSM構成ハンドル
Security.PModeAuthorize OWSM構成ハンドル
Security.SendReceipt OWSM構成ハンドル
Security.SendReceipt.ReplyPattern OWSM構成ハンドル

24.7 ローカル・ポリシー・アタッチメント

LPA(ローカル・ポリシー・アタッチメント)を使用して、デリバリ・チャネルに複数のポリシーをアタッチできます。デリバリ・チャネル構成の一部として、OWSMポリシーを選択して特定のエンドポイントにアタッチします。

これは、Webサービス・エンドポイントにアタッチされたポリシーを処理するために使用されます。ドロップダウン・リストからポリシーのリストを選択し、必要な情報を指定します。たとえば、メッセージ保護ポリシーを使用して、ポリシーで構成されている証明書エイリアスに基づいてメッセージを保護(署名+暗号)します。

24.8 ユースケースのシナリオ

2つのパートナ間でドキュメントを交換するシナリオ。

次のシナリオでは、AcmeとGlobalChipsという2つのパートナが、AS4プロトコルを使用してドキュメントを交換することを想定しています。これを実行するために、Oracle B2B AS4が2つの個別のサーバー(各パートナに1つ)にインストールされているとします。このうち1つの(Acmeという名前の)サーバーが起案者として動作し、AS4プロトコルを使用してXMLドキュメントをGlobalChipsという応答者に送信します。

24.8.1 インバウンド・メッセージング

信頼できるメッセージングを使用して特定のメッセージ・タイプを交換するように、MSHの送信と受信が構成されています。送信MSHによって、このタイプの署名されたメッセージが送信されます。

想定される結果では、受信MSHによって同期AS4非拒否受信確認が返されます。返された受信確認のNonRepudiationInformation要素の内容は、受信されたメッセージの署名と一致している必要があります。これは、メッセージ・ログ、メッセージ・トラッカまたはTCPモニタリング・ツール(あるいはその両方)を使用して判断されます。後者の場合はTLSを使用しないでください。

24.8.1.1 応答者の設定
応答者(ここではGlobalChips)を設定するには、次の手順を実行します。
  1. 受信者側でOracle B2Bにログインします。
  2. 「管理」をクリックしてドキュメントを作成します。
  3. 「ドキュメント」タブで「カスタム」を選択し、ドキュメント・バージョン(1.0など)を追加します。
  4. 作成したドキュメント・バージョンを選択し、「ドキュメント・タイプ」(ORDERSなど)を追加します。
  5. 作成したドキュメント・タイプを選択し、「ドキュメント定義」(Ord_defなど)を追加します。
  6. 「定義」をクリックしてスキーマを指定します。
  7. 「識別タイプ」にxmlを選択します。
  8. 受信ドキュメントを識別するための識別式(XPath)を指定します。
    例: /*/*[local-name()='shipto']/*[local-name()='country']
  9. 「保存」をクリックして詳細を保存します。
  10. 受信者側で、リスニング・チャネル設定の一部として、「ポリシー構成」をクリックします。
  11. ポリシー・リストからoracle/wss10_message_protection_service_policyを選択してアタッチします。
  12. 前の手順で選択したポリシーで「+」をクリックし、証明書エイリアスを指定します
  13. メッセージの署名を検証するためのホストの秘密キー・エイリアスとしてkeystore.sig.csf.keyを指定します。
  14. メッセージを復号化するためのホストの秘密キー・エイリアスとしてkeystore.enc.csf.keyを指定します。