メインコンテンツまでスキップ

2.2. Derived Components (派生コンポーネント)

2.2. Derived Components (派生コンポーネント)

HTTP フィールドに加え, 署名対象の HTTP メッセージの制御データ, 署名コンテキスト, またはその他の側面から導出できるさまざまな構成要素がある. そのような派生コンポーネントは, コンポーネント名, 可能なパラメータ, メッセージターゲット, およびコンポーネント値の導出方法を定義することで署名ベースに含められる.

派生コンポーネント名は "at" (@) 文字で始まらなければならない. これにより派生コンポーネント名は, [HTTP] のセクション 5.1 に従い @ 文字を含めない HTTP フィールド名と区別される. HTTP メッセージ署名のプロセッサは, セクション 7.5.1 で論じるとおり, 派生コンポーネント名をフィールド名とは別に扱わなければならない.

本仕様は次の派生コンポーネントを定義する.

@method リクエストに用いられるメソッド (セクション 2.2.1).

@target-uri リクエストの完全な target URI (セクション 2.2.2).

@authority リクエストの target URI の authority コンポーネント (セクション 2.2.3).

@scheme リクエストの target URI の scheme (セクション 2.2.4).

@request-target リクエストターゲット (request target) (セクション 2.2.5).

@path リクエストの target URI の絶対パス部分 (セクション 2.2.6).

@query リクエストの target URI のクエリ部分 (セクション 2.2.7).

@query-param リクエストの target URI のパース済みかつ符号化されたクエリパラメータ (セクション 2.2.8).

@status レスポンスのステータスコード (セクション 2.2.9).

追加の派生コンポーネント名は "HTTP Signature Derived Component Names" レジストリ (セクション 6.4) で定義される.

派生コンポーネント値は署名のターゲットメッセージの文脈から取り出される. この文脈にはメッセージ自身に関する情報 (制御データなど) のほか, 署名者または検証者が保持する追加の状態および文脈が含まれる. 特にレスポンスに署名するとき, 署名者は req パラメータ (セクション 2.4) を用いて発信リクエストから任意の派生コンポーネントを含められる.

request: [HTTP] のセクション 3.4 で記述されるとおり, HTTP リクエストメッセージから導出され結果が適用される値. 署名のターゲットメッセージがレスポンスである場合, セクション 2.4 で定義されるとおり req パラメータを用いてリクエストメッセージを対象とする派生コンポーネントを含められる.

response: [HTTP] のセクション 3.4 で記述されるとおり, HTTP レスポンスメッセージから導出され結果が適用される値.

request, response: リクエストメッセージまたはレスポンスメッセージのいずれかから導出され, いずれかに結果が適用される値.

派生コンポーネントの定義は, 適用されうるすべてのターゲットメッセージ型を定義しなければならない.

派生コンポーネント値は印字可能文字および空白に限定され, 改行文字を含んではならない. 派生コンポーネント値は空白文字で始まったり終わったりしてはならない.