このセクションの内容

概要

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-2.1.1.jar

JDOM

  • jdom2-2.0.6.jar

ISO-8583 Extensions

  • com.parasoft.soavirt.messages.iso8583.jar
  • com.parasoft.soavirt.transport.iso8583.jar
  • com.parasoft.virtualize.listener.iso8583e.jar

前提条件

  • SOAtest および/または Virtualize 9.5.x 以上

インストール

拡張機能は UI またはコマンドラインからインストールできます。

UI からのインストール

  1. [Parasoft] > [設定] を選択します。

  2. [システム プロパティ] ページで [JAR の追加] をクリックします。

  3. 表示されたファイル選択ダイアログで com.parasoft.soavirt.iso8583.main.jar を選択します。必要な依存ライブラリがすべてロードされます。
  4. SOAtest/Virtualize を再起動します。

コマンドラインからのインストール

localsettings プロパティ ファイルの system.properties.classpath プロパティに com.parasoft.soavirt.iso8583.main.jar を追加します。

例:

system.properties.classpath=<path to jar>/com.parasoft.soavirt.iso8583.main.jar

クラスパスを変更すると、必要なすべての依存ライブラリがロードされます。

使用方法

Virtualize

ISO 8583 トランスポートを使用する必要がある Virtualize Message Responder は、PVA レベルでカスタム ISO 8583 リスナーを使用するよう設定されていなければなりません (詳細については「プロジェクト、 仮想アセット、レスポンダー スイートの追加」を参照)。

  1. Virtualize サーバー ツリーで PVA のノードをダブルクリックします。
  2. [トランスポート] > [カスタム] タブをクリックし、リスナーを設定します。
  3. 複数のリスナーがインストールされている場合、まず [実装の選択] ドロップダウン メニューから ISO 8583 リスナーを選択します。

PVA とリスナーが関連付けられると、PVA に ISO 8583 Responder ツールを追加し、適切に ISO 8583 レスポンスを処理できるようになります。

SOAtest

  1. テスト スイートを右クリックし、[新規追加] > [テスト] をクリックします。 
  2. 同じ名前の 2 つの ISO 8583 クライアントがテストの追加ウィザードで利用できるようになります。[共通ツール] カテゴリで [ISO 8583 Client] を選択し、[終了] をクリックします。もう 1 つの ISO Client は SOAtest に付属しているビルトイン ツールであり、ISO 8583 拡張機能によって置き換えられます。   



  3. [トランスポート] タブをクリックして [トランスポート] ドロップダウン メニューから [カスタム拡張] を選択します。
  4. [実装の選択] ドロップダウン メニューから [ISO 8583] を選択し、ツールを設定します。パッケージャー オプションは、[変換オプション] タブとPackager Settingsの下のトランスポート設定の両方で設定されます。

ISO 8583 Message Listener 設定

ISO 8583 Message Listener の以下のオプションを設定できます。

チャネル設定

チャネル名

メッセージの送受信時に使用する ISO 8583 チャネルを定義します。jPOS ライブラリに含まれるすべてのデフォルト チャネル実装 (ポート、ホスト、その他のパッケージャーだけを必要とする実装など) を利用できます。詳細については、「Channels」を参照してください。

ホスト接続を行うときに使用するホストを定義します。
ポート

接続を行うときに使用するポートを定義します。 

Timeout

接続がタイムアウトするまでの秒数を定義します。 

パッケージャー設定

パッケージャー名

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 パッケージャーです。

BERTLVAsciiHexPackagerBER TLV ASCII パッケージャーです。
BERTLVBinaryPackagerBER TLV BINARY パッケージャーです。
BERTLVEbcdicHexPackagerBER TLV EBCDIC パッケージャーです。
BinaryHexTaggedSequencePackager TLV BINARY パッケージャーです。

CTCSubElementPackager

フィールド 48 のサブ要素の検証パッケージャーです。

CTCSubFieldPackager

フィールド 48 のサブフィールドの検証パッケージャーです。

DummyPackager

ダミー パッケージャーです。メッセージがパック/アンパックされると例外をスローします。

EuroPackager

EuroPay パッケージャーです。

EuroSubFieldPackager

EuroPay サブフィールド パッケージャーです。

FSDPackager

FSD ISO メッセージ パッケージャーです。

GenericPackager

XML 記述を使用して ISO メッセージを記述します。

GenericSubFieldPackager

XML 記述を使用して ISO サブフィールドを記述します。

GenericTaggedFieldsPackager

ビットマップなしで TLV サブフィールドを含むフィールド用のパッケージャーです。

GenericValidatingPackager

XML 記述を使用して ISO メッセージを検証します。

GICCSubFieldPackagerGICC のサブフィールド用のパッケージャーです。

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 パッケージャーです。

MasterCardEBCDICSubFieldPackager

MasterCard EBCDIC サブフィールド パッケージャーです。

PackagerWrapper

別の ISO パッケージャーをラップします。

PostPackager

Postilion 用の ISO 8583 v1987 パッケージです

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_
NUMERIC

固定長符号付き数値 (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 ベースのチャネル拡張です。 

BASE24ChannelACI の BASE24 over an X.25 リンクです。
BASE24TCPChannelACI の BASE24 over a TCP リンクです。

BCDChannel

以下のメッセージ フォーマットを持つ ISO ベースのチャネル拡張です。

[LEN][TPDU][ISOMSG]

LEN は 2 バイトの 16 進数です。 

CSChannel

CS 標準チャネルです 

FSDChannel

以下のメッセージ フォーマットを持つ ISO ベースのチャネル拡張です。

[LEN][TPDU][ISOMSG]

LEN は ネットワーク バイト オーダーの 2 バイトです。 

GICCChannelGICC チャネルです。

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 ベースのチャネル拡張です。 

サード パーティのコンテンツ

このツールは、以下のサード パーティのコンテンツを含みます。

Parasoft の ISO 拡張機能は、GNU AGPL v3.0 ライセンスのもとにリリースされています。

その他のライセンスの詳細については、Parasoft Burp Suite Extensions の licenses フォルダーを参照してください。

  • No labels