negotiate

Negotiate: ヘッダー (HTTP)

[4] HTTPNegotiate: ヘッダーは、 当該要求によって開始される内容折衝に関する指示を含めるものです。

仕様書

意味

[10] Negotiate: ヘッダーは、当該要求によって開始する内容折衝手続きについての指令を表します >>9

構文

[11] Negotiate: ヘッダーの値は、1つ以上の指令リスト (#) です >>9

  1. 指令
  2. *
    1. OWS
    2. ,
    3. OWS
    4. 指令

[12] 指令は、字句か、* か、RVSA の版か、 字句2つを = で連ねたものです >>9

  1. |
    1. *
    2. RVSA の版
    3. =
      1. 字句
      2. ?
        1. =
        2. 字句
[13] 字句の解釈は明記されていませんが、規定されているものはすべて構文上大文字・小文字不区別となっています。重複する指定も禁止はされていません。

文脈

[18] 利用者エージェント要求に指定できます。 利用者エージェント透過内容折衝に対応することを示す Negotiate: ヘッダーを含めることが透過内容折衝への「対応」 の定義となっています >>22

[19] このヘッダーは複数指定できます。

指令

[14] 次の指令があります。

[15] 値を取る構文を使っているものは現時点ではありません。いずれも指令の名前のみ指定します。

[16] は理解できない指令を無視するべきです >>9

[20] IANA登録簿は無いようです。

Negotiate: *

[23] * は、起源鯖が任意の遠隔異体選択アルゴリズムを実行して良いことを表します。標準化されていない遠隔異体選択アルゴリズムを使っても構いません。 >>9

[24] 最善の異体である隣接異体を選ぶのに十分な情報があれば、 起源鯖がその異体選択応答を返しても構いません。 >>9

[26] なおによる実行は proxy-rvsa により制限されることがあります。

[25] Negotiate: *trans を暗示します >>9

処理モデル

[21] 透過的折衝可能資源Negotiate: ヘッダーを指定された時の動作は、 透過的折衝可能資源鯖側上書きを参照。

[17] は複数の対応している RVSA の版が指定された時は、 何らかの内部的な決定方法で選ぶべきです >>9

歴史

[2] RFC 2295 (HTTP 透過内容折衝) 8.4 Negotiate

The Negotiate request header can contain directives for any content negotiation process initiated by the request.

  • Negotiate = "Negotiate" ":" 1#negotiate-directive
  •       negotiate-directive = "trans"
                              | "vlist"
                              | "guess-small"
                              | rvsa-version
                              | "*"
                              | negotiate-extension
  • negotiate-extension = token [ "=" token ]

Examples are

  • Negotiate: 1.0, 2.5
  • Negotiate: *

The negotiate directives have the following meaning

"trans"
The user agent supports transparent content negotiation for the current request.
"vlist"
The user agent requests that any transparently negotiated response for the current request includes an Alternates header with the variant list bound to the negotiable resource. Implies "trans".
"guess-small"
The user agent allows origin servers to run a custom algorithm which guesses the best variant for the request, and to return this variant in a choice response, if the resulting choice response is smaller than or not much larger than a list response. The definition of `not much larger' is left to origin server heuristics. Implies "vlist" and "trans".
rvsa-version
The user agent allows origin servers and proxies to run the remote variant selection algorithm with the indicated version number, or with the same major version number and a higher minor version number. If the algorithm has sufficient information to choose a best, neighboring variant, the origin server or proxy MAY return a choice response with this variant. Implies "trans".
"*"
The user agent allows origin servers and proxies to run any remote variant selection algorithm. The origin server may even run algorithms which have not been standardized. If the algorithm has sufficient information to choose a best, neighboring variant, the origin server or proxy MAY return a choice response with this variant. Implies "trans".
"trans"
利用者エージェントは現在の要求透過内容折衝に対応します。
"vlist"
利用者エージェントは現在の要求への透過折衝済み応答折衝可能資源に束縛された変種目録の入った Alternates 頭を含むことを要求します。 trans を暗示します。
"guess-small"
利用者エージェントは起源サーバーがその要求に対する最善の変種を推測する custom 算法を実行し、その変種を選択応答で返すとしたら目録応答より小さいか又はさして大きくならないのであれば、その変種の選択応答を認めます。 「さして大きくない」の定義は起源サーバーの学習に任せます。 vlisttrans を暗示します。
rvsa-version
利用者エージェントは起源サーバー及びが示された版番号又は同じ大版番号で小版番号が示されているもの以上の版の遠隔変種選択算法を実行するのを認めます。 算法が最善の隣接変種を選ぶのに十分な情報を持っていれば、 サーバー又は串はこの変種を選択応答で返しても構いませんtrans を暗示します。
"*"
利用者エージェントは期限サーバー及び串が任意の遠隔変種選択算法を実行することを認めます。起源サーバーは標準化されていない算法を実行しても一向に構いません。 算法が最善の隣接変種を選ぶのに十分な情報を持っていれば、 サーバー又は串はこの変種を選択応答で返しても構いませんtrans を暗示します。

Servers SHOULD ignore all negotiate-directives they do not understand. If the Negotiate header allows a choice between multiple remote variant selection algorithms which are all supported by the server, the server SHOULD use some internal precedence heuristics to select the best algorithm.

RFC 4229

[8] RFC 4229RFC 2295 を出典に状態「実験的」で IANA登録簿に登録しています >>7

関連

[3] auth-schemeNegotiate とは関係ありません。

メモ

[1] 要求に対して内容折衝を行い、1つの表現を返す場合の応答中の Vary 欄の例:

Vary: negotiate, Accept-Language

この例では要求Negotiate 欄と Accept-Language 欄を使って表現を選択したことを表しています。 なお、要求に実際には Negotiate 欄が含まれていなくても、透過内容折衝が行われたことを示すために Vary 欄に Negotiate という値を含めます。

[5] 2.2.3 The WWW-Authorization Request Header ( ( 版)) <http://msdn.microsoft.com/en-us/library/dd358276.aspx>

[6] SharePoint の内部: SharePoint での認証に Kerberos を使用する - TechNet Magazine 2010 年 1 月号 ( ( 版)) <http://technet.microsoft.com/ja-jp/magazine/ee914605.aspx>