-
Notifications
You must be signed in to change notification settings - Fork 4
/
188.txt
141 lines (106 loc) · 7.45 KB
/
188.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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
[4] [DFN@en[[CODE(ABNF)@en[[[auth-scheme]]]]]] は、 [[HTTP]] や派生プロトコルにおいて[[認証]]に用いる仕組み、あるいは仕組みを表す[[文字列]]です。
* 仕様書
[REFS[
- [15] '''[CITE@en[RFC 7235 - Hypertext Transfer Protocol (HTTP/1.1): Authentication]] ([TIME[2014-09-11 10:01:28 +09:00]] 版) <https://tools.ietf.org/html/rfc7235#section-2.1>'''
- [17] [CITE@en[RFC 7235 - Hypertext Transfer Protocol (HTTP/1.1): Authentication]] ([TIME[2014-09-11 10:01:28 +09:00]] 版) <https://tools.ietf.org/html/rfc7235#section-5.1>
-- [19] [CITE@en[RFC 7235 - Hypertext Transfer Protocol (HTTP/1.1): Authentication]] ([TIME[2014-09-11 10:01:28 +09:00]] 版) <https://tools.ietf.org/html/rfc7235#section-5.1.2>
- [18] [CITE[Hypertext Transfer Protocol (HTTP) Authentication Scheme Registry]] ([TIME[2014-06-11 22:15:35 +09:00]] 版) <http://www.iana.org/assignments/http-authschemes/http-authschemes.xhtml>
- [22] [CITE@en[RFC 7230 - Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing]] ([TIME[2014-10-20 22:50:36 +09:00]] 版) <https://tools.ietf.org/html/rfc7230#section-2.3>
- [31] [CITE@en[RFC 2326 - Real Time Streaming Protocol (RTSP)]] ([TIME[2014-10-19 05:24:58 +09:00]] 版) <http://tools.ietf.org/html/rfc2326#page-75>
]REFS]
* 構文
[9] [CODE(ABNF)@en[[[auth-scheme]]]] は [[HTTP]] の [CODE(ABNF)@en[[[token]]]] とされています [SRC[>>7, >>11, >>13, >>15]]。
[10] [CODE(HTTP)@en[[[auth-scheme]]]] は[[大文字・小文字不区別]]です [SRC[>>7, >>11, >>13, >>15]]。
[FIG(railroad)[
= [[字句]]
]FIG]
[25] [CODE(ABNF)@en[[[auth-scheme]]]] が使われる [[challenge]] や [[credentials]]
では、 [CODE(ABNF)@en[[[auth-param]]]] の[[リスト]] ([CODE(HTTP)[#]])
または [CODE(ABNF)@en[[[token68]]]] を添えて指定できます。これらは
[[chalenge]] や [[credentials]] における [CODE(ABNF)@en[[[auth-scheme]]]]
依存の追加情報を表しています。
[EG[
[26] 例えば[[基本認証]]の [[challenge]] では[[利用者名]]と[[合言葉]]を指定します。
]EG]
[27] 各 [CODE(ABNF)@en[[[auth-scheme]]]] におけるこれらの値の構文と処理方法については、
それぞれの項および [CODE(ABNF)@en[[[auth-param]]]] を参照してください。
* 文脈
[8] [CODE(ABNF)@en[[[auth-scheme]]]] の値は、 [[HTTP]] の [[challenge]]、
[[credentials]] の中で[[認証]]の方式を表すために使われます。
[5] [CODE(ABNF)@en[[[auth-scheme]]]] の値は、 [[CGI]] の[[メタ変数]]
[CODE(CGI)@en[[[AUTH_TYPE]]]] の値としても使われます。
[28] [[認証方式]]は一般に[[起源鯖]]での認証にも[[串]]での認証にも使えます。
各[[認証方式]]はそれぞれの場面で使えるかを明記する必要がある [SRC[>>19]]
とされています。
[29] [[HTTP]] では[[認証方式]]は特に限定されておらず、
[[IANA登録簿]]に新規に登録もできるようになっています。
[32] [[RTSP]] は [[HTTP]] に定義を委ねていますが、 [CODE(HTTP)@en[[[Basic]]]]
と [CODE(HTTP)@en[[[Digest]]]] の実装を[['''推奨''']]しています [SRC[>>31]]。
[30] [[SIP]] は[[IANA登録簿]]がなかった時代の [[HTTP]] から派生したためか、
そのようには明記されていません。また [CODE(HTTP)@en[[[Digest]]]]
には対応することが求められていますが、 [CODE(HTTP)@en[[[Basic]]]]
の実装は禁止されています。
;; 詳しくはそれぞれの項を参照。
* 処理モデル
[20] [[HTTP認証]]は[RUBYB[状態を持ちません]@en[stateless]]。
[[認証]]に必要な情報は、すべて[[要求]]に含めなければ[['''なりません''']]。 [SRC[>>19]]
[21] [[HTTP接続]]に基いていたり、束縛されていたりする[[認証]]は、
[[HTTP]] の仕様の範囲外とされており、[[認証]]された[[利用者]]以外が当該
[[HTTP接続]]を使えないことを保証できない限り、欠陥を持っています。 [SRC[>>19]]
;; [24] 1つの[[HTTP接続]]で[[要求]]と[[応答]]の組を複数回やり取りできますが、
先の[[要求]]と[[応答]]での[[認証]]の結果を以後の[[要求]]と[[応答]]に
(同じ[[HTTP接続]]を使っているという理由で) 適用してはいけないということです。
[[HTTP]] における [[HTTP接続]]は、[[状態]]を持つ[[プロトコル]]とは違って、
[[要求]]と[[応答]]の組を複数連続的にやり取りするためだけの構文的な存在に過ぎず、
それ以上の意味を持ちません。1つの [[HTTP接続]]で複数の[[要求]]と[[応答]]の組をやり取りするのと、
2つの別の[[HTTP接続]]で[[要求]]と[[応答]]の組をそれぞれ別々にやり取りするのとでは意味が変わってしまうべきではありません。
;; [23] [CODE(HTTP)@en[[[Negotiate]]]] のようにこの原則に反した [CODE(ABNF)@en[[[auth-scheme]]]]
もありますが、[[セキュリティー]]や[[相互運用性]]の問題を抱えている [SRC[>>22]]
と指摘されています。
* 認証方式の一覧
[1]
,[CODE(ABNF)@en[[[auth-scheme]]]],[CODE(ABNF)@en[[[challenge]]]] での使用 ([[要求]]),[CODE(ABNF)@en[[[credentials]]]] での使用 ([[応答]]),出典
,[CODE(HTTP)@en[[[AWS]]]],,○
,[CODE(HTTP)@en[[[AWS4-HMAC-SHA256]]]],○
,[CODE(HTTP)@en[[[Basic]]]],○,○,"[[RFC 1945]], [DEL[[[RFC 2068]]]], [[RFC 2617]]"
,[CODE(HTTP)@en[[[Bearer]]]]
,[CODE(HTTP)@en[[[Digest]]]],○,○,[[RFC 2617]]
,[CODE(HTTP)@en[[[Eap]]]],○,○,[[draft-torvinen-http-eap]]
,[CODE(HTTP)@en[[[GoogleLogin]]]],○,
,[CODE(HTTP)@en[[[GSS]]]],○,×,[[draft-johansson-http-gss]]
,[CODE(HTTP)@en[[[HTML]]]],○,×,[[HTML5]] [r2432-r2470)
,[CODE(HTTP)@en[[[IndieAuth]]]],○
,[CODE(HTTP)@en[[[Kerberos]]]],○
,[CODE(HTTP)@en[[[Mutual]]]]
,[CODE(HTTP)@en[[[Negotiate]]]],○,○,[[RFC 4559]]
,[CODE(HTTP)@en[[[NTLM]]]],○
,[CODE(HTTP)@en[[[OAuth]]]],○,○,[[OAuth]]
,[CODE(HTTP)@en[[[PEM]]]],○
,[CODE(HTTP)@en[[[pgp]]]],○,○,[DEL[[[RFC 2543]]]] ([[RFC 3261]] で[[非推奨]])
,[CODE(HTTP)@en[[[SASL]]]],○,○,[[draft-nystrom-http-sasl]]
,[CODE(HTTP)@en[[[Session]]]],×,○,[[WD-session-id]]
,[CODE(HTTP)@en[[[WSSE]]]],×,○
[2] [[RFC 2617]] 時代までは [[IANA登録簿]]がありませんでしたが、 [[RFC 7235]]
で新設されました (>>18) [SRC[>>15]]。
* 統計
[3] [CITE@en[HTTP/1.1 WWW-Authenticate header]] ([TIME[2009-07-19 11:05:40 +09:00]] 版) <http://www.http-stats.com/WWW-Authenticate>
* 歴史
** 誕生
[REFS[
- [6] [CITE[Request Headers in the HTTP protocol]]
( ([TIME[2001-11-29 11:01:38 +09:00]] 版))
<http://www.w3.org/Protocols/HTTP/HTRQ_Headers.html#z9>
]REFS]
** RFC
[REFS[
- [7] [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>
- [11] [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>
- [12]
[13]
[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>
]REFS]
[14] [CITE@en[draft-stecher-icap-subid-00 - ICAP Extensions]]
( ([TIME[2014-08-31 17:09:58 +09:00]] 版))
<http://tools.ietf.org/html/draft-stecher-icap-subid-00#section-3.4>
* 関連
[16] [CODE(ABNF)@en[[[auth-param]]]] も参照。