/[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 - (hide annotations) (download)
Tue Jun 15 08:04:04 2004 UTC (20 years, 10 months ago) by wakaba
Branch: MAIN
CVS Tags: HEAD
File MIME type: text/plain
New

1 wakaba 1.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