接続仕様

BFM Cacheシステム(以後本システム)においてINFINI内に設置されたアプリケーションサーバ(以後サーバ)とユーザ敷地内に設置されたサーバ(以後クライアント)との間のインタフェース仕様を記述する。
なお、ここではプロトコル層以上について記述し、ネットワークの物理層については範囲外とする。

基本仕様

1. サーバとクライアント間の通信はHTTP/1.0、1.1 仕様に基づくHTTP プロトコルを用いるものとする。

2. 通信はすべてクライアントからの接続とし、サーバからの応答をもって完結する。
  また、メソッドは POST のみ使用する。
  ※ソケットの接続状態(Keep-Alive 制御)についてはIIS の実装に準じる。

3. メッセージはヘッダー、コンテンツともすべてASCII 文字で構成されるものとする
  (本システムにおいて日本語などのマルチバイト文字やバイナリデータなどは使用しない)


4. 本サービスは下記のURL で提供される。
  本番環境 :https://www.infini-hostlink.com/HostLinkService/infiniAPI.asp
  テスト環境:https://testsite.infini-hostlink.com/HostLinkService/infiniAPI.asp

構成

本仕様を実現するための、構成(案)を付図に示す。
※ なお、クライアント側構成については想像に基づくものである。

セッションの管理

BFM CacheではHOST-LINKの他機能が提供しているセッションの管理は行わず、単一リクエストによる処理を行う。

リクエストの送信

  • リクエスト送信時にクライアントは、下記 HTTPヘッダーを持つリクエストメッセージを送信する。
    X-XML-Booking-Session: SESSION=START_END
    X-XML-Booking-PCC: PCC=XXXX
    X-XML-Booking-Host: HOST=BFMCACHE
    ※  XXXXはエージェント社の持つ4桁のPCCコードであり、サイン・インに使用される。
      また、サーバでPCCコードの末尾が"6"であることをチェックする。
  • 上記要求に対しサーバは、BFM Cacheと通信し、その結果を、下記HTTPヘッダーを持つレスポンスメッセージにより送信する。
    X-XML-Booking-Status: STATUS=XXXX
    ※  XXXXはBFMCacheとの通信の結果を示すステータス・コードである。
    ※  HOST-LINKの他機能で返信されるクッキー情報(ASPSESSIONIDYYYYY=ZZZZZ)は返信されない。

サーバ障害に伴うセッション終了

  • サーバにおいてリクエスト受信後に、処理を継続できない状況が生じた場合、サーバは下記HTTPヘッダーを持つレスポンスメッセージを返信、もしくはHTTPタイムアウトを発生させる。

    X-XML-Booking-Session: SESSION=END
    X-XML-Booking-Status: STATUS=XXXX
    ※  XXXXは障害を示すステータスとする。
    (主に「STATUS=0000」以外のステータスコードの場合。)

    システムの安定稼働には万全の対応を行っておりますが、万が一BFM Cacheシステムに障害が発生した場合に備え、お客様システムにてBFM Cacheリクエストか通常のBFMリクエストかの接続切替が可能な仕組みを構築いただくようお願い致します。

    BFMリクエストの詳細については
    こちらを参照のこと。


     
  • 同様にリクエスト受信後に、応答も返せない状況が生じた場合、クライアントは一定時間受信待ち後にタイムアウト処理を実装すること。
    必要に応じてクライアント側でリトライを実装すること。

コンテンツ

通常コンテンツには、BFM Cache仕様に基づく XMLメッセージが含まれるが、下記のヘッダーが付いた場合には、そのメッセージのコンテンツは無視するものとする(サーバ、クライアント双方において)。
※ 下記ヘッダーがついたメッセージのコンテンツは BFM Cache仕様に含まれない独自XMLとする。
  X-XML-Booking-Contents: CONTENTS=IGNORE
  例:サーバにて障害が発生した場合のレスポンスメッセージ

通信例

上記仕様に基づいた通信例は以下の通りである。

セキュリティ

  • 本システムにおいて、INFINI側LANとユーザ側LAN間の通信(WAN)については物理層によって十分セキュリティが確保されていることを前提とし、この部分のセキュリティ対策は本設計書では記述しない。
  • INFINI側LAN内部およびユーザ側LAN内部におけるセキュリティ保持のため、サーバにおいて下記の対策を取る。
    • リクエストメッセージ送信元の確認
      リクエストメッセージ送信元のIPアドレスをチェックし、あらかじめ設定されたIPアドレス以外からのリクエストはエラー応答し、該当セッションを切断する。

      セッション開始時の送信元IPアドレスを記憶しておき、セッション途中ではそのIPアドレス以外からの要求はエラー応答する。
       
    • 受信コンテンツサイズの制限
      ありえないサイズのリクエストを受信することによるメモリ不足や高負荷の発生を予防するため、受信中のコンテンツサイズが32KBを超えた時点で以降の受信を中止しエラー応答する。

特記

  • ステータス・コードについては、付録に一覧を添付する。
  • HTTP拡張ヘッダーは、RFC822(STANDARD FOR THE FORMAT OF ARPA INTERNET TEXT MESSAGES)に準拠し、先頭文字を "X-"とする。
  • また、RFC2616に準拠し HTTPヘッダー識別子(":"の左側の文字列)において大文字/小文字は区別されないものとする。
  • 特に断りの無い限り、サーバより送信するHTTPメッセージ仕様は IIS7.5の実装に依存する。
  • 専用回線利用ユーザを除き、HOST-LINKドメインの名前解決にはDNSによる名前解決を利用すること。(グローバルIPを固定でプログラムに実装しない。)
  • DNSキャッシュの生存期間(TTL)についてはDNSに登録されている生存期間に従うこと。(生存期間を超えてキャッシュしたIPについては動作を保証しない。)

付録<INFINI HOST-LINK XML版ステータス・コードについて>

現在のINFINI HOST-LINK XML 版に基づいて返されるステータス・コード(拡張ヘッダーの
STATUS に設定される値)は下記の定義に従った16 進4 桁数値である。

エラーコード

エラーコード       エラー内容       
0000 正常
9401 PCC エラー(末尾が6 でない、または長さが8 バイトより長い)
9402 不正なアクセス(途中で IP アドレスが未登録 IP アドレスに変更された)
9403 不正なアクセス(未登録 IP アドレスから受信)
9404 コンテンツが長すぎる(32KB を超えている)
9405 メソッドがPOST ではない
9406 認識できないヘッダーがある
9407
(Sxxx)
サイン・イン・エラー
xxxx はホスト・エラー・コード
9408 PCC セッション上限数オーバー
9409 許可されていないコマンド
940A コマンド、モード組み合わせ指定エラー
940B XML 解析エラー
940C 不正なクッキー
9C00 ホストとの接続時エラー
セッションが存在しない
9C02 ホストとの接続時エラー
接続タイムアウト
9C04 ホストとの接続時エラー
サインアウトエラー
A402 ホストからの受信エラー
受信タイムアウト
A405 ホスト、サーバータイムアウト
A887 ホストへの送信エラー
送信タイムアウト
A8FF 受信したレスポンス・データが空だった
AC01
(xxx)
SWS ホスト通信エラー
SWS ホストへのコマンド送受信時のHTTP ステータスコードが200 でない
xxx はステータスコード
AC02 ホストビジー
AC03
(BFM)
ホストビジー
通信毎にスレッド数の上限数オーバー
B001 サーバーセッション数オーバー
FFFF 内部エラー