/[suikacvs]/webroot/www/2004/id/draft-ietf-http-digest-aa-02.txt
Suika

Contents of /webroot/www/2004/id/draft-ietf-http-digest-aa-02.txt

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (show annotations) (download)
Tue Jun 15 08:04:04 2004 UTC (19 years, 11 months ago) by wakaba
Branch: MAIN
CVS Tags: HEAD
File MIME type: text/plain
New

1
2 HTTP Working Group Jeffery L. Hostetler
3 INTERNET-DRAFT John Franks
4 <draft-ietf-http-digest-aa-02.txt> Philip Hallam-Baker
5 Ari Luotonen
6 Eric W. Sink
7 Lawrence C. Stewart
8 Expires SIX MONTHS FROM---> December 20, 1995
9
10 A Proposed Extension to HTTP : Digest Access Authentication
11
12 Status of this Memo
13
14 This document is an Internet-Draft. Internet-Drafts are working
15 documents of the Internet Engineering Task Force (IETF), its areas,
16 and its working groups. Note that other groups may also distribute
17 working documents as Internet-Drafts.
18
19 Internet-Drafts are draft documents valid for a maximum of six
20 months and may be updated, replaced, or obsoleted by other
21 documents at any time. It is inappropriate to use Internet-
22 Drafts as reference material or to cite them other than as
23 "work in progress."
24
25 To learn the current status of any Internet-Draft, please check
26 the "1id-abstracts.txt" listing contained in the Internet-
27 Drafts Shadow Directories on ds.internic.net (US East Coast),
28 nic.nordu.net (Europe), ftp.isi.edu (US West Coast), or
29 munnari.oz.au (Pacific Rim).
30
31 Distribution of this document is unlimited. Please send comments
32 to the proposed HTTP working group at <http-wg@cuckoo.hpl.hp.com>.
33 Discussions of the working group are archived at
34 <URL:http://www.ics.uci.edu/pub/ietf/http/>. General discussions
35 about HTTP and the applications which use HTTP should take place
36 on the <www-talk@info.cern.ch> mailing list.
37
38 Abstract
39
40 The protocol referred to as "HTTP/1.0" includes specification
41 for a Basic Access Authentication scheme. This scheme is not
42 considered to be a secure method of user authentication, as the
43 user name and password are passed over the network in an
44 unencrypted form. A specification for a new authentication scheme
45 is needed for future versions of the HTTP protocol. This document
46 provides specification for such a scheme, referred to as "Digest
47 Access Authentication". The encryption method used is the RSA Data
48 Security, Inc. MD5 Message-Digest Algorithm [3].
49
50 Table of Contents
51
52 1. Introduction
53 1.1 Purpose
54 1.2 Overall Operation
55 1.3 Representation of MD5 digest values
56 2. Basic Access Authentication Scheme
57 2.1 Specification
58 2.2 Security protocol negotiation
59 2.3 Example
60 3. Acknowledgments
61 4. References
62 5. Authors Addresses
63
64
65 1. Introduction
66
67 1.1 Purpose
68
69 The protocol referred to as "HTTP/1.0" includes specification
70 for a Basic Access Authentication scheme[1]. This scheme is not
71 considered to be a secure method of user authentication, as the
72 user name and password are passed over the network in an
73 unencrypted form. A specification for a new authentication scheme
74 is needed for future versions of the HTTP protocol. This document
75 provides specification for such a scheme, referred to as "Digest
76 Access Authentication".
77
78 The Digest Access Authentication scheme is not intended to be
79 a complete answer to the need for security in the World Wide Web.
80 This scheme provides no encryption of object content. The intent
81 is simply to facilitate secure access authentication.
82
83 It is proposed that this access authentication scheme be included
84 in the proposed HTTP/1.1 specification.
85
86 1.2 Overall Operation
87
88 Like Basic Access Authentication, the Digest scheme is based on
89 a simple challenge-response paradigm. The Digest scheme challenges
90 using a nonce value. A valid response contains the MD5 checksum of
91 the password and the given nonce value. In this way, the password
92 is never sent in the clear. Just as with the Basic scheme, the
93 username and password must be prearranged in some fashion.
94
95 1.3 Representation of MD5 digest values
96
97 For the purposes of this document, an MD5 digest of 128 bits
98 is represented as 32 ASCII printable characters. The bits
99 in the 128 bit digest are converted from most significant
100 to least significant bit, four bits at a time to their
101 ASCII presentation as follows. Each four bits is
102 represented by its familiar hexadecimal notation from the
103 characters 0123456789abcdef. That is binary 0000 gets
104 represented by the character '0', 0001, by '1', and so on
105 up to the representation of 1111 as 'f'.
106
107 2. Digest Access Authentication Scheme
108
109 2.1 Specification
110
111 The Digest Access Authentication scheme is conceptually similar to the Basic
112 scheme. The formats of the modified WWW-Authenticate header line and the
113 Authorization header line are specified below. In addition, a new header,
114 Digest-MessageDigest, is specified as well.
115
116 Due to formatting constraints, all of the headers are depicted here
117 on multiple lines. In actual usage, they must follow the syntactic
118 rules for HTTP/1.0 header lines [1]. Whitespace between the
119 attribute-value pairs is allowed.
120
121 If a server receives a request for an access-protected object, and an
122 acceptable Authorizatation header is not sent, the server responds with:
123
124 HTTP/1.1 401 Unauthorized
125 WWW-Authenticate: Digest realm="<realm>",
126 domain="<domain>",
127 nonce="<nonce>",
128 opaque="<opaque>",
129 stale="<TRUE | FALSE>"
130
131
132
133 The meanings of the identifers used above are as follows:
134
135 <realm>
136 A name given to users so they know which username and password
137 to send.
138
139 <domain> OPTIONAL
140 A comma separated list of URIs, as specified for HTTP/1.0. The
141 intent is that the client could use this information to know the
142 set of URIs for which the same authentication information should be
143 sent. The URIs in this list may exist on different servers. If
144 this keyword is omitted or empty, the client should assume that
145 the domain consists of all URIs on the responding server.
146
147 <nonce>
148 A server-specified integer value which may be uniquely generated each
149 time a 401 response is made. Servers may defend themselves against
150 replay attacks by refusing to reuse nonce values. The nonce should be
151 considered opqaue by the client.
152
153 <opaque> OPTIONAL
154 A string of data, specified by the server, which should returned by
155 the client unchanged. It is recommended that this string be
156 base64 or hexadecimal data. Specifically, since the string is passed
157 in the header lines as a quoted string, the double-quote character
158 is not allowed.
159
160 <stale> OPTIONAL
161 A flag, indicating that the previous request from the client
162 was rejected because the nonce value was stale. If stale
163 is TRUE, the client may wish to simply retry the request with
164 a new encrypted response, without reprompting the user for a
165 new username and password.
166
167
168 The client is expected to retry the request, passing an Authorization header
169 line as follows:
170
171 Authorization: Digest
172 username="<username>", -- required
173 realm="<realm>", -- required
174 nonce="<nonce>", -- required
175 uri="<requested-uri>", -- required
176 response="<digest>", -- required
177 message="<message-digest>", -- OPTIONAL
178 opaque="<opaque>" -- required if provided by server
179
180 where <digest> := H( H(A1) + ":" + N + ":" + H(A2) )
181 and <message-digest> := H( H(A1) + ":" + N + ":" + H(<message-body>) )
182
183 where:
184
185 A1 := U + ':' + R + ':' + P
186 A2 := <Method> + ':' + <requested-uri>
187
188 with:
189 N -- nonce value
190 U -- username
191 R -- realm
192 P -- password
193 <Method> -- from header line 0
194 <requested-uri> -- uri sans proxy/routing
195
196 When authorization succeeds, the Server may optionally provide the
197 following:
198
199 HTTP/1.1 200 OK
200 Digest-MessageDigest:
201 username="<username>",
202 realm="<realm>",
203 nonce="<nonce>",
204 message="<message-digest>"
205
206 The Digest-MessageDigest header indicates that the server wants to
207 communicate some info regarding the successful
208 authentication (such as a message digest or a
209 receipt of some kind).
210
211 <message-digest> is computed as given above for
212 the client. this allows the client to verify that
213 the message body has not been changed en-route.
214
215 (The server would probably only send this when it
216 has the document and can compute it (like the
217 content-length field); the server would probably
218 not bother generating this header for CGI output.)
219
220
221 Upon receiving the Authorization information, the server may check its
222 validity by looking up its known password which corresponds to the submitted
223 <username>. Then, the server must perform the same MD5 operation performed
224 by the client, and compare the result to the given <response>.
225
226 Note that the HTTP server does not actually need to know the user's
227 clear text password. As long as H(A1) is available to the server, the
228 validity of an Authorization header may be verified.
229
230 All keyword-value pairs must be expressed in characters from the
231 US-ASCII character set, excluding control characters.
232
233 A client may remember the username, password and nonce values, so that
234 future requests within the specified <domain> may include the Authorization
235 line preemptively. The server may choose to accept the old Authorization
236 information, even though the nonce value included might not be fresh.
237 Alternatively, the server could return a 401 response with a new nonce
238 value, causing the client to retry the request. By specifying stale=TRUE
239 with this response, the server hints to the client that the request should
240 be retried with the new nonce, without reprompting the user for a new
241 username and password.
242
243 The <opaque> data is useful for transporting state information around.
244 For example, a server could be responsible for authenticating content
245 which actual sits on another server. The first 401 response would include
246 a <domain> which includes the URI on the second server, and the <opaque>
247 for specifying state information. The client will retry the request, at
248 which time the server may respond with a 301/302 redirection, pointing
249 to the URI on the second server. The client will follow the redirection,
250 and pass the same Authorization line, including the <opaque> data which
251 the second server may require.
252
253 As with the basic scheme, proxies must be completely transparent in
254 the Digest access authentication scheme. That is, they must forward the
255 WWW-Authenticate, Digest-MessageDigest and Authorization headers untouched.
256 If a proxy wants to authenticate a client before a request is forwarded to
257 the server, it can be done using the Proxy-Authenticate and
258 Proxy-Authorization headers.
259
260 2.2 Security Protocol Negotiation
261
262 It is useful for a server to be able to know which security schemes
263 a client is capable of handling. It is recommended that the HTTP extension
264 mechanism proposed by Dave Kristol [2] be used. If the client includes
265 the following header line with the request, then a server can safely assume
266 that the client can handle Digest authentication.
267
268 Extension: Security/Digest
269
270 If this proposal is accepted as a required part of the HTTP/1.1
271 specification, then a server may assume Digest support when a client
272 identifies itself as HTTP/1.1 compliant.
273
274 It is possible that a server may want to require Digest as its
275 authentication method, even if the server does not know that the client
276 supports it. A client is encouraged to fail gracefully if the server
277 specifies any authentication scheme it cannot handle.
278
279 2.3 Example
280
281 The following example assumes that an access-protected document is being
282 requested from the server. The URI of the document is
283 "http://www.nowhere.org/simp/".
284
285 Both client and server know that the username for this document is "eric",
286 and the password is "spyglass".
287
288 The first time the client requests the document, no Authorization header
289 is sent, so the server responds with:
290
291 HTTP/1.1 401 Unauthorized
292 WWW-Authenticate: Digest realm="testrealm",
293 nonce="72540723369",
294 opaque="5ccc069c403ebaf9f0171e9517f40e41"
295
296 The client may prompt the user for the username and password, after which it
297 will respond with a new request, including the following Authorization
298 header:
299
300 Authorization: Digest username="eric",
301 realm="testrealm",
302 nonce="72540723369",
303 uri="/simp/",
304 response="e966c932a9242554e42c8ee200cec7f6",
305 opaque="5ccc069c403ebaf9f0171e9517f40e41"
306
307 3. References
308
309 [1] T. Berners-Lee, R. T. Fielding, H. Frystyk Nielsen.
310 "Hypertext Transfer Protocol -- HTTP/1.0"
311 Internet-Draft (work in progress), UC Irvine,
312 <URL:http://ds.internic.net/internet-drafts/
313 draft-ietf-http-v10-spec-00.txt>, March 1995.
314
315 [2] D. Kristol. "A Proposed Extension Mechanism for HTTP"
316 <URL:http://ds.internic.net/internet-drafts/
317 draft-kristol-http-extensions-00.txt>,
318 December 1994.
319
320 [3] RFC 1321. R.Rivest, "The MD5 Message-Digest Algorithm",
321 <URL:http://ds.internic.net/rfc/rfc1321.txt>,
322 April 1992.
323
324 4. Authors Addresses
325
326 John Franks
327 john@math.nwu.edu
328 Professor of Mathematics
329 Department of Mathematics
330 Northwestern University
331 Evanston, IL 60208-2730, USA
332
333 Phillip M. Hallam-Baker
334 hallam@w3.org
335 European Union Fellow
336 CERN
337 Geneva
338 Switzerland
339
340 Jeffery L. Hostetler
341 jeff@spyglass.com
342 Senior Software Engineer
343 Spyglass, Inc.
344 3200 Farber Drive
345 Champaign, IL 61821, USA
346
347 Ari Luotonen
348 luotonen@netscape.com
349 Member of Technical Staff
350 Netscape Communications Corporation
351 501 East Middlefield Road
352 Mountain View, CA 94043, USA
353
354 Eric W. Sink
355 eric@spyglass.com
356 Senior Software Engineer
357 Spyglass, Inc.
358 3200 Farber Drive
359 Champaign, IL 61821, USA
360
361 Lawrence C. Stewart
362 stewart@OpenMarket.com
363 Open Market, Inc.
364 215 First Street
365 Cambridge, MA 02142, USA
366
367
368 --
369 Eric W. Sink
370 eric@spyglass.com
371

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24