トランスポート レイヤ コンテキスト変数

以下の表に、トランスポート レイヤに関連する事前定義済みのコンテキスト変数のリストを示します。
9-5
以下の表に、トランスポート レイヤに関連する事前定義済みのコンテキスト変数のリストを示します。
変数
説明
${
<
target
>
.http.version}
ターゲットが有効な HTTP リクエストである場合、HTTP プロトコル バージョンを返します。 有効な値は、
1.0
1.1
、または
2.0
です。
ターゲットが有効な HTTP リクエストでない場合、NULL 値を返します。
${
<
target
>
.http.allheadervalues}
配列内のすべての HTTP ヘッダとその値を「
<name>
:
<value>
」の形式で返します。
${
<
target
>
.http.cookies}
すべての Cookie およびその属性を返します。
以下の例で、「Cookie1」および「Cookie2」は Cookie 名で、「123」および「456」はその値です。
Cookie1=123; Version=1; Domain=localhost; Path=/; Comment=test; Max-Age=60; Secure, Cookie2=456; Version=1; Domain=localhost; Path=/; Comment=test; Max-Age=60; Secure
追加情報:
  • ${request.http.cookies} は
    ${request.http.headervalues.cookies}
    と同じ値を返します。
  • ${response.http.cookies} は
    ${response.http.headervalues.set-cookies}
    と同じ値を返します。
  • <target>
    がメッセージ変数である場合:
    • この変数がレスポンスで保存されている場合、
      ${MsgVar.http.cookies}
      ${MsgVar.http.headerValues.set-cookie}
      と同じ値を返します。
    • この変数がレスポンスで保存されていない場合、
      ${MsgVar.http.cookies}
      ${MsgVar.http.headerValues.cookie}
      と同じ値を返します。
${
<
target
>
.http.cookienames}
すべての Cookie 名を返します(同じ名前が繰り返されることがあります)。 例:
Cookie1
,
Cookie2
${
<
target
>
.http.cookies.
<
name
>
}
指定された <
name
> を持つすべての Cookie およびその属性を返します。 同じ名前の Cookie を見つけるのに役立ちます。
以下の例で、「repeatedName」は複数回現れる Cookie 名を表し、「234」および「567」はその Cookie の各インスタンスの値を表しています。
repeatedName=234; Version=1; Domain=localhost; Path=/; Comment=test; Max-Age=60; Secure, repeatedName=567; Version=1; Domain=layer7; Path=/; Comment=test; Max-Age=60; Secure
${
<
target
>
.http.cookievalues.
<
name
>
}
指定された名前を持つ Cookie のすべての値を返します(同じ名前が繰り返されることがあります)。
上記の例の「repeatedName」という名前を使用すると、この変数は 234、567 を返します。
${<
target
>
.http.header.
<
name
>
}
メッセージの HTTP ヘッダ <
name
> (大文字と小文字は区別されません)の値を取得します。 以下に例を示します。
${request.http.header.soapaction}
そのリクエストの SOAPAction ヘッダの値を返します。
${
<
target
>
.http.headerValues.
<
name
>
}
指定されたヘッダ <
name
> のすべての値のリストを、以下の形式で返します。
[value1, value2, ... , valuen]
リクエストの場合、監査の詳細、電子メールの問題などを調査する際に、この変数が役立つことがあります。 たとえば、NTLM が有効になっている IIS サーバ上のサービスと通信しているとします。 2 つの WWW-Authenticate ヘッダがあり、それぞれの値は NTLM および Negotiate です。
${request.http.header.www-authenticate}
変数を使用すると、NTLM のみが返されます。 代りに
${request.http.headerValues.www-authenticate}
変数を使用すると、リテラル文字列 [
NTLM, Negotiate
] が返されます。
レスポンスの場合、ドキュメントでヘッダの内容を列挙する際に、この変数が役立ちます。
${
<
target
>.
jms.allpropertyvalues}
配列内のすべての JMS のプロパティとその値を「<
name
>:<
value
>」の形式で返します。
${
<
target
>
.tcp.localAddress}
${
<
target
>
.tcp.localIP}
このいずれかの変数は、TCP 接続のローカル(Gateway)側の IPv4 または IPv6 アドレスを従来の表記法で返すか、または該当しないか不明な場合は NULL を返します。
これは、メッセージが到達した TCP 接続です。
${
<
target
>
.tcp.localHost}
TCP 接続のローカル(Gateway)側のホスト名または IP アドレスを返すか、または NULL を返します。
${
<
target
>
.tcp.remoteAddress}
${
<
target
>
.tcp.remoteIP}
このいずれかの変数は、メッセージが到達した TCP 接続のリモート側の IPV4 または IPv6 アドレスを従来の表記法(ドット区切りまたはコロン区切り)で返すか、または不明な場合に NULL を返します。
${
<
target
>
.tcp.remoteHost}
デフォルトでは、クライアントの IP アドレスを返します(「*.tcp.remoteIP」と同じ)。 ホスト名を返すには、以下の手順に従って逆引きを有効にします。
  1. DNS でルックアップする必要があるクライアントのリスン ポートのプロパティを開きます。
  2. プロパティの[
    Advanced
    ]タブを選択します。
  3. Add
    ]をクリックし、以下の新しいプロパティを入力します。
    プロパティ名:
    enableLookups
    値:
    True
  4. OK
    ]をクリックしてダイアログ ボックスを閉じます。
