-
Notifications
You must be signed in to change notification settings - Fork 4
/
188.txt
199 lines (151 loc) · 10.3 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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
[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]]]]
の実装は禁止されています。旧版では [CODE(HTTP)@en[[[pgp]]]]
が定義されていましたが、後に削除されています。
[37] [[MSRP]] は [CODE(HTTP)@en[[[Digest]]]] のみ認めています。
;; 詳しくはそれぞれの項を参照。
* 処理モデル
[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[[[AdobeAuth]]]],○
,[CODE(HTTP)@en[[[anon]]]],○,○
,[CODE(HTTP)@en[[[ApiKey]]]],,○
,[CODE(HTTP)@en[[[Atom]]]],○,○
,[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[[[CredSSP]]]],○,○
,[CODE(HTTP)@en[[[DelegatedToken]]]],○
,[CODE(HTTP)@en[[[Digest]]]],○,○,[[RFC 2617]]
,[CODE(HTTP)@en[[[Eap]]]],○,○,[[draft-torvinen-http-eap]]
,[CODE(HTTP)@en[[[GOOG1]]]],,○
,[CODE(HTTP)@en[[[GoogleLogin]]]],○,
,[CODE(HTTP)@en[[[GSS]]]],○,×,[[draft-johansson-http-gss]]
,[CODE(HTTP)@en[[[HOBA]]]],○,○
,[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[[[Remote-Passphrase]]]],○,○
,[CODE(HTTP)@en[[[SASL]]]],○,○,[[draft-nystrom-http-sasl]]
,[CODE(HTTP)@en[[[Session]]]],×,○,[[WD-session-id]]
,[CODE(HTTP)@en[[[SharedKey]]]],,○
,[CODE(HTTP)@en[[[SharedKeyLite]]]],,○
,[CODE(HTTP)@en[[[SharedAccessSignature]]]],,○
,[CODE(HTTP)@en[[[Token]]]],,○
,[CODE(HTTP)@en[[[WRAP]]]],○,○
,[CODE(HTTP)@en[[[WSSE]]]],×,○
[2] [[RFC 2617]] 時代までは [[IANA登録簿]]がありませんでしたが、 [[RFC 7235]]
で新設されました (>>18) [SRC[>>15]]。
[39] [[JSON]] 形式の [CODE(ABNF)@en[[[auth-scheme]]]] および
[CODE(ABNF)@en[[[auth-param]]]] の一覧が >>40 にあります。
[REFS[
- [40] [CITE@en[data-web-defs/headers.txt at master · manakai/data-web-defs]] ([TIME[2014-10-22 15:33:28 +09:00]] 版) <https://github.com/manakai/data-web-defs/blob/master/doc/headers.txt>
]REFS]
* OAuth 2.0 認証方式
[41] [[OAuth 2.0]] では、[[要求]]における[[アクセストークン]]の送信や[[応答]]における[[認証]]エラーの通知に、
専用または兼用の [[HTTP認証]]方式を使うことができるとしています。そのような[[認証方式]]に対して若干の制約も課しています。
[[アクセストークン型]]と[[認証方式]]名は揃えることが推奨されています。
;; [[資源鯖]]、[[アクセストークン型]]を参照。
* 統計
[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 第1世代
[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>
]REFS]
** RFC 第2世代
[REFS[
- [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>
]REFS]
** RFC 第3世代
[REFS[
- [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>
[36] >>35 は類似した一連の[[認証方式]]について [CODE(HTTP)@en[[[RA-]]]]
から始まる [CODE(ABNF)@en[[[auth-scheme]]]] の命名規則を提案していました。
また >>38 は [CODE(HTTP)@en[[[SCRAM-]]]] から始まる命名規則を提案していました。
しかしいずれも支持を集められなかったようです。
[REFS[
- [35] [CITE@en[draft-williams-http-rest-auth-03 - RESTful Authentication Pattern for the Hypertext Transport Protocol (HTTP)]] ([TIME[2014-10-16 16:09:13 +09:00]] 版) <http://tools.ietf.org/html/draft-williams-http-rest-auth-03>
- [38] [CITE@en[draft-melnikov-httpbis-scram-auth-00 - Salted Challenge Response (SCRAM) HTTP Authentication Mechanism]] ([TIME[2014-10-17 08:44:16 +09:00]] 版) <https://tools.ietf.org/html/draft-melnikov-httpbis-scram-auth-00>
]REFS]
** RFC 第4世代
[REFS[
- [34] '''[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>'''
- [33] [CITE@en[RFC 7236 - Initial Hypertext Transfer Protocol (HTTP) Authentication Scheme Registrations]] ([TIME[2014-09-10 00:40:16 +09:00]] 版) <https://tools.ietf.org/html/rfc7236>
]REFS]
* 関連
[16] [CODE(ABNF)@en[[[auth-param]]]] も参照。