/[suikacvs]/webroot/www/2004/id/draft-nielsen-pep-http-00.txt
Suika

Contents of /webroot/www/2004/id/draft-nielsen-pep-http-00.txt

Parent Directory Parent Directory | Revision Log Revision Log


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

1
2
3
4
5
6
7
8 HTTP Working Group PEP H. Frystyk Nielsen, W3C
9 INTERNET DRAFT D. Connolly, W3C
10 <draft-nielsen-pep-http-00> R. Khare, W3C
11 E. Prud'hommeaux, W3C
12 Expires: May 21, 1998 Friday, November 21, 1997
13
14 PEP - an Extension Mechanism for HTTP
15
16
17 Status of this Document
18
19 This document is an Internet-Draft. Internet-Drafts are working
20 documents of the Internet Engineering Task Force (IETF), its areas,
21 and its working groups. Note that other groups may also distribute
22 working documents as Internet-Drafts. Internet-Drafts are draft
23 documents valid for a maximum of six months and may be updated,
24 replaced, or obsoleted by other documents at any time. It is
25 inappropriate to use Internet-Drafts as reference material or to cite
26 them other than as "work in progress".
27
28 To learn the current status of any Internet-Draft, please check the
29 "1id-abstracts.txt" list ing contained in the Internet-Drafts Shadow
30 Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe),
31 munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or
32 ftp.isi.edu (US West Coast). This document is also available as a W3C
33 Working Draft. The most recent release is available at
34 "http://www.w3.org/TR/WD-http-pep". Distribution of this document is
35 unlimited. Please send comments to the HTTP working group at http-
36 wg@cuckoo.hpl.hp.com. Discussions of the working group are archived at
37 "http://www.ics.uci.edu/pub/ietf/http/".
38
39 The contribution of World Wide Web Consortium (W3C) staff time to the
40 HTTP working group is part of the W3C HTTP Activity (see "
41 http://www.w3.org/Protocols/Activity"). The editor maintains
42 background information about PEP at
43 "http://www.w3.org/Protocols/PEP/".
44
45 Note: The PEP specification has gone through a thorough design phase
46 and entered a steady state where the authors do not intend to modify
47 the document any further. At the same time we have developed practical
48 experience with the PEP demo code (available from
49 "http://www.w3.org/Protocols/PEP") which demonstrates both client,
50 server, and proxy interactions using dynamic loaded PEP extensions.
51 However, we believe that it is essential for a specification to be
52 tested in real world applications before being deployed at large,
53 which is the reason for the status of Experimental.
54
55
56 Abstract
57
58 HTTP is used increasingly in applications that need more facilities
59 than the standard version of the protocol provides, ranging from
60 distributed authoring, collaboration, and printing, to various remote
61
62 Frystyk, et al [Page 1]
63
64
65
66
67
68
69 INTERNET DRAFT PEP Friday, November 21, 1997
70
71 procedure call mechanisms. The Protocol Extension Protocol (PEP) is an
72 extension mechanism designed to address the tension between private
73 agreement and public specification and to accommodate extension of
74 applications such as HTTP clients, servers, and proxies. The PEP
75 mechanism is designed to associate each extension with a URI[2], and
76 use a few new RFC 822[1] derived header fields to carry the extension
77 identifier and related information between the parties involved in an
78 extended transaction.
79
80 This document defines PEP and describes the interactions between PEP
81 and HTTP/1.1[7]. PEP is intended to be compatible with HTTP/1.0[5]
82 inasmuch as HTTP/1.1 is compatible with HTTP/1.0 (see [7], section
83 19.7). It is proposed that the PEP extension mechanism be included in
84 future versions of HTTP.
85
86 The PEP extension mechanism may be applicable to other information
87 exchange not mentioned in this document. It is recommended that
88 readers get acquainted with section 1.4 for a suggested reading of
89 this specification and a list of sections specific for HTTP based
90 applications.
91
92
93 Table of Contents
94
95 1. Introduction.....................................................3
96 1.1 Requirements..................................................3
97 1.2 Purpose.......................................................4
98 1.3 Operational Overview..........................................4
99 1.4 Guide to this Specification...................................5
100 2. The PEP Extension Space in HTTP..................................6
101 3. Notational Conventions...........................................7
102 3.1 Bag Syntax....................................................7
103 4. Extension Declarations...........................................8
104 4.1 Mapping Header Fields.........................................8
105 4.2 The Strength of a Declaration.................................9
106 4.3 End-to-End Extension Declarations............................10
107 4.4 Hop-by-Hop Extension Declarations............................10
108 5. Extension Policy Information....................................11
109 5.1 The Realm of a Policy........................................12
110 5.2 Policy Expirations...........................................12
111 5.3 Extra Parameters.............................................12
112 5.4 End-to-End Policies..........................................13
113 5.5 Hop-by-Hop Policies..........................................13
114 6. Publishing an Extension.........................................14
115 7. Binding HTTP Requests...........................................14
116 7.1 Extending Existing HTTP Methods..............................15
117 7.2 Adding New HTTP Methods......................................16
118 8. HTTP Status Codes...............................................16
119 8.1 420 Policy Not Fulfilled.....................................17
120 8.2 421 Bad Mapping..............................................17
121 9. HTTP Proxy Servers..............................................17
122
123 Frystyk, et al [Page 2]
124
125
126
127
128
129
130 INTERNET DRAFT PEP Friday, November 21, 1997
131
132 9.1 Proxy Servers as End-to-End Recipients.......................18
133 9.1.1 Proxy Servers Acting on Behalf of User Agents.............18
134 9.1.2 Proxy Servers Acting on Behalf of Origin Servers..........18
135 9.2 Proxy Servers and Repeated Hop-by-Hop Extensions.............19
136 10. Practical Considerations for HTTP..............................19
137 10.1 Interaction with Existing HTTP/1.1 Methods..................19
138 10.2 Interaction with Existing HTTP/1.1 Headers..................20
139 10.3 Server Initiated Extension Declarations.....................21
140 11. Security Considerations........................................21
141 12. Normative References...........................................21
142 13. Bibliography: Informative References...........................22
143 14. Acknowledgements...............................................23
144 15. Authors Addresses..............................................24
145 16. Summary of PEP Interactions....................................24
146 17. Examples.......................................................26
147 17.1 Client Queries Server for DAV...............................26
148 17.2 Client Informs Server about ZipFlate Compression Extension..26
149 17.3 Server Uses Content-Digest Extension........................27
150 17.4 Server Requires Client to use Payment Extension.............27
151
152 1. Introduction
153
154
155 1.1 Requirements
156
157 HTTP is a generic request-response protocol, designed to accommodate a
158 variety of applications, from network information exchange and
159 searching to file transfer and repository access to query and forms
160 processing.
161
162 Most HTTP transactions are initiated by a user agent issuing a request
163 to be applied to a resource on some origin server, with intermediaries
164 between them in some cases. The origin server replies with a response
165 indicating the result of the transaction.
166
167 Semantically, however, an HTTP transaction is between the principal
168 accessing a resource (end user) and the principal responsible for the
169 publication of a given resource (publisher). The publisher is
170 responsible for the service provided at any particular URI, for
171 example, the mapping between the URI and any representation of the
172 resource to which it refers. The end user accesses information
173 provided by a publisher. Exactly who takes the role as end user or
174 publisher is beyond the scope of this document.
175
176 HTTP, as is the case for most transaction based information exchange
177 protocols, is used increasingly in applications that need more
178 facilities than the standard version of the protocol provides, from
179 distributed authoring, collaboration and printing, to various remote
180 procedure call mechanisms.
181
182
183
184 Frystyk, et al [Page 3]
185
186
187
188
189
190
191 INTERNET DRAFT PEP Friday, November 21, 1997
192
193 Many extended applications do not require agreement across the whole
194 Internet about the extended facilities; rather, it suffices:
195
196 o That conforming peers supporting a particular protocol extension
197 or feature can employ it dynamically with no prior agreement;
198 o That it is possible for one party having a capability for a new
199 protocol to require that the other party either understand and
200 abide by the new protocol or abort the operation;
201 o That negotiation of matching capabilities is possible.
202
203 The need for extensibility creates a tension between dynamically
204 extensible applications and public, static specifications.
205
206
207 1.2 Purpose
208
209 The Protocol Extension Protocol (PEP) is an extension mechanism
210 designed to accommodate dynamic extension of HTTP applications by
211 software components; and to address the tension between private
212 agreement and public specification. The kind of extensions capable of
213 being introduced by PEP range from:
214
215 o extending a single protocol message;
216 o introducing new encodings;
217 o initiating HTTP-derived protocols for new applications; to...
218 o switching to protocols which, once initiated, run independent of
219 the original protocol stack.
220
221 This document defines the protocol extension mechanism referred to as
222 "PEP". The PEP design is the result of analyzing a variety of
223 extensions and extension mechanisms in HTTP and HTTP-like protocols,
224 and the motivation behind them.
225
226 The specification also describes the interactions between PEP and
227 HTTP/1.1[7] including scoping rules and cache semantics. PEP is
228 intended to be compatible with HTTP/1.0[5] inasmuch as HTTP/1.1 is
229 compatible with HTTP/1.0 (see section 1.4 and 10) and it is proposed
230 that the PEP extension mechanism be included in future versions of
231 HTTP.
232
233
234 1.3 Operational Overview
235
236 PEP is intended to be used as follows:
237
238 o Some party designs and specifies an extension; the party assigns
239 the extension an identifier, which is a URI, and makes one or
240 more representations of the extension available at that address
241 (see section 6).
242 o A party using a PEP compliant agent with an implementation of the
243 extension wishes to use it; the agent declares the use of the
244 extension by referencing its URI in a PEP extension declaration
245 (see section 4).
246
247
248 Frystyk, et al [Page 4]
249
250
251
252
253
254
255 INTERNET DRAFT PEP Friday, November 21, 1997
256
257 o Information about extensions can be passed between agents
258 including information of where they can be used and under what
259 conditions (see section 5).
260
261 If an extension becomes ubiquitous, it may be incorporated into a new
262 version of the base protocol, hence transitioning from dynamic
263 extension to static specification. In this case, applications can
264 refer to the new version of the base protocol instead of the PEP
265 extension (see section 6).
266
267 PEP extension declarations are characterized by the following
268 properties:
269
270 o They link features introduced by the extension to the URI
271 identifying the extension, potentially allowing a recipient to
272 interpret the message correctly with no prior agreement.
273 o They contain a strength and a scope allowing the sender to define
274 the appropriate action to be taken by the recipient even if it
275 does not understand the semantics of the extension.
276 o Any agent can generate declarations independent of other agents
277
278 The advantage of including the extension identifier is that, at the
279 cost of some extra bytes to spell out the URI, the use of a central
280 registry of extension names is avoided. PEP can also be used to extend
281 applications to support centrally registered extensions, assuming a
282 URI is published as part of the registration (see section 6).
283
284 The PEP mechanism is designed to accommodate but does not require
285 dynamic extension of clients, servers, and proxies by software
286 components as follows:
287
288 o Clients and servers could be implemented with software component
289 interfaces that allow dynamic installation of extension
290 facilities.
291 o An implementation compatible with a software component interface
292 supported by the agent could be made available at the URI
293 identifying the extension.
294 o An agent receiving a message referring to an extension not known
295 by the agent could dereference the extension's identifier and
296 dynamically load support for the extended facility.
297
298 The representation and implementation of dynamic extensible software
299 component interfaces is outside the scope of this specification.
300
301
302 1.4 Guide to this Specification
303
304 This specification is organized as follows: Section 2 describes how
305 PEP fits into HTTP. This is not required reading but may further the
306 understanding of the specification. Section 3 is an overview of the
307 notational conventions used throughout the specification.
308
309
310
311 Frystyk, et al [Page 5]
312
313
314
315
316
317
318 INTERNET DRAFT PEP Friday, November 21, 1997
319
320 Section 4, 5, and 6 is the core part of the specification describing
321 the generic PEP extension mechanism. Section 7, 8, 9, and 10 describe
322 the interactions between PEP and HTTP/1.1[7].
323
324 The generic PEP extension mechanism may be applicable to other
325 information exchange protocols. Such mappings, however, are outside
326 the scope of this specification.
327
328
329 2. The PEP Extension Space in HTTP
330
331 PEP is designed to support dynamic extensibility of HTTP methods,
332 headers, and status codes. Before describing in detail how PEP does
333 this, it is constructive to have a look at how methods, headers, and
334 status codes behave in HTTP:
335
336 Methods
337 The method token in an HTTP request indicates the method to be
338 performed on the resource identified by the Request-URI. Methods
339 need a priori agreement of semantics and can not be extended
340 dynamically. If an HTTP server does not know a method, it must
341 report an error message (see [7] section 5.1.1). A limitation of
342 the method space is that a request can only contain a single
343 method. Hence, it is not possible to support multiple, simultaneous
344 extensions unless having a multiplicity of methods.
345
346 Status Codes
347 The status code element is a 3-digit integer result code of the
348 attempt to understand and satisfy the request. Status codes are
349 like method tokens in that there can only be a single status code
350 in a response. However, status codes are somewhat easier to extend,
351 as unknown status codes must be treated as the x00 cod-e of that
352 class (see [7] section 6.1.1). For example, a new status code, 223
353 (My New Code) would default to 200 (OK).
354
355 Headers
356 Header fields can be used to pass information about any of the
357 parties involved in the transaction, the transaction itself, or the
358 resource identified by the Request-URI. The advantage of headers is
359 that the header space is relatively open compared to that of
360 methods and status codes. New headers can be introduced and must be
361 ignored if the recipient does not recognize the header without
362 affecting the outcome of the transaction (see [7] section 7.1).
363
364 In order to achieve the desired flexibility, PEP is designed to use
365 the header space for describing extensions and not directly HTTP
366 methods or status codes. Instead, PEP introduces a placeholder in the
367 method space and status code space respectively guaranteeing that all
368 interactions with existing HTTP applications perform according to the
369 PEP specification. The two placeholders are:
370
371
372
373 Frystyk, et al [Page 6]
374
375
376
377
378
379
380 INTERNET DRAFT PEP Friday, November 21, 1997
381
382 o a special PEP method and a PEP- method prefix which indicates
383 that a request contains one or more PEP extensions that must be
384 adhered to or the transaction aborted (see section 7);
385 o a special status code 420 (Policy Not Fulfilled) that indicates
386 that the policy for accessing the resource was not met and that
387 further information can be found in the response for diagnosing
388 the problem (see section 8.1).
389
390 These two placeholders allow for multiple PEP extensions to be
391 deployed simultaneously without overloading the method space or the
392 status code space.
393
394
395 3. Notational Conventions
396
397 This specification uses the same notational conventions and basic
398 parsing constructs as RFC 2068[7]. In particular the BNF constructs
399 "token", "quoted-string", "field-name", "URI", and "delta-seconds" in
400 this document are to be interpreted as described in RFC 2068[7].
401
402 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
403 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
404 document are to be interpreted as described in RFC 2119[9].
405
406 PEP does not rely on particular features defined in URLs [3] that
407 cannot potentially be expressed using URNs (see section 6). Therefore,
408 the more generic term URI[2] is used throughout the specification.
409
410
411 3.1 Bag Syntax
412
413 The bag element is a recursive structure that uses braces ("{" and
414 "}") to delimit attribute-value pairs that may consist of tokens,
415 quoted-strings, URIs and recursively defined bags. The BNF for the bag
416 syntax is as follows:
417
418 bag = "{" bagname *bagitem "}"
419 bagname = token
420 bagitem = bag
421 | token
422 | quoted-string
423
424 The bag semantics are defined by its context and the bag name. The
425 value of a quoted string may be a URI in some cases. Unless explicitly
426 defined otherwise, all tokens within a bag are case-insensitive.
427 Comments as defined by RFC 822[1] indicated by surrounding the comment
428 text with parentheses MUST NOT be used within a bag construct.
429
430
431
432
433
434
435
436 Frystyk, et al [Page 7]
437
438
439
440
441
442
443 INTERNET DRAFT PEP Friday, November 21, 1997
444
445 4. Extension Declarations
446
447 Extension declaration bags are used to indicate the PEP extensions
448 that have been applied to a message. The grammar for an extension
449 declaration is as follows:
450
451 ext-decl = "{" req-ext-attr *opt-ext-attr "}"
452 req-ext-attr = map
453 opt-ext-attr = strength
454 | attribute-ext
455 map = "{" "map" <"> URI <"> #(header-prefix) "}"
456 strength = "{" "strength" ( "must" | "may" ) "}"
457 attribute-ext = bag
458 header-prefix = 1*DIGIT "-"
459
460 The map attribute bag contains the URI identifying the extension and a
461 list of any header field names introduced by the extension (see
462 section 4.1 and 6). If the extension identifier is relative, it is
463 interpreted relative to the base URI of the message as defined by RFC
464 1808[4].
465
466 The strength attribute bag indicates whether the recipient MUST or MAY
467 obey the semantics given by the extension or report an error (see
468 section 4.2).
469
470 An extension declaration bag (ext-decl) can be extended through the
471 use of one or more attribute-ext bags. Unrecognized attribute-ext bags
472 SHOULD be ignored and MUST NOT be removed by proxies when forwarding
473 the extension declaration (see section 9).
474
475 Extension declarations can either be hop-by-hop or end-to-end (see
476 [7], section 13.5.1) depending on the scope of the declaration (see
477 section 4.3 and 4.4). End-to-end declarations MUST be transmitted to
478 the ultimate recipient of the extension declaration. Hop-by-hop
479 declarations are meaningful only for a single transport-level
480 connection.
481
482
483 4.1 Mapping Header Fields
484
485 The header-prefix in a map attribute bag can be used to indicate that
486 all header fields in the message matching the header-prefix value
487 using string prefix-matching are introduced by this extension
488 declaration instance. This allows an extension instance to dynamically
489 reserve a part of the header space in the message for introducing new
490 header fields without risking header name conflicts with other
491 extension instances.
492
493 Examples of header-prefix values are
494
495
496
497
498 Frystyk, et al [Page 8]
499
500
501
502
503
504
505 INTERNET DRAFT PEP Friday, November 21, 1997
506
507 1-, 435-
508 546-
509 2343543645653-
510
511 Agents SHOULD NOT overload well-known or widely deployed header fields
512 with new semantics unless the new semantics are a superset of the
513 existing semantics so that the header fields still can be interpreted
514 according to the old semantics.
515
516 Agents SHOULD NOT reuse already mapped header fields in the same
517 message. If a header field is mapped by multiple extension
518 declarations in the same message, the recipient SHOULD report an error
519 (see section 8.2).
520
521 Proxies adding extension declarations to a message MUST make sure that
522 any header fields introduced do not conflict with already mapped
523 header fields in that protocol message (see section 8.2).
524
525
526 4.2 The Strength of a Declaration
527
528 The strength attribute bag can be used to specify the actions to be
529 taken by the ultimate recipient of the extension declaration. The
530 strength value can indicate that
531
532 1. the recipient MUST obey the extension declaration or report an
533 error; or
534 2. the recipient MAY obey the extension declaration or ignore it
535 altogether.
536
537 If the strength is "must", the ultimate recipient MUST consult and
538 adhere to the rules given by the extension when processing the message
539 or report an error (see section 7 and 8.1).
540
541 If the strength is "may" the ultimate recipient of the extension MAY
542 consult and adhere to the rules given by the extension when processing
543 the message, or ignore the extension declaration completely. An agent
544 may not be able to distinguish whether the ultimate recipient does not
545 understand an extension referred to by an extension declaration of
546 strength "may" or simply ignores the extension declaration.
547
548 If no strength attribute is present, the default strength is "may".
549
550 Not accepting or ignoring an extension declaration is different from
551 not accepting a mapping of header field-names introduced by the map
552 attribute bag. If the ultimate recipient cannot accept a mapping, for
553 example if a field-name is already mapped by another extension
554 declaration in that protocol message, it SHOULD report an error (see
555 section 8.2).
556
557
558
559
560 Frystyk, et al [Page 9]
561
562
563
564
565
566
567 INTERNET DRAFT PEP Friday, November 21, 1997
568
569 4.3 End-to-End Extension Declarations
570
571 End-to-end declarations MUST be transmitted to the ultimate recipient
572 of the declaration. The PEP header field is an end-to-end header field
573 and is defined as follows:
574
575 pep = "PEP" ":" 1#ext-decl
576
577 For example
578
579 GET / HTTP/1.1
580 Host: some.host
581 PEP: {{map "http://www.w3.org/PEP/DAV"}}
582
583 If multiple end-to-end extensions are declared in the same message,
584 the declarations MUST be listed in the order in which they were
585 applied to the message.
586
587 Proxies MAY under certain conditions act as the ultimate recipient of
588 declarations on behalf of user agents and origin servers (see section
589 9.1).
590
591
592 4.4 Hop-by-Hop Extension Declarations
593
594 Hop-by-hop extension declarations are meaningful only for a single
595 transport-level connection. The C-PEP header field is a hop-by-hop
596 header field and MUST NOT be communicated by proxies over further
597 connections. The C-PEP header has the following grammar:
598
599 c-pep = "C-PEP" ":" 1#ext-decl
600
601 For example
602
603 GET / HTTP/1.1
604 Host: some.host
605 C-PEP: {{map "http://www.w3.org/PEP/ProxyAuth" 43-}}
606 43-Credentials: "fsdgfag"
607 Connection: C-PEP, Credentials
608
609 In HTTP, the C-PEP header field MUST be protected by a Connection
610 header by including C-PEP as a Connection header directive. The
611 directive MUST be handled according to the HTTP/1.1 specification of
612 the Connection header (see section 10.2 and [7], section 14.10).
613
614 An agent MUST NOT send the C-PEP header field to an HTTP/1.0 proxy as
615 it does not obey the HTTP/1.1 rules for parsing the Connection header
616 field (see [7], section 19.7.1).
617
618 If multiple hop-by-hop extensions are declared in the same message,
619 the extension declarations MUST be listed in the order in which they
620 were applied. Hop-by-hop C-PEP declarations MUST be processed before
621 any end-to-end PEP declarations.
622
623
624
625 Frystyk, et al [Page 10]
626
627
628
629
630
631
632 INTERNET DRAFT PEP Friday, November 21, 1997
633
634 5. Extension Policy Information
635
636 Extension Policy bags are used to indicate the extensions that may be
637 applied to a message. Extension policies differ from extension
638 declarations in that the latter is information about which extensions
639 have been applied to a message. An extension policy is defined as
640 follows:
641
642 policy-decl = "{" req-pol-attr *opt-pol-attr "}"
643 req-pol-attr = id
644 opt-pol-attr = for
645 | max-age
646 | parameters
647 | strength
648 | attribute-ext
649 id = "{" "id" <"> URI <"> "}"
650 for = "{" "for" #URI-wildcard "}"
651 max-age = "{" "max-age" delta-seconds "}"
652 parameters = "{" "params" *bagitem "}"
653 URI-wildcard = <"> URI <"> [ wildcard ]
654 wildcard = "*"
655
656 The id attribute specifies the URI identifying the extension (see
657 section 6). If the extension identifier is relative, it is interpreted
658 relative to the base URI of the message as defined by RFC 1808[4].
659
660 The for attribute bag specifies which resources, the policy is
661 intended for (see section 5.1) and the max-age attribute bag when the
662 information should be considered stale (see section 5.2). The params
663 attribute bag can be used to pass additional information about the
664 extension policy (see section 5.3).
665
666 The strength attribute indicates whether the policy is a requirement
667 or optional for the resource(s) for which it applies (see section
668 4.2).
669
670 An extension policy bag (policy-decl) can be extended through the use
671 of one or more attribute-ext bags. Unrecognized attribute-ext bags
672 SHOULD be ignored and MUST NOT be removed by proxies when forwarding
673 the extension policy (see section 9).
674
675 Extension policies can either be hop-by-hop or end-to-end policies
676 (see [7], section 13.5.1) depending on the scope (see section 5.4 and
677 5.5). End-to-end policies MUST be transmitted to the ultimate
678 recipient of the extension policy. Hop-by-hop policies are meaningful
679 only for a single transport-level connection.
680
681 Note: It is expected that extension policies will be integrated with
682 other metadata initiatives like the RDF initiative [11], for example.
683
684
685
686 Frystyk, et al [Page 11]
687
688
689
690
691
692
693 INTERNET DRAFT PEP Friday, November 21, 1997
694
695 5.1 The Realm of a Policy
696
697 The for attribute bag can be used to specify the resource(s)
698 identified by URI(s) to which the policy applies. This allows
699 extension policies to be deployed to third party sites and to be
700 distributed by other means than directly between the involved parties.
701 A URI followed by a LWS and a wildcard ("*") represents the set of
702 URIs that contains the given URI using prefix matching. A URI with no
703 wildcard means that URI only.
704
705 Examples of URI-wildcards are
706
707 {for "/" *}
708 {for "http://www.w3.org/pub/" *}
709 {for "secret/Overview.html"}
710
711 An empty for attribute bag (no bagitems included) indicates that the
712 policy is not applied to any resource. If no for attribute bag is
713 present, the default value is the Request-URI.
714
715 A realm can include any number of resources but note that a single
716 wildcard "*" is not a valid URI-wildcard value.
717
718
719 5.2 Policy Expirations
720
721 The max-age attribute bag can be used to specify a date/time after
722 which the recipient SHOULD consider the policy stale. The max-age
723 attribute bag value indicates that the information should no longer be
724 used if the age is greater than the specified time in seconds (see [7]
725 section 13.2.3 for how to calculate the age). A max-age attribute bag
726 cannot be used to force the recipient to discard the policy
727 information; its semantics apply only to the caching mechanism of
728 policy information.
729
730
731 5.3 Extra Parameters
732
733 The params attribute bag can be used to include additional information
734 about the extension or modifiers on the use of the extension. The
735 params values may or may not be case-sensitive, depending on the
736 semantics of the parameter name. The params attribute bag is defined
737 as a generic bag structure, which may be nested. No default parameters
738 are defined.
739
740 Note: PEP implementations should pass any parameters to the module or
741 modules handling the particular extension as this may have impact the
742 use of the extension.
743
744
745
746
747
748
749 Frystyk, et al [Page 12]
750
751
752
753
754
755
756 INTERNET DRAFT PEP Friday, November 21, 1997
757
758 5.4 End-to-End Policies
759
760 End-to-end policies MUST be transmitted to the ultimate recipient of a
761 message. The PEP-Info header field is an end-to-end header and is
762 defines as follows:
763
764 pep-info = "PEP-Info" ":" 1#policy-decl
765
766 For example
767
768 HTTP/1.1 200 OK
769 Content-Type: text/html
770 Content-Length: 412
771 PEP-Info: {{id "http://some.org/payment-extension"}
772 {for "/cgi-bin/buy" *}
773 {strength must}}
774
775 <!doctype html public "-//W3C//DTD HTML 3.2//EN" >
776 <html> ...
777
778 Proxies MAY under certain conditions act as the ultimate recipients of
779 extension policies on behalf of user agents and origin servers (see
780 section 9.1).
781
782
783 5.5 Hop-by-Hop Policies
784
785 Hop-by-hop policies are meaningful only for a single transport-level
786 connection. The C-PEP-Info header field is a hop-by-hop header field
787 and MUST NOT be communicated by proxies over further connections. The
788 C-PEP-Info header has the following grammar:
789
790 c-pep-info = "C-PEP-Info" ":" 1#policy-decl
791
792 For example
793
794 HTTP/1.1 420 Policy Not Fulfilled
795 C-PEP-Info: {{id "http://some.org/provide-stats"}
796 {for "/" *}}
797 Connection: C-PEP-Info
798 ...
799
800 In HTTP, the C-PEP-Info header field MUST be protected by a Connection
801 header by including C-PEP-Info as a Connection header directive. The
802 directive MUST be handled according to the HTTP/1.1 specification of
803 the Connection header (see section 10.2 and [7], section 14.10).
804
805 An agent MUST NOT send the C-PEP-Info header field to an HTTP/1.0
806 proxy as it does not obey the HTTP/1.1 rules for parsing the
807 Connection header field (see [7], section 19.7.1).
808
809
810
811
812
813
814 Frystyk, et al [Page 13]
815
816
817
818
819
820
821 INTERNET DRAFT PEP Friday, November 21, 1997
822
823 6. Publishing an Extension
824
825 While the protocol extension definition should be published at the
826 address of the extension identifier, this is not a requirement of this
827 specification. The only absolute requirement is that distinct names be
828 used for distinct semantics. For example, one way to achieve this is
829 to use a mid, cid, or uuid URI. The association between the extension
830 identifier and the specification might be made by distributing a
831 specification, which references the extension identifier.
832
833 It is strongly recommended that the integrity and persistence of the
834 extension identifier is maintained and kept unquestioned throughout
835 the lifetime of the extension. Care should be taken not to distribute
836 conflicting specifications that reference the same name. Even when a
837 URI is used to publish extension specifications, care must be taken
838 that the specification made available at that address does not change
839 significantly over time. One agent may associate the identifier with
840 the old semantics, and another might associate it with the new
841 semantics.
842
843 The extension definition may be made available in different
844 representations ranging from
845
846 o a human-readable specification defining the extension semantics,
847 o downloadable code which implements the semantics defined by the
848 extension,
849 o a formal interface description provided by the extension, to
850 o a machine-readable specification defining the extension
851 semantics.
852
853 For example, a software component that implements the specification
854 may reside at the same address as a human-readable specification
855 (distinguished by content negotiation). The human-readable
856 representation serves to document the extension and encourage
857 deployment, while the software component allows clients and servers to
858 be dynamically extended.
859
860
861 7. Binding HTTP Requests
862
863 An HTTP request is called a "binding" request if it includes at least
864 one PEP extension declaration of strength "must". An HTTP server MUST
865 NOT return a 2xx status-code without obeying all extension
866 declaration(s) of strength "must" in a binding request. This section
867 describes how the binding request mechanism in PEP interacts with
868 existing HTTP applications.
869
870 In [7], section 7.1, it is stated that "Unrecognized header fields
871 SHOULD be ignored by the recipient and MUST be forwarded by proxies."
872 Hence, using a PEP or a C-PEP extension declaration is not sufficient
873 to evoke the correct behavior from existing HTTP agents in a binding
874 request. However, in [7], section 5.1.1, Method, it is said that
875
876 Frystyk, et al [Page 14]
877
878
879
880
881
882
883 INTERNET DRAFT PEP Friday, November 21, 1997
884
885 "Servers SHOULD return 501 (Not Implemented) if the method is
886 unrecognized or not implemented by the server." A similar statement is
887 made in [5], section 9.5. It is therefore safe to assume that using
888 the method name will produce the correct result from existing HTTP
889 servers and proxies.
890
891 PEP uses the HTTP request method name to extend existing HTTP/1.1
892 methods and to introduce new methods (see section 1.3). In both cases,
893 a binding HTTP request invalidates cached entries as described in [7],
894 section 13.10. Responses to binding requests are not cachable.
895
896
897 7.1 Extending Existing HTTP Methods
898
899 The method name of all HTTP/1.1 requests containing a PEP extension
900 declaration of strength "must" that semantically extends that method
901 MUST be prefixed by "PEP-" (see section 10.1). For example, a client
902 might express the binding rights-management constraints in an HTTP PUT
903 request as follows:
904
905 PEP-PUT /a-resource HTTP/1.1
906 PEP: {{map "http://www.w3.org/PEP/rights-management" 8-}
907 {strength must}}
908 8-copyright: http://www.w3.org/COPYRIGHT.html
909 8-contributions: http://www.w3.org/PATCHES.html
910 Host: www.w3.org
911 Content-Length: 1203
912 Content-Type: text/html
913
914 <!doctype html ...
915
916 The ultimate recipient of a binding HTTP request with the "PEP-"
917 prefix on the method name MUST process the request by performing the
918 following actions in the order they occur:
919
920 1. Identify all extension declarations (both hop-by-hop and end-
921 to-end) of strength "must"; the server MAY ignore declarations
922 of strength "may" without affecting the result of the
923 transaction;
924 2. Evaluate and process the extensions identified in 1) in the
925 order they were declared (see section 4.3 and 4.4) or if the
926 extension declarations do not match the policy for accessing
927 the resource then respond with a 420 (Policy Not Fulfilled)
928 status-code (see section 8.1);
929 3. Strip the "PEP-" prefix from the method name and process the
930 reminder of the request according to the semantics of the
931 existing HTTP/1.1 method name as defined in [7].
932
933 The "PEP-" prefix is reserved by PEP and MUST NOT be used by other
934 HTTP extensions.
935
936
937
938
939 Frystyk, et al [Page 15]
940
941
942
943
944
945
946 INTERNET DRAFT PEP Friday, November 21, 1997
947
948 7.2 Adding New HTTP Methods
949
950 The PEP method can be used for all PEP extension declarations of
951 strength "must" that do not naturally extend existing HTTP/1.1
952 methods. Such methods can be address space manipulation extensions
953 like MOVE and COPY, for example:
954
955 PEP /source.html HTTP/1.1
956 PEP: {{map "http"//www.w3.org/DAV/MOVE" 4-}
957 {strength must}}
958 4-Destination: destination.html
959 Host: some.host
960
961 The PEP method indicates that the semantics of this request are
962 defined by one or more PEP extension declarations of strength "must"
963 included in the request. The PEP method does not have any HTTP message
964 semantics besides being a placeholder for PEP extension declarations
965 and hence all other semantics MUST be defined by the declaration(s)
966 included in the request.
967
968 The ultimate recipient of a PEP request MUST process the request by
969 doing the following:
970
971 1. Identify all extension declarations (both hop-by-hop and end-
972 to-end) of strength "must"; the server MAY ignore declarations
973 of strength "may" without affecting the result of the
974 transaction;
975 2. Evaluate and process the extensions identified in 1) in the
976 order they were declared (see section 4.3 and 4.4) or if the
977 extension declarations do not match the policy for accessing
978 the resource then respond with a 420 (Policy Not Fulfilled)
979 status-code (see section 8.1);
980
981 A successful response SHOULD be 200 (OK) if the response includes an
982 entity, 202 (Accepted) if the action has not yet been enacted, or 204
983 (No Content) if the response is OK but does not include an entity. If
984 no extension declarations have strength "must", the response SHOULD be
985 400 (Bad Request).
986
987 The PEP method is reserved by PEP and MUST NOT be used by other HTTP
988 extensions.
989
990
991 8. HTTP Status Codes
992
993 PEP introduces two new status codes in addition to the ones already
994 defined by HTTP/1.1[7]. Each Status-Code is described below, including
995 a description the metainformation required in the response.
996
997
998
999
1000
1001
1002 Frystyk, et al [Page 16]
1003
1004
1005
1006
1007
1008
1009 INTERNET DRAFT PEP Friday, November 21, 1997
1010
1011 8.1 420 Policy Not Fulfilled
1012
1013 The policy for accessing the resource has not been met in the request.
1014 The response MUST include a PEP-Info or a C-PEP-Info header field
1015 specifying the extensions required by the publishing party for
1016 accessing the resource. The server MAY use the for attribute bag to
1017 indicate whether the policy applies to other resources.
1018
1019 The client MAY repeat the request using the appropriate extension(s).
1020 If the initial request already included the extensions requested in
1021 the 420 response, then the response indicates that access has been
1022 refused for those extension declarations.
1023
1024 If the 420 response contains the same set of extension policies as the
1025 prior response, then the client MAY present any entity included in the
1026 response to the user, since that entity may include relevant
1027 diagnostic information.
1028
1029 Implementers may note the similarity to the way authentication
1030 challenges are issued with the 401 (Unauthorized) status-code (see
1031 [7], section 10.4.2)
1032
1033
1034 8.2 421 Bad Mapping
1035
1036 The mappings indicated by one or more map attribute bags in the
1037 request were not unique and mapped the same header field more than
1038 once. The client MAY repeat the request using a new set of mappings if
1039 it believes that it can find a unique set of header fields for which
1040 the transaction will succeed.
1041
1042
1043 9. HTTP Proxy Servers
1044
1045 This section describes the role of caching and non-caching proxies and
1046 how they interact with PEP extensions. Normally, the ultimate
1047 recipient of an end-to-end extension declaration or an end-to-end
1048 extension policy is an origin server or a user agent.
1049
1050 In this case, a proxy MUST forward all components of the extension,
1051 including declarations, policies, headers, and any methods and status
1052 codes defined by this specification.
1053
1054 In other cases, however, intermediate caching and non-caching proxies
1055 MAY be authorized to act on behalf of origin servers and/or user
1056 agents. How such an agreement is reached between a party representing
1057 the proxy and the party on which behalf it can act, is outside the
1058 scope of PEP, but for example, the parties may be within the same
1059 trust domain.
1060
1061
1062
1063
1064 Frystyk, et al [Page 17]
1065
1066
1067
1068
1069
1070
1071 INTERNET DRAFT PEP Friday, November 21, 1997
1072
1073 9.1 Proxy Servers as End-to-End Recipients
1074
1075
1076 9.1.1 Proxy Servers Acting on Behalf of User Agents
1077
1078 In case a proxy is authorized to act as the ultimate recipient on
1079 behalf of its proxy clients on end-to-end extensions, it MUST obey the
1080 following rules:
1081
1082 o The proxy SHOULD remove the extension declaration(s) and any
1083 header fields that are part of these declaration(s) on which it
1084 can act authoritatively before forwarding the response to the
1085 proxy client;
1086 o it SHOULD issue extension policies for the extensions on which it
1087 can act authoritatively as if it was a user agent;
1088 o if an extension declaration added by an HTTP proxy is of strength
1089 "must", the proxy MUST either prepend the "PEP-" method name
1090 prefix or use the PEP method instead of the method name used in
1091 the proxy client request, before forwarding the response to the
1092 origin server (see section 7.1).
1093
1094 An example of a proxy acting on behalf of one or more user agents is
1095 an elementary school wishing to enforce a certain policy for accessing
1096 information on the Internet. The local school proxy can act
1097 authoritatively as a retrieval filter on behalf of the pupils instead
1098 of having distributed filtering enabled on each of the user agents
1099 using the client.
1100
1101
1102 9.1.2 Proxy Servers Acting on Behalf of Origin Servers
1103
1104 In case a proxy is authorized to act as the ultimate recipient on
1105 behalf of an origin server on end-to-end extensions, it MUST obey the
1106 following rules:
1107
1108 o The proxy SHOULD remove the extension declaration(s) and any
1109 header fields that are part of these declaration(s) on which it
1110 can act authoritatively before forwarding the request to the
1111 origin server;
1112 o it SHOULD issue extension policies for the extensions on which it
1113 can act authoritatively as if it was an origin server;
1114 o if an extension declaration added by an HTTP proxy is of strength
1115 "must" and there are no other extension declarations of strength
1116 "must" in the request, the proxy MUST remove any "PEP-" method
1117 name prefix before forwarding the request to the origin server
1118 (see section 7.1);
1119 o if a request uses the PEP method, the proxy MUST NOT forward the
1120 request to the origin server unless the communication between the
1121 proxy and the origin server can be completed using an existing
1122 HTTP/1.1 method.
1123
1124 An example of a proxy acting on behalf of an origin server is a
1125 corporation having a subscription on an on-line journal. All access to
1126
1127
1128 Frystyk, et al [Page 18]
1129
1130
1131
1132
1133
1134
1135 INTERNET DRAFT PEP Friday, November 21, 1997
1136
1137 the origin server goes through the corporate firewall that runs a
1138 caching proxy server. The organization reports to the publisher of the
1139 journal on a monthly basis at which point the subscription is re-
1140 evaluated. In the day-to-day access, the proxy has the authority to
1141 act authoritatively on behalf of the origin server registering usage
1142 of the journal.
1143
1144
1145 9.2 Proxy Servers and Repeated Hop-by-Hop Extensions
1146
1147 If a PEP extension is to be used on parts of a message path, including
1148 user agents, origin servers, and proxies, not covered by end-to-end or
1149 hop-by-hop extension declarations, it can be defined as a repeated
1150 hop-by-hop extension. This can for example be the case for a proxy
1151 extension applied to a subset of proxies in a message path.
1152
1153 It is for the designer of the extension to decide whether it can
1154 repeat itself on a hop-by-hop basis. In other words, any scope more
1155 complex than a hop-by-hop or an end-to-end scope is a property of the
1156 extension and is transparent to PEP.
1157
1158
1159 10. Practical Considerations for HTTP
1160
1161 This section describes some practical considerations intended for PEP
1162 extended HTTP applications. The issues described may not apply to
1163 other information retrieval protocols.
1164
1165
1166 10.1 Interaction with Existing HTTP/1.1 Methods
1167
1168 Extension designers should consider whether an extension is to work
1169 with existing HTTP/1.1 methods using the "PEP-" method token prefix or
1170 with the PEP method (see section 7.1 and 7.2). This specification does
1171 not provide an absolute rule for when to use the PEP method compared
1172 to the "PEP-" method token prefix except that the "PEP-" method token
1173 prefix is required in situations where intermediate proxies may act
1174 authoritatively on behalf of origin servers or user agents (see
1175 section 9.1.1 and 9.1.2). In case the extension can be used with
1176 existing methods then it should be considered whether the extension
1177 can be used with any of the existing HTTP/1.1 methods or only a subset
1178 of them.
1179
1180 Some HTTP/1.1 methods follow the convention of being "safe" to the
1181 requester meaning that they should never have the significance of
1182 taking an action other than retrieval (see [7], section 9.1). This is
1183 for example the case of the GET and the HEAD method. As PEP extension
1184 declarations of strength "must" explicitly modify or replace the
1185 method name, existing HTTP applications will never be able to mistake
1186 a PEP enabled message for any of the existing HTTP messages indicated
1187 as being safe.
1188
1189
1190 Frystyk, et al [Page 19]
1191
1192
1193
1194
1195
1196
1197 INTERNET DRAFT PEP Friday, November 21, 1997
1198
1199 Some extensions may have the property of "idempotence" in that (aside
1200 from error or expiration issues) the side effects of N > 0 identical
1201 extended requests is the same as for a single extended request. If
1202 this is not the case for a PEP extension then it should consider
1203 whether it wants to 1) disable itself on repeated requests, and/or 2)
1204 inform a user about the behavior of repeating identical requests with
1205 this extension.
1206
1207
1208 10.2 Interaction with Existing HTTP/1.1 Headers
1209
1210 Designers of extensions to be used within the HTTP messaging model
1211 should consider the interaction with existing HTTP/1.1 headers.
1212 Especially, it should be noted that PEP is designed to be compatible
1213 with HTTP/1.0[5] inasmuch as HTTP/1.1 is compatible with HTTP/1.0 (see
1214 [7], section 19.7).
1215
1216 The Connection header as described in [7], section 14.10, allows the
1217 sender to specify options that are desired for that particular
1218 transport connection only. All PEP hop-by-hop extension declarations
1219 and policies along with any header fields introduced by extension
1220 declarations MUST be included as Connection header directives. PEP
1221 applications MUST NOT send any hop-by-hop extension declarations or
1222 policies to HTTP/1.0 proxies as they do not obey the rules of HTTP/1.1
1223 for parsing the Connection header field (see also [7], section
1224 19.7.1).
1225
1226 The Upgrade header, [7], section 14.41, allows the client to specify
1227 what additional communication protocols it supports and would like to
1228 use if the server finds it appropriate to switch protocols. PEP
1229 provides the same functionality but without the need for a central
1230 registry of protocol names. PEP compliant agents MAY use the 101
1231 (Switching Protocols) status code to switch to HTTP-based protocols
1232 and protocols, which once initiated, run completely independently of
1233 HTTP.
1234
1235 The content coding values in the Content-Encoding header as described
1236 in [7], section 14.12, indicate an encoding transformation that has
1237 been applied to an entity. PEP provides the same functionality but
1238 without the need for a central registry of content codings. As both
1239 content codings and PEP extension declarations are ordered, using both
1240 may lead to ambiguous situations. Simultaneous use of both mechanisms
1241 is therefore strongly discouraged.
1242
1243 An origin server can explicitly prevent intermediaries from applying a
1244 Content-Encoding to a resource by using the no-transform Cache-Control
1245 directive (see [7], section 14.9.4).
1246
1247
1248
1249
1250
1251 Frystyk, et al [Page 20]
1252
1253
1254
1255
1256
1257
1258 INTERNET DRAFT PEP Friday, November 21, 1997
1259
1260 10.3 Server Initiated Extension Declarations
1261
1262 PEP extension declarations can be generated by servers as well as
1263 clients. If a PEP compliant server sends a response with an extension
1264 declaration referring to an extension that modifies the message in
1265 such a way that the message can not be decoded without using the
1266 extension, and the corresponding request was either
1267
1268 1. received from a client whose version is lower than HTTP/1.1, or
1269 2. received with a Via header field indicating that it was
1270 forwarded by a proxy whose version is lower than HTTP/1.1,
1271
1272 and the response does not already include an Expires header, then the
1273 sender SHOULD include an Expires header field whose field-value is
1274 identical to the field-value of its Date header field(see [7], section
1275 14.12). If all agents in the message path are HTTP/1.1, then the
1276 sender SHOULD use the Cache-Control header field instead of the
1277 Expires header field to mark the entity uncachable.
1278
1279
1280 11. Security Considerations
1281
1282 o The for parameter allows one party to give information about the
1283 extensions used by another party's resources. The parties may
1284 provide resources on different servers, or at different addresses
1285 on the same server. While distinguishing between the parties
1286 responsible for different resources at the same server may be
1287 infeasible, clients SHOULD ignore information given by one server
1288 about another unless they have reason to trust it, or reason to
1289 believe that trusting it will have no significant negative
1290 consequences.
1291 o Dynamic installation of extension facilities as described in the
1292 introduction involves software written by one party (the provider
1293 of the implementation) to be executed under the authority of
1294 another (the party operating the host software). This opens the
1295 host party to a variety of "Trojan horse" attacks by the
1296 provider, or a malicious third party that forges implementations
1297 under a provider's name. See, for example RFC2046[6], section
1298 4.5.2 for a discussion of these risks.
1299
1300 12. Normative References
1301
1302 [1] D. H. Crocker. "Standard for the Format of ARPA Internet Text
1303 Messages", STD 11, RFC 822, UDEL, August 1982
1304 [2] T. Berners-Lee, "Universal Resource Identifiers in WWW. A
1305 Unifying Syntax for the Expression of Names and Addresses of
1306 Objects on the Network as used in the World-Wide Web", RFC 1630,
1307 CERN, June 1994.
1308 [3] T. Berners-Lee, L. Masinter, M. McCahill. "Uniform Resource
1309 Locators (URL)" RFC 1738, CERN, Xerox PARC, University of
1310 Minnesota, December 1994.
1311 [4] R. Fielding, "Relative Uniform Resource Locators", RFC 1808, UC
1312 Irvine, June 1995.
1313
1314 Frystyk, et al [Page 21]
1315
1316
1317
1318
1319
1320
1321 INTERNET DRAFT PEP Friday, November 21, 1997
1322
1323 [5] T. Berners-Lee, R. Fielding, H. Frystyk, "Hypertext Transfer
1324 Protocol -- HTTP/1.0", RFC 1945, W3C/MIT, UC Irvine, W3C/MIT, May
1325 1996.
1326 [6] N. Freed, N. Borenstein, "Multipurpose Internet Mail Extensions
1327 (MIME) Part Two: Media Types", RFC 2046, Innosoft, First Virtual,
1328 November 1996.
1329 [7] R. Fielding, J. Gettys, J. C. Mogul, H. Frystyk, T. Berners-Lee,
1330 "Hypertext Transfer Protocol -- HTTP/1.1", RFC 2068, U.C. Irvine,
1331 DEC W3C/MIT, DEC, W3C/MIT, W3C/MIT, January 1997
1332 [8] D. Kristol, L. Montulli, "HTTP State Management Mechanism", RFC
1333 2109, Bell Laboratories Lucent Technologies, Netscape
1334 Communications, February 1997
1335 [9] S. Bradner, "Key words for use in RFCs to Indicate Requirement
1336 Levels", RFC 2119, Harvard University, March 1997
1337 [10] J. C. Mogul, R. Fielding, J. Gettys, H. Frystyk, "Use and
1338 interpretation of HTTP version numbers", Internet Draft RFC 2145,
1339 DEC, U.C. Irvine, DEC W3C/MIT, W3C/MIT, HTTP Working Group, May,
1340 1997.
1341 [11] O. Lassila, R. Swick, "Resource Description Framework (RDF) -
1342 Model and Syntax", W3C/Nokia, W3C, W3C Working draft, October
1343 1997. This is work in progress
1344 [12] H. Schulzrinne, A. Rao, R. Lanphier, "Real Time Streaming
1345 Protocol (RTSP)", Internet Draft draft-ietf-mmusic-rtsp-05,
1346 Columbia U./Netscape/Progressive Networks, March 1997. This is
1347 work in progress
1348 [13] T. Berners-Lee, R. Fielding, L. Masinter, "Uniform Resource
1349 Locators (URL)", Internet Draft draft-fielding-url-syntax-09,
1350 W3C/MIT, U.C. Irvine, Xerox Corporation, May 1997. This is work
1351 in progress
1352
1353 13. Bibliography: Informative References
1354
1355 [14] D. Eastlake, "Universal Payment Preamble", Internet Draft draft-
1356 eastlake-universal-payment-03, CyberCash, March 1996. This is
1357 work in progress.
1358 [15] D. M. Kristol, "A Proposed Extension Mechanism for HTTP",
1359 Internet Draft draft-kristokl-http-extensions-00, January 1995.
1360 Document expired.
1361 [16] JEPI, "Selecting Payment Mechanisms Over HTTP", Internet Draft
1362 draft-khare-jepi-uppflow-00, W3C, August 1996. Document expired.
1363 [17] J. Miller et al, "PICS Label Syntax and Communication Protocols
1364 (Version 1.1)", W3C Recommendation REC-PICS-labels, W3C, 31
1365 October 1996
1366 [18] Y. Goland et al, "Extensions for Distributed Authoring and
1367 Versioning", Internet Draft, draft-jensen-webdav-ext-01, 26 March
1368 1997. This is work in progress.
1369 [19] N. Borenstein, "A User Agent Configuration Mechanism For
1370 Multimedia Mail Format Information", RFC 1524 pp. 12, Bellcore,
1371 September 1993.
1372
1373
1374
1375 Frystyk, et al [Page 22]
1376
1377
1378
1379
1380
1381
1382 INTERNET DRAFT PEP Friday, November 21, 1997
1383
1384 [20] J. Klensin, N. Freed, M. Rose, E. Stefferud, and D. Crocker.
1385 "SMTP Service Extensions", RFC 1869, MCI, Innosoft, Dover Beach
1386 Consulting, Network Management Associates, Brandenburg
1387 Consulting, November 1995.
1388 [21] D. Robinson, "The WWW Common Gateway Interface Version 1.1",
1389 Internet Draft draft-robinson-www-interface-01, February 1996.
1390 Document expired.
1391 [22] A. Baird-Smith, "Jigsaw: An object oriented server", W3C Note,
1392 June 1996
1393 [23] H. Frystyk, "Libwww Architecture", December 1996
1394 [24] R. Thau, "Design considerations for the Apache Server API", Fifth
1395 International World Wide Web Conference, May 6-10, 1996, Paris,
1396 France
1397 [25] Netscape Corporation, "The Netscape Server API"
1398 [26] Microsoft Corporation, "Internet Server API Documentation"
1399 [27] Open Market, Inc, "FastCGI - Restoring All CGI's Good Properties
1400 -- and Then Some"
1401 [28] Spyglass, "Spyglass MicroServer Application Development
1402 Interface"
1403 [29] J. Franks, "WN - a Server for the HTTP"
1404 [30] Roxen, "Introduction to Roxen Challenger"
1405
1406 14. Acknowledgements
1407
1408 The PEP protocol is the product of a substantial amount of
1409 investigation and collaboration. Dave Kristol did some of the first
1410 writing on HTTP extension mechanisms[15]. Jim Miller and Dave Raggett
1411 sketched out an initial design, which Rohit Khare wrote up in a number
1412 of drafts. Tim Berners-Lee, Anselm Baird-Smith, Paul Leach and Daniel
1413 Dardailler deserve special recognition for their efforts in commenting
1414 in the design phase of the protocol. Also thanks to Henning
1415 Schulzrinne, Anup Rao and Robert Lanphier for pointing out the
1416 generalities of PEP and providing support for integration with
1417 RTSP[12].
1418
1419 This specification is a direct reflection of some implementation work:
1420 a client implementation in [23] (see the HTPEP module) and a server
1421 implementation by Eui-Suk Chung and Anit Chakraborty for the JEPI
1422 project.
1423
1424 This document has benefited greatly from the comments of all those
1425 participating in the HTTP-WG. In addition to those already mentioned,
1426 the following individuals have contributed to this specification:
1427
1428 o Eui-Suk Chung,
1429 o Don Eastlake,
1430 o Roy Fielding,
1431 o Jim Gettys,
1432 o Yaron Goland,
1433 o Phill Hallam-Baker,
1434
1435
1436 Frystyk, et al [Page 23]
1437
1438
1439
1440
1441
1442
1443 INTERNET DRAFT PEP Friday, November 21, 1997
1444
1445 o Paul Hoffman,
1446 o Koen Holtman,
1447 o Ora Lassila,
1448 o Larry Masinter, and
1449 o Jim Whitehead
1450
1451 15. Authors Addresses
1452
1453 Dan Connolly
1454 Architecture Domain Lead, World Wide Web Consortium
1455 MIT Laboratory for Computer Science
1456 545 Technology Square
1457 Cambridge, MA 02139, U.S.A.
1458 Email: connolly@w3.org
1459
1460 Rohit Khare
1461 Technical Staff, World Wide Web Consortium
1462 MIT Laboratory for Computer Science
1463 545 Technology Square
1464 Cambridge, MA 02139, U.S.A.
1465 Email: khare@w3.org
1466
1467 Henrik Frystyk Nielsen
1468 Technical Staff, World Wide Web Consortium
1469 MIT Laboratory for Computer Science
1470 545 Technology Square
1471 Cambridge, MA 02139, U.S.A.
1472 Email: frystyk@w3.org
1473
1474 Eric Prud'hommeaux
1475 Contractor, World Wide Web Consortium
1476 MIT Laboratory for Computer Science
1477 545 Technology Square
1478 Cambridge, MA 02139, U.S.A.
1479 Email: eric@w3.org
1480
1481
1482 Appendices
1483
1484
1485 16. Summary of PEP Interactions
1486
1487 The following tables summarize the outcome of strength and scope rules
1488 in PEP transactions involving PEP compliant and non-PEP compliant HTTP
1489 proxies and origin servers. The summary is intended as a guide and
1490 index to the text, but is necessarily cryptic and incomplete. This
1491 summary should never be used or referenced separately from the
1492 complete PEP specification. The tables should be read as follows
1493
1494 Standard processing
1495
1496
1497
1498 Frystyk, et al [Page 24]
1499
1500
1501
1502
1503
1504
1505 INTERNET DRAFT PEP Friday, November 21, 1997
1506
1507 The action taken by an ultimate recipient not understanding or
1508 ignoring the extension (see section 4.2)
1509
1510 Extended processing
1511 The action taken by an ultimate recipient understanding and obeying
1512 the extension (see section 4.2)
1513
1514 Forward extension
1515 The action taken by an intermediate party which is not an ultimate
1516 recipient (see section 9)
1517
1518 Strip extension
1519 The action taken by an intermediate party which is the ultimate
1520 recipient (see section 9)
1521
1522 420 (Policy Not Fulfilled)
1523 The response from an ultimate recipient not understanding or not
1524 wishing to obey the extension (see section 8.1)
1525
1526 501 (Not Implemented)
1527 The response from an ultimate recipient not understanding the "PEP"
1528 method or "PEP-" method token prefix (see section 6)
1529
1530 Table 1: Origin Server
1531
1532 Scope Hop-by-hop End-to-end
1533
1534 Strength Optional Required Optional Required
1535 (may) (must) (may) (must)
1536
1537 PEP not Standard 501 (Not Standard 501 (Not
1538 supported processing Implemented)processing Implemented)
1539
1540 Extension notStandard 420 (Policy Standard 420 (Policy
1541 supported processing Not processing Not
1542 Fulfilled) Fulfilled)
1543
1544 Extension Extended Extended Extended Extended
1545 supported processing processing processing processing
1546
1547
1548 Table 2: Proxy Server
1549
1550 Scope Hop-by-hop End-to-end
1551
1552 Strength Optional Required Optional Required
1553 (may) (must) (may) (must)
1554
1555 PEP not Strip 501 (Not Forward 501 (Not
1556 supported extension Implemented)extension Implemented)
1557
1558 Extension notStrip 420 (Policy Forward Forward
1559 supported extension Not extension extension
1560 Fulfilled)
1561
1562 Extension Extended Extended Extended Extended
1563 supported processing processing processing processing
1564
1565
1566 Frystyk, et al [Page 25]
1567
1568
1569
1570
1571
1572
1573 INTERNET DRAFT PEP Friday, November 21, 1997
1574
1575 and strip and strip and strip and strip
1576
1577
1578
1579
1580 17. Examples
1581
1582 The following examples show various scenarios using PEP in HTTP/1.1
1583 requests and responses. Information not essential for illustrating the
1584 examples is left out (referred to as "…")
1585
1586
1587 17.1 Client Queries Server for DAV
1588
1589 In this example, the purpose of using PEP in the request is to
1590 determine whether a server understands and supports the Distributed
1591 Authoring and Versioning (DAV) protocol extension [18]. By making the
1592 request binding (see section 7), the client forces the server to
1593 process the extension declaration and obey the extension or report an
1594 error.
1595
1596 PEP-GET /some.url HTTP/1.1
1597 Host: some.host
1598 PEP: {{map "http://www.w3.org/PEP/DAV"}}
1599
1600 HTTP/1.1 200 OK
1601 PEP-Info: {{id "http://www.w3.org/PEP/DAV"} {for "/Henrik" *}}
1602 ...
1603
1604 The response shows that the server does understand DAV and that the
1605 client can use it on all resources matching the prefix "/Henrik" on
1606 that server. The policy is informational and other factors like access
1607 control may prevent the client from actually using DAV on any of these
1608 resources.
1609
1610 PEP does not distinguish between querying about or using an extension
1611 - the PEP declaration is identical. Whether it in fact is a query may
1612 depend on the request method name and request modifiers.
1613
1614
1615 17.2 Client Informs Server about ZipFlate Compression Extension
1616
1617 This example shows a client informing a server that it is capable of
1618 handling the zipflate compression extension in a response. By issuing
1619 an extension policy instead of an extension declaration, the client
1620 indicates that the extension is not used in the request.
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630 Frystyk, et al [Page 26]
1631
1632
1633
1634
1635
1636
1637 INTERNET DRAFT PEP Friday, November 21, 1997
1638
1639 GET /Index HTTP/1.1
1640 Host: some.host
1641 PEP-Info: {{id "http://www.w3.org/PEP/Encoding"}}
1642
1643 HTTP/1.1 200 OK
1644 PEP: {{map "http://www.w3.org/PEP/Encoding"}}
1645 Cache-Control: no-transform
1646 Vary: *
1647 ...
1648
1649 The response shows that the server knows the extension and decides to
1650 use it in the response. It furthermore includes the no-transform
1651 cache-control directive in order to avoid that proxies add their own
1652 content-coding to the message (see section 10.2) and a Vary header
1653 field indicating that a cache may not use the response to reply to a
1654 subsequent request without revalidation.
1655
1656 In this example, the client could have used an extension declaration
1657 of strength "may" instead of an extension policy to achieve the same
1658 effect. The request would not have been affected as the compression
1659 applies to message bodies and not headers. If the request were to
1660 include a message body, however, the difference would be whether the
1661 zipflate extension was applied to that body or not.
1662
1663
1664 17.3 Server Uses Content-Digest Extension
1665
1666 This example shows a server applying the Content-Digest extension to a
1667 response message indicating that the client may ignore it. The client
1668 has not indicated whether it supports the extension or even if it
1669 supports PEP.
1670
1671 GET /Index HTTP/1.1
1672 Host: some.host
1673
1674 HTTP/1.1 200 OK
1675 PEP: {{map "http://www.w3.org/PEP/Digest" 4-}}
1676 4-Content-Digest: "a0b1c2d3e4f5g6h7i8j9"
1677 Cache-Control: max-age=3600
1678 ...
1679
1680 The response is fully cachable and does not require revalidation when
1681 replying to subsequent requests.
1682
1683
1684 17.4 Server Requires Client to use Payment Extension
1685
1686 The last example shows how a server requires a client to use a micro-
1687 payment extension in order to access a resource causing an additional
1688 roundtrip using the 420 (Policy Not Fulfilled) status code (see
1689 section 8.1). The first request does not contain any PEP constructs
1690 leading to the error message. A non-PEP compliant client will treat
1691 this as a 400 (Bad Request) status code and will not be able to
1692
1693 Frystyk, et al [Page 27]
1694
1695
1696
1697
1698
1699
1700 INTERNET DRAFT PEP Friday, November 21, 1997
1701
1702 fulfill the server's requirement in a second request (see [7], section
1703 10.4.1)
1704
1705 GET /Index HTTP/1.1
1706 Host: some.host
1707
1708 420 Policy Not Fulfilled
1709 PEP-Info: {{id "http://www.w3.org/PEP/MiniPayment"}
1710 {params {Price 0.02USD}} {strength must}}
1711
1712 PEP-GET /Index HTTP/1.1
1713 Host: some.host
1714 PEP: {{map "http://www.w3.org/PEP/MiniPayment" 12-}
1715 {strength must}}
1716 12-Price: 0.02USD
1717
1718 HTTP/1.1 200 OK
1719 ...
1720
1721 The actual price is passed as an extra parameter in the extension
1722 policy. The client agrees to the price and issues a new request
1723 containing the proper extension declaration. If it did not agree with
1724 the price, it could have tried a lower price and depending on the
1725 policy of that resource, the server may have responded positively.
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754 Frystyk, et al [Page 28]

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24