${
<
target
>
.tcp.remotePort}
メッセージが到達した TCP 接続のリモート(非 Gateway)側の TCP ポート番号を返すか、または該当しないか不明な場合は NULL を返します。
${request.clientid}
ユーザが認証済みの場合
「AuthUser:」の後にアイデンティティ プロバイダのエンティティ ID を続け、その後にユーザ識別子を続けた値を返します。
  • 内部ユーザでは、ユーザ識別子はユーザのエンティティ ID です。 例: 内部ユーザ Alice のエンティティ ID = a5f3g62h221、アイデンティティ プロバイダのエンティティ ID = -2 である場合、 返される値は「AuthUser:-2:a5f3g62h221」です。
  • LDAP ユーザでは、ユーザ識別子はコンテキスト変数 ${request.authenticateduser} と同じです。 例: 「AuthUser:3:cn=John Smith, o=AcmeTech LLC」(アイデンティティ プロバイダ ID = 3、ユーザ識別子 = 「cn=John Smith, o=AcmeTech LLC」の場合)。
ユーザが認証されていない場合
クライアント IP が不明であるとみなして、「ClientIp:${request.tcp.remoteAddress}」を返します。 例: ClientIp:10.77.33.21。
クライアント IP が不明な場合
「ProtocolID:」の後にプロトコル名を続け、その後に、リクエストの転送プロトコルからのクライアントのエンドポイント識別子を続けた値を返します。 例: ProtocolId:XMPP:[email protected]
クライアントのエンドポイント識別子が不明な場合
「Protocol:」の後に転送プロトコルの名前を続けた値を返します。 例: Protocol:JMS。
プロトコルが不明な場合
「ClientId:Unknown」を返します。
${request.command.parameter.length}
PUT および GET リクエストで使用される、バイト長パラメータを返します。
${request.command.parameter.offset}
PUT および GET リクエストで使用される、オフセット パラメータを返します。
${request.command.parameter.newFile}
MOVE リクエストで使用される、新しいファイル名パラメータを返します。
${request.command.parameter.newPath}
MOVE リクエストで使用される、新しいファイル パス パラメータを返します。
${request.command.type}
GET、PUT、LIST、STAT、MOVE、DELETE、MKDIR、または RMDIR の値を返します。
${request.compression
.gzip.found}
ブール値を返します。
  • true
    = gzip アルゴリズムで圧縮されたメッセージが Gateway で受信されています
  • false
    = gzip 圧縮されたメッセージは受信されていません
