このセクションの内容
概要
ISO 8583 Extensions は、Parasoft の継続的テスト ソリューションのための拡張機能です。クライアント側では、この拡張機能を使用してカスタム ISO 8583 メッセージを送受信できます。サーバー側では、この拡張機能を使用して仮想化されたレスポンスを作成して送信できます。
ISO 8583 統合のための以下のカスタム拡張機能が提供されます。
- ISO 8583 Message Format: ネイティブ ISO から XML ISO へ、またその反対の変換を行うためのメッセージ フォーマットです。
- ISO 8583 Transport: カスタム ISO 8583 メッセージを送受信するためのトランスポート プロトコルです。
- ISO 8583 Message Listener: カスタム ISO 8583 メッセージをリスンし、仮想レスポンスを生成するためのメッセージ リスナーです。
実装
拡張機能スイートは com.parasoft.soavirt.iso8583.main-<version>.jar として実装されています。この jar は、ディストリビューションに含まれる以下の jar に依存しています。
jPOS
- jpos-1.9.2.jar
JDOM
- jdom-1.1.3.jar
Apache Commons CLI
- commons-cli-1.2.jar
ISO-8583 Extensions
- com.parasoft.soavirt.messages.iso8583-<version>.jar
- com.parasoft.soavirt.transport.iso8583-<version>.jar
- com.parasoft.virtualize.listener.iso8583-<version>.jar
前提条件
- SOAtest および/または Virtualize 9.5.x 以上
インストール
拡張機能は UI またはコマンドラインからインストールできます。
UI からのインストール
- [Parasoft] > [設定] を選択します。
- [システム プロパティ] ページで [JAR の追加] をクリックします。
- 表示されたファイル選択ダイアログで com.parasoft.soavirt.iso8583.main-<version>.jar を選択します。必要な依存ライブラリがすべてロードされます。
- SOAtest/Virtualize を再起動します。
コマンドラインからのインストール
localsettings プロパティ ファイルの system.properties.classpath
プロパティに com.parasoft.soavirt.iso8583.main-<version>.jar ファイルを追加します。
例:
system.properties.classpath=<path to jar>/com.parasoft.soavirt.iso8583.main-1.0.0.jar
クラスパスを変更すると、必要なすべての依存ライブラリがロードされます。
使用方法
SOAtest
- テスト スイートを右クリックし、[新規追加] > [テスト] をクリックします。
- 同じ名前の 2 つの ISO 8583 クライアントがテストの追加ウィザードで利用できるようになります。[共通ツール] カテゴリで [ISO 8583 Client] を選択し、[終了] をクリックします。もう 1 つの ISO Client は SOAtest に付属しているビルトイン ツールであり、ISO 8583 拡張機能によって置き換えられます。
- [トランスポート] タブをクリックして [トランスポート] ドロップダウン メニューから [カスタム拡張] を選択します。
- [実装の選択] ドロップダウン メニューから [ISO 8583] を選択し、ツールを設定します。パッケージャー オプションは、[変換オプション] タブとPackager Settingsの下のトランスポート設定の両方で設定されます。
ISO 8583 Message Listener 設定
ISO 8583 Message Listener の以下のオプションを設定できます。
チャネル設定
チャネル名 | メッセージの送受信時に使用する ISO 8583 チャネルを定義します。jPOS ライブラリに含まれるすべてのデフォルト チャネル実装 (ポート、ホスト、その他のパッケージャーだけを必要とする実装など) を利用できます。詳細については、「Channels」を参照してください。 |
---|---|
ホスト | 接続を行うときに使用するホストを定義します。 |
ポート | 接続を行うときに使用するポートを定義します。 |
タイムアウト | 接続がタイムアウトするまでの秒数を定義します。 |
パッケージャー設定
パッケージャー名 | ISO 8583 メッセージのパックおよびアンパックに使用するパッケージャーを定義します。通常、汎用パッケージャー XML 記述とともに GenericPackager が使用されます。しかし、事前定義済みの ISO パッケージャーのほうが適切な場合は、パッケージャー セクションで説明されているすべてのパッケージャーを使用できます。カスタム ISO パッケージャーが実装されている場合 (ISOPackager インターフェイスなど)、SOAtest/Virtualize のクラスパスにパッケージャーが含まれている必要があり、また完全修飾クラス名 (たとえば org.jpos.iso.packager.GenericPackager など) を指定する必要があります。詳細については、「Packagers」を参照してください。 |
---|---|
パッケージャー パス | 汎用パッケージャー記述 XML ファイルへのパスを定義します。 このフィールドは、汎用パッケージ (GenericPackager および X92GenericPackager など) の場合にだけ使用します。 |
ヘッダー設定
Header Length | 送信レスポンスのヘッダーの長さを指定します。 |
---|
接続の管理設定
接続をキープ アライブ | クライアント接続を持続して今後のパブリッシュで再利用するには、このオプションを有効化します。 |
---|---|
テスト実行後に接続をクローズする | パブリッシュの直後にクライアント接続を切断するには、このオプションを有効化します。 |
ISO 8583 メッセージ フォーマット設定
ISO 8583 メッセージ フォーマットの以下のオプションを設定できます。
パッケージャー名 | ISO 8583 メッセージのパックおよびアンパックに使用するパッケージャーを定義します。通常、汎用パッケージャー XML 記述とともに GenericPackager が使用されます。しかし、事前定義済みの ISO パッケージャーのほうが適切な場合は、パッケージャー セクションで説明されているすべてのパッケージャーを使用できます。カスタム ISO パッケージャーが実装されている場合 (ISOPackager インターフェイスなど)、SOAtest/Virtualize のクラスパスにパッケージャーが含まれている必要があり、また完全修飾クラス名 (たとえば org.jpos.iso.packager.GenericPackager など) を指定する必要があります。詳細については、「Packagers」を参照してください。 |
---|---|
パッケージャー パス | 汎用パッケージャー記述 XML ファイルへのパスを定義します。 このフィールドは、汎用パッケージ (GenericPackager and X92GenericPackager など) の場合にだけ使用します。 |
ISO 8583 トランスポート設定
ISO 8583 トランスポートの以下のオプションを設定できます。
チャネル設定
チャネル名 | メッセージの送受信時に使用する ISO 8583 チャネルを定義します。jPOS ライブラリに含まれるすべてのデフォルト チャネル実装 (ポート、ホスト、その他のパッケージャーだけを必要とする実装など) を利用できます。詳細については、「Channels」を参照してください。 |
---|---|
ホスト | 接続を行うときに使用するホストを定義します。 |
ポート | 接続を行うときに使用するポートを定義します。 |
Timeout | 接続がタイムアウトするまでの秒数を定義します。 |
パッケージャー設定
パッケージャー名 | チャネルの作成に使用されるパッケージャーを指定します。 このフィールドは ISO 8583 Message Format Settings の対応するフィールドと同様に機能します。 |
---|---|
パッケージャー パス | 汎用パッケージャー記述 XML ファイルへのパスを定義します。 このフィールドは ISO 8583 Message Format Settings の対応するフィールドと同様に機能します。 |
ヘッダー設定
リクエスト ヘッダー | リクエストと共に送信するカスタム ヘッダーを定義します。このフィールドは、レスポンス ヘッダー サイズのテンプレートを兼ねています。これにより、レスポンスのヘッダーを適切に読み取ることができます。 |
---|
Packagers
パッケージャーは、ISO 8583 メッセージの構造を定義します。メッセージに含まれるフィールドの数、フィールドのデータ型などを定義します。パッケージャーを使用すると、ISO 8583 メッセージのバイナリ データを処理して、別のパッケージャーでも容易に操作やフォーマット設定が可能な汎用的な ISO メッセージに変換することができます。デフォルトでさまざまなパッケージャーが提供されているほか、カスタム パッケージャーを使用して特殊なケースに対応することもできます。
パッケージャーは jPOS API の拡張も提供します。カスタム パッケージャーを定義し、カスタム ISO 8583 メッセージを記述できるため、事実上、どんなタイプの ISO 8583 メッセージでもサポートできます。
デフォルト パッケージャー
パッケージャー名 | パッケージャーの説明 |
---|---|
Base1Packager | VISA Base1 バイナリ パッケージャーです。 |
Base1SubFieldPackager | VISA Base1 バイナリ サブフィールド パッケージャーです。 |
BASE24Packager | BASE24 ASCII パッケージャーです。 |
CTCSubElementPackager | フィールド 48 のサブ要素の検証パッケージャーです。 |
CTCSubFieldPackager | フィールド 48 のサブフィールドの検証パッケージャーです。 |
DummyPackager | ダミー パッケージャーです。メッセージがパック/アンパックされると例外をスローします。 |
EuroPackager | EuroPay パッケージャーです。 |
EuroSubFieldPackager | EuroPay サブフィールド パッケージャーです。 |
FSDPackager | FSD ISO メッセージ パッケージャーです。 |
GenericPackager | XML 記述を使用して ISO メッセージを記述します。 |
GenericSubFieldPackager | XML 記述を使用して ISO サブフィールドを記述します。 |
GenericTaggedFieldsPackager | ビットマップなしで TLV サブフィールドを含むフィールド用のパッケージャーです。 |
GenericValidatingPackager | XML 記述を使用して ISO メッセージを検証します。 |
ISO87APackager | ISO 8583 v1987 ASCII パッケージャーです。 |
ISO87APackagerBBitmap | バイナリ ビットマップを使用する ISO 8583 v1987 ASCII パッケージャーです。 |
ISO87BPackager | ISO 8583 v1987 BINARY パッケージャーです。 |
ISO93APackager | ISO 8583 v1993 ASCII パッケージャーです。 |
ISO93BPackager | ISO 8583 v1993 BINARY パッケージャーです。 |
LogPackager | jPOS ログから ISO メッセージをパック/アンパックします。 |
MasterCardEBCDICSubFieldPackager | MasterCard EBCDIC サブフィールド パッケージャーです。 |
PackagerWrapper | 別の ISO パッケージャーをラップします。 |
PostPackager | Postilion 用の ISO 8583 v1987 パッケージです |
VAPSMSPackager | VISA の VAP Single Message (非推奨) 対応の ISO 8583 v1987 BINARY パッケージャーです |
VAPVIPPackager | VISA の VAP Single Message (非推奨) 対応の ISO 8583 v1987 BINARY パッケージャーです |
X92GenericPackager | XML 記述を使用して ANSI X9.2 ISO メッセージを記述します。 |
X92Packager | ANSI X9.2 バイナリ パッケージャーです。 |
XML2003Packager | ISO 8583 v2003 メッセージを XML 表現にパック/アンパックします。 |
XMLPackager | ISO 8583 メッセージを XML 表現にパック/アンパックします。 |
Custom Packagers
カスタム パッケージャーは、2 つの方法で実装でき、カスタム ISO 8583 メッセージのサポートを可能にします。
汎用パッケージャー XML 記述
この実装では、jPOS ライブラリが大部分の ISO 8583 メッセージを処理可能な汎用パッケージャーを提供します。汎用パッケージャーは、ISO 8583 メッセージの XML 記述を使用して ISO 8583 メッセージを適切にパック/アンパックします。
汎用パッケージャー記述を定義するには、まず XML 文書型を宣言します。
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE isopackager PUBLIC "-//jPOS/jPOS Generic Packager DTD 1.0//EN" "http://jpos.org/dtd/generic-packager-1.0.dtd">
文書型の後に ISO パッケージャー定義が続きます。
<isopackager> <!-- ISO Field Definitions --> </isopackager>
ISO フィールド定義は、ISO パッケージャー定義の中に置きます。ISO フィールド定義は、プリミティブな ISO 8583 型または複合型です。
プリミティブな ISO フィールド定義
プリミティブな ISO フィールド定義を行うには、以下のフォーマットを使用します。
<isofield id="0" length="4" name="MESSAGE TYPE INDICATOR" pad="true" class="org.jpos.iso.IFB_NUMERIC"/>
id 属性はフィールド番号を定義し、length 属性はデータ長を定義し、name 属性はフィールド名を定義し、pad 属性 (オプション) はフィールドを文字でパディングするかどうかを指定し、class 属性はフィールドのデータ型に関連付けられるフィールド パッケージャーを定義します。必要に応じてカスタム フィールド パッケージャーを作成することもできます。それには、ISOFieldPackager を実装し、実装を SOAtest/Virtualize のクラスパスに含めます。
以下の ISO フィールド パッケージャーがデフォルトで提供されています (XML 定義の中では、すべてのクラス名に接頭辞 "org.jpos.iso" を付ける必要があります)。
クラス名 | クラスの説明 | クラス名 | クラスの説明 |
---|---|---|---|
IF_CHAR | 固定長英数字 (ASCII) | IFB_LLCHAR | 可変長英数字 (BINARY, maxlength=99) |
IF_ECHAR | 固定長英数字 (EBCDIC) | IFB_LLHBINARY | 可変長バイナリ 16 進数 (BINARY, maxlength=99) |
IF_NOP | 固定長の空 (ダミー) フィールド | IFB_LLHCHAR | 可変長英数 16 進数 (BINARY, maxlength=99) |
IF_TBASE | 固定長トークン フィールド | IFB_LLHECHAR | 可変長英数 16 進数 (EBCDIC, maxlength=99) |
IF_TCHAR | トークン付き固定長英数字 | IFB_LLHFBINARY | 固定長バイナリ 16 進数 (BINARY, maxlength=99) |
IF_UNUSED | 固定長の空 (ダミー) フィールド。フィールドが使用された場合、例外をスローする | IFB_LLHNUM | 可変長数値 16 進数 (BINARY, maxlength=99) |
IFA_AMOUNT | 固定長のゼロ埋めされた数量 (ASCII) | IFB_LLLBINARY | 可変長バイナリ (BINARY, maxlength=999) |
IFA_AMOUNT2003 | ISO 8583-2003 対応の固定長のゼロ埋めされた数量 (ASCII) | IFB_LLLCHAR | 可変長英数字 (BINARY, maxlength=999) |
IFA_BINARY | 固定長バイナリ (ASCII) | IFB_LLLHBINARY | 可変長バイナリ 16 進数 (BINARY, maxlength=999) |
IFA_BITMAP | 固定長ビットマップ (ASCII) | IFB_LLLHCHAR | 可変長英数 16 進数 (BINARY, maxlength=999) |
IFA_FLLCHAR | 固定長英数字 (ASCII, length=99) | IFB_LLLHECHAR | 可変長英数 16 進数 (EBCDIC, maxlength=999) |
IFA_FLLNUM | 固定長数値 (ASCII, length=99) | IFB_LLLHNUM | 可変長数値 16 進数 (BINARY, maxlength=999) |
IFA_LBINARY | 可変長バイナリ (ASCII, maxlength=9) | IFB_LLLLBINARY | 可変長バイナリ (BINARY, maxlength=9999) |
IFA_LCHAR | 可変長英数字 (ASCII, maxlength=9) | IFB_LLLNUM | 可変長数値 (BINARY, maxlength=999) |
IFA_LLABINARY | 可変長バイナリ (ASCII, maxlength=99) | IFB_LLNUM | 可変長数値 (BINARY, maxlength=99) |
IFA_LLBINARY | 可変長バイナリ (ASCII, maxlength=99) | IFB_NUMERIC | 固定長数値 (BINARY) |
IFA_LLBNUM | 可変長数値 (ASCII BCD, maxlength=99) | IFE_AMOUNT | 固定長数量 (EBCDIC) |
IFA_LLCHAR | 可変長英数字 (ASCII, maxlength=99) | IFE_BINARY | 固定長バイナリ (EBCDIC) |
IFA_LLLABINARY | 可変長バイナリ (ASCII, maxlength=999) | IFE_BITMAP | 固定長ビットマップ (EBCDIC) |
IFA_LLLCHAR | 可変長英数字 (ASCII, maxlength=999) | IFE_CHAR | 固定長英数字 (EBCDIC) |
IFA_LLLLBINARY | 可変長バイナリ (ASCII, maxlength=9999) | IFE_LLBINARY | 可変長バイナリ (EBCDIC, maxlength=99) |
IFA_LLLLCHAR | 可変長英数字 (ASCII, maxlength=9999) | IFE_LLCHAR | 可変長英数字 (EBCDIC, maxlength=99) |
IFA_LLLLLBINARY | 可変長バイナリ (ASCII, maxlength=99999) | IFE_LLLBINARY | 可変長バイナリ (EBCDIC, maxlength=999) |
IFA_LLLLLCHAR | 可変長英数字 (ASCII, maxlength=99999) | IFE_LLLCHAR | 可変長英数字 (EBCDIC, maxlength=999) |
IFA_LLLNUM | 可変長数値 (ASCII, maxlength=999) | IFE_LLLEBINARY | 可変長バイナリ EBCDIC (EBCDIC, maxlength=999) |
IFA_NUMERIC | 固定長数値 (ASCII) | IFE_LLLLBINARY | 可変長バイナリ (EBCDIC, maxlength=9999) |
IFA_TTLBINARY | トークン付き可変長バイナリ (ASCII, maxlength=9) | IFE_LLLLCHAR | 可変長英数字 (EBCDIC, maxlength=9999) |
IFA_TTLCHAR | トークン付き可変長英数字 (ASCII, maxlength=9) | IFE_LLNUM | 可変長数値 (EBCDIC, maxlength=99) |
IFA_TTLLBINARY | トークン付き可変長バイナリ (ASCII, maxlength=99) | IFE_NUMERIC | 固定長数値 (EBCDIC) |
IFA_TTLLCHAR | トークン付き可変長英数字 (ASCII, maxlength=99) | IFE_SIGNED_ | 固定長符号付き数値 (EBCDIC) |
IFA_TTLLLBINARY | トークン付き可変長バイナリ (ASCII, maxlength=999) | IFEA_LLCHAR | Esoteric 可変長英数字 (ASCII EBCDIC, maxlength=99) |
IFA_TTLLLCHAR | トークン付き可変長英数字 (ASCII, maxlength=999) | IFEB_LLLNUM | Esoteric 可変長数値 (EBCDIC, maxlength=999) |
IFA_TTLLLLBINARY | トークン付き可変長バイナリ (ASCII, maxlength=9999) | IFEB_LLNUM | Esoteric 可変長数値 (EBCDIC, maxlength=99) |
IFA_TTLLLLCHAR | トークン付き可変長英数字 (ASCII, maxlength=9999) | IFEMC_LLCHAR | Esoteric 可変長英数字 (EBCDIC, maxlength=99) |
IFB_AMOUNT | 固定長数量 (BINARY) | IFEP_LLCHAR | Europay 可変長英数字 (EBCDIC, maxlength=99) |
IFB_AMOUNT2003 | ISO 8583-2003 対応固定長数量 (BINARY) | IFEPE_LLCHAR | Mastercard 可変長英数字 (EBCDIC, maxlength=99) |
IFB_BINARY | 固定長バイナリ (BINARY) | IFIPM_LLLCHAR | トークン付き可変長英数字 (maxlength=999) |
IFB_BITMAP | 固定長ビットマップ (BINARY) | IFMC_LLBINARY | トークン付き可変長バイナリ (maxlength=99) |
IFB_FLLLNUM | 固定長数値 (BINARY, length=999) | IFMC_LLCHAR | トークン付き可変長英数字 (maxlength=99) |
IFB_FLLNUM | 固定長数値 (BINARY, length=99) | IFMC_LLLBINARY | トークン付き可変長バイナリ (maxlength=999) |
IFB_FNUMERIC | 固定長数値 (BINARY) | IFMC_LLLCHAR | トークン付き可変長英数字 (maxlength=999) |
IFB_LLBINARY | 可変長バイナリ (BINARY, maxlength=99) |
|
複合 ISO フィールド定義
複合 ISO フィールド定義を行うには、以下のフォーマットを使用します。
<isofieldpackager id="127" length="255" name="FILE RECORS(S) ACTION/DATA" class="org.jpos.iso.IFB_LLHBINARY" packager="org.jpos.iso.packager.GenericSubFieldPackager"/> <!-- ISO Field Definitions --> </isofieldpackager>
id、length、name、および class 属性は、プリミティブ ISO フィールドの定義の場合と同じ意味を持ちます。追加の packager 属性を定義し、この複合 ISO フィールドを残りの ISO メッセージとパッケージする方法を記述し、その後にプリミティブな ISO フィールドの定義と同じようにサブフィールドの記述を続けます。
参考として、jPOS のサンプルの中に、VISA の Base1 ISO 8583 メッセージ対応カスタム パッケージのサンプルがあります。プラグインの zip ファイルに含まれる base1.xml を参照してください。
ISOPackager インターフェイス
この実装では、jPOS ライブラリは、カスタム パッケージャーの定義に使用できる Java インターフェイスも提供します。汎用パッケージャーやデフォルトのパッケージャーでは特定の ISO 8583 メッセージをサポートできない場合、カスタム ISO パッケージャーを実装できます。
チャネル
チャネルは、ISO 8583 クライアントとサーバーが相互に通信する方法を定義します。チャネルは、汎用 ISO メッセージが送信前に適切にフォーマットされ、送信先で適切に再構築されるよう保証します。チャネルは、クライアントおよびサーバー間での ISO 8583 メッセージの送受信に使用される接続およびプロトコルを処理します。パッケージャーの場合と同様に、jPOS ライブラリは多くのチャネルを提供しており、ほとんどのケースに対応できるはずです。しかし、適切なチャネルが存在しない場合、BaseChannel クラスを拡張することで、カスタム ISO 8583 チャネルを実装できます。
デフォルトでは、以下のチャネルが提供されています。
チャネル名 | チャネルの説明 |
---|---|
AmexChannel | American Express のチャネルです。 |
ASCIIChannel | 4 ASCII 文字メッセージ長ヘッダーを持つ ISO ベースのチャネル拡張です。 |
BCDChannel | 以下のメッセージ フォーマットを持つ ISO ベースのチャネル拡張です。 [LEN][TPDU][ISOMSG] LEN は 2 バイトの 16 進数です。 |
CSChannel | CS 標準チャネルです |
FSDChannel | 以下のメッセージ フォーマットを持つ ISO ベースのチャネル拡張です。 [LEN][TPDU][ISOMSG] LEN は ネットワーク バイト オーダーの 2 バイトです。 |
GZIPChannel | チャネル上で送信されるデータを GZIP で圧縮する ISO ベースのチャネル拡張です。 |
HEXChannel | 4 ASCII 16進数文字メッセージ長ヘッダーを持つ ISO ベースのチャネル拡張です。 |
LogChannel | ISO ロガーから ISOMSG ブロックを抽出する ISO ベースのチャネル拡張です。 |
NACChannel | 以下のメッセージ フォーマットを持つ ISO ベースのチャネル拡張です。 [LEN][TPDU][ISOMSG] LEN は ネットワーク バイト オーダーの 2 バイトです。 |
NCCChannel | 以下のメッセージ フォーマットを持つ ISO ベースのチャネル拡張です。 [LEN][TPDU][ISOMSG] LEN は 2 バイトで、バイナリコードされた 10 進数 (BCD) フォーマットです。 |
PADChannel | X.25 PAD への接続に適した ISO チャネルです。 |
PostChannel | 以下のメッセージ フォーマットを持つ ISO ベースのチャネル拡張です。 [LEN][ISOMSG] LEN は 2 バイトで、ネットワーク バイト オーダー (NBO) です。 |
RawChannel | 以下のメッセージ フォーマットを持つ ISO ベースのチャネル拡張です。 [LEN][ISOMSG] LEN は 4 バイトで、ネットワーク バイト オーダー (NBO) です。 |
RBPChannel | Record Boundary Preservation チャネルです。 |
TelnetXMLChannel | telnet セッションを通じて XML ベースの ISO-8583 メッセージを交換します。telnet コマンドは無視されます。 |
VAPChannel | VISA の VAP framing (非推奨) です。 |
X25Channel | X.25 PAD への接続に適した ISO チャネルです。 |
XMLChannel | XML ベースの ISO-8583 メッセージを交換する ISO ベースのチャネル拡張です。 |
サード パーティのコンテンツ
このツールは、以下のサード パーティのコンテンツを含みます。
- jPOS (GNU AGPL v3.0)
- JDOM library (JDOM license)
Parasoft の ISO 拡張機能は、GNU AGPL v3.0 ライセンスのもとにリリースされています。
その他のライセンスの詳細については、Parasoft Burp Suite Extensions の licenses フォルダーを参照してください。