/
431.txt
70 lines (49 loc) · 3.23 KB
/
431.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
* 仕様書
[REFS[
- [15] '''[CITE@en[RFC 2617 - HTTP Authentication: Basic and Digest Access Authentication]] ([TIME[2012-01-09 21:04:30 +09:00]] 版) <http://tools.ietf.org/html/rfc2617#section-1.2>'''
- [16] [CITE@en[RFC 2617 - HTTP Authentication: Basic and Digest Access Authentication]] ([TIME[2012-01-09 21:04:30 +09:00]] 版) <http://tools.ietf.org/html/rfc2617#section-4.6>
- [17] [CITE@en[RFC 7231 - Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content]] ([TIME[2014-08-07 05:54:02 +09:00]] 版) <https://tools.ietf.org/html/rfc7231#section-7.3>
]REFS]
* 構文
[3] [[誰何]]は [CODE(ABNF)@en[[[auth-scheme]]]] と [CODE(ABNF)@en[[[auth-param]]]] で構成されます。
[4] 両者の間は1文字以上の [CODE(ABNF)[[[SP]]]] で分離します。
;; [5] [CODE(ABNF)[[[LWS]]]] ではなく [CODE(ABNF)[[[SP]]]] とされています。
従って[[タブ]]や[[折り畳み]]はできません。
[FIG[
[FIGCAPTION[
[2] [[RFC 1945]] / [[RFC 2068]] における [CODE(ABNF)[[[challenge]]]] の構文
]FIGCAPTION]
[PRE(ABNF code)[
challenge = [[auth-scheme]] 1*[[SP]] [[realm]] *( "," [[auth-param]] )
]PRE]
]FIG]
* 引数
[7] [[誰何]]における[[引数]]は [CODE(ABNF)[[[auth-param]]]] と呼ばれています。
;; [8] ただし [[ABNF]] 構文上 [CODE(HTTP)@en[[[realm]]]] は [CODE(ABNF)@en[[[auth-param]]]]
に含まれないことになっています。
詳しくは [[auth-param]] の項を参照してください。
* 誰何の選択
[11] 1つの[[要求]]の [CODE(HTTP)@en[[[WWW-Authenticate:]]]] 欄には複数の[[誰何]]を含めることができます。
それぞれの[[誰何]]の [[auth-scheme]] は違っていても構いません。
[13] この時[[誰何]]の順は[[鯖]]が使って欲しい順序にするべきです。[[鯖]]はより「安全」
な方法を最初に持ってくるべきです。
[SRC[>>10]]
[12] また[[利用者エージェント]]は提示された[[誰何]]のうち対応している最も「安全」な方法を選択し[['''なければなりません''']]
[SRC[>>16]]
;; [14] [[RFC 2068]] では、[[利用者エージェント]]は、対応しているより最初のものを使うべき、
かつ最も安全な方法を選択するべき [SRC[>>10]]、と2つの矛盾する方針を同時に勧められていました。
[[RFC 2617]] では >>12 だけを要求しており、しかもおすすめではなく、要件になっています。
* authentication challenge
[18] [[RFC 7231]] では次の[[ヘッダー]]が [DFN[[[authentication challenge]]]]
に分類されています [SRC[>>17]]。
[FIG(short list)[
- [CODE(HTTP)@en[[[WWW-Authenticate:]]]]
- [CODE(HTTP)@en[[[Proxy-Authenticate:]]]]
]FIG]
* 歴史
** RFC
[REFS[
- [1] [CITE@en[RFC 1945 - Hypertext Transfer Protocol -- HTTP/1.0]] ([TIME[2012-02-18 23:25:56 +09:00]] 版) <http://tools.ietf.org/html/rfc1945#section-11>
- [9] [CITE@en[RFC 2068 - Hypertext Transfer Protocol -- HTTP/1.1]] ([TIME[2012-02-18 23:30:14 +09:00]] 版) <http://tools.ietf.org/html/rfc2068#section-11>
- [10] [CITE@en[RFC 2068 - Hypertext Transfer Protocol -- HTTP/1.1]] ([TIME[2012-02-18 23:30:14 +09:00]] 版) <http://tools.ietf.org/html/rfc2068#section-15.2>
]REFS]