${request.ftp.command}
サブミットされた実際の FTP コマンドを返します(例: 「MDTM」)。
アップロード専用モードでは、この変数は常に STOR に設定されます。
${request.ftp.argument}
FTP コマンドでサブミットされたすべての引数を返します(例: 「*.log」)。
この変数は、
${request.ftp.file}
${request.ftp.argument}
と同じ値を返す)を置き換えます。
${request.ftp.file}
上記の ${request.ftp.argument} と同じ値を返します。
${request.ftp.path}
FTP セッションの現在の作業ディレクトリを返します。
${request.ftp.secure}
保護された転送が使用されているかどうかを確認するために使用され、ブール値を返します。
  • true
    = FTPS が使用されています
  • false
    =FTP が使用されています
${request.ftp.unique}
この変数は、
${request.ftp.file}
${request.ftp.argument}
と同じ値を返す)を置き換えます。
ブール値を返します。
  • true
    = クライアントは、「STOU」コマンドを使用して一意のファイルをアップロードしました。
  • false
    = クライアントはその他のコマンド(LIST、SIZE、RETR、 MDTM など)を使用しました。
${request.http.method}
リクエストが HTTP で到達した場合に、リクエストの HTTP 動詞を返します(GET、POST、DELETE など)。 公開されているサービスで HTTP メソッドとして「Other」を有効にしている場合は、任意の文字列が HTTP 動詞として返される可能性があります。 その場合、保護されているサービスに渡す前に、ポリシーでそのメソッドを検証する必要があります。
${request.http.parameter.
<name>
}
リクエストで、名前 <
name
> を持つ HTTP パラメータの値を取得します。 リクエスト パラメータはリクエストで送信される追加の情報です。 HTTP サーブレットでは、パラメータはクエリ文字列または POST されたフォーム データに含まれています、
パラメータに複数の値が含まれていて、そのすべての値をキャプチャする場合は、代わりに以下のコンテキスト変数を使用します。 そうしない場合、この変数では、パラメータの最初の値のみがキャプチャされます。
${request.http.parameters
.<
name
>
}
この変数では複数の値を持つ HTTP パラメータからすべての値を取得できること以外は、
${request.http.parameter
.<
name
>} と同じです。 これは、複数値のコンテキスト変数を作成します。
複数値のコンテキスト変数内の単一の値を参照するには、インデックス機能を使用します。 たとえば、「name[0]」は最初の値を取得し、「name[1]」は 2 番目の値を取得します(以下同様)。 この機能の使用方法の詳細については、「複数値のコンテキスト変数」の「展開時のインデックス オプション」を参照してください。
${request.http.secure}
ブール値を返します。
true
= リクエストは SSL ポートで受信されました
false
= リクエストは SSL ポートで受信されていません
${request.http.uri}
リクエストの HTTP URI を返します(例:
/ssg/soap
)。
${request.jms.property.
<name>
}
リクエストの JMS のプロパティ(大文字と小文字が区別されます)の値を取得します。 以下に例を示します。
${request.jms.property.SOAPJMS_soapAction}
そのリクエストの SOAPAction プロパティの値を返します。
${request.ssh.file}
アップロード中のファイルの名前を返します(例: 「message.xml」)。
${request.ssh.path}
ファイルのアップロード ディレクトリを返します。最初のログイン時は「/」です。
${request.ssl.ciphersuite}
このリクエストが到達した TLS 接続で使用中の暗号化スイートの名前を返します(ある場合)。 HTTPS 接続でのみ有効です。
例: 「TLS_DHE_RSA_WITH_AES_256_CBC_SHA」。
${request.ssl.keysize}
SSL/TLS キー サイズ(ビット単位)を返します(使用可能な場合)。 特定の JSSE プロバイダ(SunJSSE または SSL-J)でのみ機能する可能性があります。 これは、暗号化スイートのセキュリティ強度の指標です(例: AES 128 では「128」、AES 256 では「256」が返されます)。 この値は、サーバ(またはクライアント)の秘密鍵のサイズを表すものではありません。 HTTPS 接続でのみ有効です。
${request.ssl.protocol}
ポリシーでネゴシエートした SSL/TLS のレベルを返します。 標準的な値は以下のとおりです。
TLSv1.2
TLSv1.1
TLSv1
SSLv3
${request.ssl.sessionid}
SSL/TLS セッション識別子を、16 進数の文字列として返します(使用可能な場合)。 特定の JSSE プロバイダ(SunJSSE または SSL-J)でのみ機能する可能性があります。 セッション ハイジャック攻撃を検出するために、バックエンド サービスにそのまま渡すことができます。 HTTPS 接続でのみ有効です。
${request.tcp.localPort}
メッセージが到達した TCP 接続のローカル(Gateway)側の TCP ポート番号を返すか、または該当しないか不明な場合に NULL を返します (例: 8443、8080、またはそのサーバで設定されている任意のポート)。
FTP には制御ポートとデータ ポートがあるため、この変数は FTP に対しては意味がありません。
${request.tcp.listenPort}
Layer7 API Gateway
で使用されるリスン ポート番号を返します。これは、受信したリクエストの HTTP ヘッダ内のポート番号ではなく、リクエストを受信した実際のリスン ポートを返すという点で、
${request.tcp.localPort}
とは異なります。
この変数は FTP に対しては意味がありません。
${request.url}
メッセージを受信した
Layer7 API Gateway
の URL を返します。 サフィックスなしで使用すると、URL 全体が返されます。 以下のオプションのサフィックスのいずれかを使用すると、URL のその部分のみが返されます。
.file
.fragment
.host
.path
.port
.protocol
.query
例:
${request.url}
はリクエストしているクライアント URL 全体を返します
${request.url.host}
は、その URL のホスト名部分のみを返します
${request.url.query}
は、その HTTP リクエストの URL のクエリ部分を返します
.file サフィックスと .path サフィックスは通常は同じ値を返します。
${request.url.query}
HTTP リクエストの URL のクエリ部分を返します(例: ?blah=foo)。
この変数は、
${request.url}
に「.query」サフィックスを付けて使用するのと同じです。
$ {response.ftp.replycode}
${
<
variable
>
.ftp.replycode
制御接続でリモート FTP サーバから受信したレスポンスの FTP 応答コードを返します(例: 「150」)。
Route via FTP(S) アサーションがレスポンスを受信していないか、まだ実行されていない場合は、この変数は「0」に設定されます。
$ {response.ftp.replytext}
${
<
variable
>
.ftp.replytext}
制御接続でリモート FTP サーバから受信したレスポンスのメッセージ部分を返します(例: 「/home/user」)。
データが返されていない場合、または Route via FTP(S) アサーションがレスポンスを受信していないか、まだ実行されていない場合は、この変数は NULL を返します。
$ {response.http.status}
${
<
variable
>
.http.status}
メッセージの HTTP レスポンス ステータス コードを返します。
このメッセージが、Route via HTTP(S) アサーションのターゲットであった場合(HTTP レスポンスがこのメッセージに取得された場合。Route via HTTP(S) アサーションでソースとしてこのメッセージを使用する場合と混同しないでください)、http.status サフィックス付きの変数には、このメッセージをターゲットとした最後の Route via HTTP(S) アサーションの HTTP ステータスが記録されます。 そうでない場合、http.status サフィックス付きの変数の値は「0」(ゼロ)です。
${response.jms.property.
<name>
}
レスポンスの JMS のプロパティ(大文字と小文字が区別されます)の値を取得します。
例:
${response.jms.property.Blah}
は、そのレスポンスの Blah プロパティの値を返します。