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: リクエストメッセージまたはレスポンスメッセージのいずれかから導出され, いずれかに結果が適用される値.
派生コンポーネントの定義は, 適用されうるすべてのターゲットメッセージ型を定義しなければならない.
派生コンポーネント値は印字可能文字および空白に限定され, 改行文字を含んではならない. 派生コンポーネント値は空白文字で始まったり終わったりしてはならない.