draft-ietf-atompub-protocol-00.txt | draft-ietf-atompub-protocol-01.txt | |||
---|---|---|---|---|
Network Working Group J. Gregorio, Ed. | Network Working Group J. Gregorio, Ed. | |||
Internet-Draft BitWorking, Inc | Internet-Draft BitWorking, Inc | |||
Expires: December 30, 2004 R. Sayre, Ed. | Expires: January 17, 2005 R. Sayre, Ed. | |||
Boswijck Memex Consulting | Boswijck Memex Consulting | |||
July 1, 2004 | July 19, 2004 | |||
The Atom Publishing Protocol | The Atom Publishing Protocol | |||
draft-ietf-atompub-protocol-00.txt | draft-ietf-atompub-protocol-01.txt | |||
Status of this Memo | Status of this Memo | |||
By submitting this Internet-Draft, I certify that any applicable | By submitting this Internet-Draft, I certify that any applicable | |||
patent or other IPR claims of which I am aware have been disclosed, | patent or other IPR claims of which I am aware have been disclosed, | |||
and any of which I become aware will be disclosed, in accordance with | and any of which I become aware will be disclosed, in accordance with | |||
RFC 3668. | RFC 3668. | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF), its areas, and its working groups. Note that | Task Force (IETF), its areas, and its working groups. Note that | |||
skipping to change at page 1, line 35 | skipping to change at page 1, line 35 | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
The list of current Internet-Drafts can be accessed at | The list of current Internet-Drafts can be accessed at | |||
http://www.ietf.org/ietf/1id-abstracts.txt. | http://www.ietf.org/ietf/1id-abstracts.txt. | |||
The list of Internet-Draft Shadow Directories can be accessed at | The list of Internet-Draft Shadow Directories can be accessed at | |||
http://www.ietf.org/shadow.html. | http://www.ietf.org/shadow.html. | |||
This Internet-Draft will expire on December 30, 2004. | This Internet-Draft will expire on January 17, 2005. | |||
Copyright Notice | Copyright Notice | |||
Copyright (C) The Internet Society (2004). All Rights Reserved. | Copyright (C) The Internet Society (2004). All Rights Reserved. | |||
Abstract | Abstract | |||
This memo presents a protocol for using XML (Extensible Markup | This memo presents a protocol for using XML (Extensible Markup | |||
Language) and HTTP (HyperText Transport Protocol) to edit content. | Language) and HTTP (HyperText Transport Protocol) to edit content. | |||
The Atom Publishing Protocol is an application-level protocol for | The Atom Publishing Protocol is an application-level protocol for | |||
publishing and editing Web resources belonging to periodically | publishing and editing Web resources belonging to periodically | |||
updated websites. The protocol at its core is the HTTP transport of | updated websites. The protocol at its core is the HTTP transport of | |||
Atom-formatted representations. The Atom format is documented in the | Atom-formatted representations. The Atom format is documented in the | |||
Atom Syndication Format 0.3 PRE-DRAFT | Atom Syndication Format (draft-ietf-atompub-format-00.txt). | |||
(http://www.mnot.net/drafts/draft-nottingham-atom-format-02.html). | ||||
To provide feedback on this Internet-Draft, join the atom-syntax | Editorial Note | |||
mailing list (http://www.imc.org/atom-syntax/index.html). | ||||
To provide feedback on this Internet-Draft, join the | ||||
<http://www.imc.org/atom-syntax/index.html>. | ||||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
1.1 Notational Conventions . . . . . . . . . . . . . . . . . . 4 | 1.1 Notational Conventions . . . . . . . . . . . . . . . . . . 4 | |||
1.2 Terminology . . . . . . . . . . . . . . . . . . . . . . . 4 | 1.2 Terminology . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
2. The Atom Publishing Protocol Model . . . . . . . . . . . . . 4 | 2. The Atom Publishing Protocol Model . . . . . . . . . . . . . 4 | |||
3. Functional Specification . . . . . . . . . . . . . . . . . . 5 | 3. Functional Specification . . . . . . . . . . . . . . . . . . 5 | |||
3.1 PostURI . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 3.1 PostURI . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
3.1.1 Locating the PostURI . . . . . . . . . . . . . . . . . 5 | 3.1.1 Locating the PostURI . . . . . . . . . . . . . . . . . 5 | |||
3.1.2 Request . . . . . . . . . . . . . . . . . . . . . . . 5 | 3.1.2 Request . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
3.1.3 Response . . . . . . . . . . . . . . . . . . . . . . . 5 | 3.1.3 Response . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
3.2 EditURI . . . . . . . . . . . . . . . . . . . . . . . . . 6 | 3.2 EditURI . . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
3.2.1 Locating . . . . . . . . . . . . . . . . . . . . . . . 7 | 3.2.1 Locating . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
3.2.2 Request . . . . . . . . . . . . . . . . . . . . . . . 7 | 3.2.2 Request . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
3.3 FeedURI . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 3.3 FeedURI . . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
3.3.1 Locating . . . . . . . . . . . . . . . . . . . . . . . 8 | 3.3.1 Locating . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
3.3.2 Request . . . . . . . . . . . . . . . . . . . . . . . 8 | 3.3.2 Request . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
3.3.3 Response . . . . . . . . . . . . . . . . . . . . . . . 8 | 3.3.3 Response . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
3.4 Link Tag . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 3.4 Link Tag . . . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
3.4.1 rel . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 3.4.1 rel . . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
3.4.2 href . . . . . . . . . . . . . . . . . . . . . . . . . 9 | 3.4.2 href . . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
3.4.3 title . . . . . . . . . . . . . . . . . . . . . . . . 9 | 3.4.3 title . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
3.4.4 type . . . . . . . . . . . . . . . . . . . . . . . . . 9 | 3.4.4 type . . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
3.5 Atom Request and Response Body Constraints . . . . . . . . 9 | 3.5 Atom Request and Response Body Constraints . . . . . . . . 11 | |||
3.5.1 id . . . . . . . . . . . . . . . . . . . . . . . . . . 9 | 3.5.1 id . . . . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
3.5.2 link . . . . . . . . . . . . . . . . . . . . . . . . . 10 | 3.5.2 link . . . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
3.5.3 title . . . . . . . . . . . . . . . . . . . . . . . . 10 | 3.5.3 title . . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
3.5.4 summary . . . . . . . . . . . . . . . . . . . . . . . 10 | 3.5.4 summary . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
3.5.5 content . . . . . . . . . . . . . . . . . . . . . . . 10 | 3.5.5 content . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
3.5.6 issued . . . . . . . . . . . . . . . . . . . . . . . . 11 | 3.5.6 issued . . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
3.5.7 modified . . . . . . . . . . . . . . . . . . . . . . . 11 | 3.5.7 modified . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
3.5.8 created . . . . . . . . . . . . . . . . . . . . . . . 11 | 3.5.8 created . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
3.5.9 author . . . . . . . . . . . . . . . . . . . . . . . . 11 | 3.5.9 author . . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
3.5.10 contributor . . . . . . . . . . . . . . . . . . . . 12 | 3.5.10 contributor . . . . . . . . . . . . . . . . . . . . 13 | |||
3.5.11 generator . . . . . . . . . . . . . . . . . . . . . 12 | 3.5.11 generator . . . . . . . . . . . . . . . . . . . . . 13 | |||
4. Security Considerations . . . . . . . . . . . . . . . . . . 12 | 3.6 Securing the Atom Protocol . . . . . . . . . . . . . . . . 13 | |||
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . 13 | 3.6.1 [@@TBD@@ CGI Authentication] . . . . . . . . . . . . . 14 | |||
6. Appendix A - SOAP Enabling . . . . . . . . . . . . . . . . . 13 | 4. Security Considerations . . . . . . . . . . . . . . . . . . 14 | |||
6.1 Servers . . . . . . . . . . . . . . . . . . . . . . . . . 13 | 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . 14 | |||
6.2 Clients . . . . . . . . . . . . . . . . . . . . . . . . . 13 | 6. Appendix A - SOAP Enabling . . . . . . . . . . . . . . . . . 15 | |||
7. Appendix B - Examples . . . . . . . . . . . . . . . . . . . 13 | 6.1 Servers . . . . . . . . . . . . . . . . . . . . . . . . . 15 | |||
7.1 Example for a weblog . . . . . . . . . . . . . . . . . . . 13 | 6.2 Clients . . . . . . . . . . . . . . . . . . . . . . . . . 15 | |||
7.2 Example for a wiki . . . . . . . . . . . . . . . . . . . . 13 | 7. Appendix B - Examples . . . . . . . . . . . . . . . . . . . 15 | |||
8. Revision History . . . . . . . . . . . . . . . . . . . . . . 14 | 7.1 Example for a weblog . . . . . . . . . . . . . . . . . . . 15 | |||
9. Normative References . . . . . . . . . . . . . . . . . . . . 15 | 7.2 Example for a wiki . . . . . . . . . . . . . . . . . . . . 15 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 15 | 8. Revision History . . . . . . . . . . . . . . . . . . . . . . 15 | |||
Intellectual Property and Copyright Statements . . . . . . . 16 | 9. Normative References . . . . . . . . . . . . . . . . . . . . 17 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 17 | ||||
Intellectual Property and Copyright Statements . . . . . . . 19 | ||||
1. Introduction | 1. Introduction | |||
The Atom Publishing Protocol is an application-level protocol for | The Atom Publishing Protocol is an application-level protocol for | |||
publishing and editing Web resources. | publishing and editing Web resources using HTTP [RFC2616] and XML. | |||
1.1 Notational Conventions | 1.1 Notational Conventions | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", the and "OPTIONAL" in | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
this document are to be interpreted as described in RFC2119. | document are to be interpreted as described in [RFC2119]. | |||
1.2 Terminology | 1.2 Terminology | |||
Atom Entry: An Atom Entry is a fragment of a full Atom feed. In this | Atom Entry: An Atom Entry is a fragment of a full Atom feed. In this | |||
case, the fragment is a single 'entry' element and all its child | case, the fragment is a single 'entry' element and all its child | |||
elements. Each Atom Entry describes a single Web resource, | elements. Each Atom Entry describes a single Web resource, | |||
providing metadata and optionally a textual representation of that | providing metadata and optionally a textual representation of that | |||
resource. | resource. | |||
PostURI: A URI that is used to create new resources. POSTing an Atom | PostURI: A URI that is used to create new resources. POSTing an Atom | |||
Entry to this URI will create a new resource. | Entry to this URI will create a new resource. | |||
skipping to change at page 5, line 46 | skipping to change at page 5, line 46 | |||
href="URI for Posting goes here" | href="URI for Posting goes here" | |||
title="The name of the site."> | title="The name of the site."> | |||
3.1.2 Request | 3.1.2 Request | |||
The request contains a filled-in Atom entry, subject to the | The request contains a filled-in Atom entry, subject to the | |||
constraints in section Section 3.5. | constraints in section Section 3.5. | |||
3.1.3 Response | 3.1.3 Response | |||
The possible status codes from a POST are 201, 303, 400, 401, 404, | The possible status codes from a POST are 201, 303, 400, 404, 410 and | |||
410 and 500. | 500. | |||
3.1.3.1 Response code 201 | 3.1.3.1 Response code 201 | |||
Response includes a Location: header with the URI of the created | Response includes a Location: header with the URI of the created | |||
resource, i.e. the URI used to edit the entry, as opposed to the URI | resource, i.e. the URI used to edit the entry, as opposed to the URI | |||
used to display the content. The body of the response will contain | used to display the content. The body of the response will contain | |||
the entry "filled-in" with time stamps and any other data the server | the entry "filled-in" with time stamps and any other data the server | |||
chooses to reveal. This must contain enough information to enable a | chooses to reveal. This must contain enough information to enable a | |||
client to issue a subsequent PUT to this location. Note that the | client to issue a subsequent PUT to this location. Note that the | |||
server may chose to omit the content in the response, particularly if | server may chose to omit the content in the response, particularly if | |||
skipping to change at page 6, line 21 | skipping to change at page 6, line 21 | |||
3.1.3.2 Response code 303 | 3.1.3.2 Response code 303 | |||
The body of this response does not contain the filled-in Entry, but | The body of this response does not contain the filled-in Entry, but | |||
the filled-in Entry can be found under a different URI and can be | the filled-in Entry can be found under a different URI and can be | |||
retrieved using a GET method on that resource. The URI SHOULD be | retrieved using a GET method on that resource. The URI SHOULD be | |||
given by the Location field in the response. | given by the Location field in the response. | |||
3.1.3.3 Response code 400 | 3.1.3.3 Response code 400 | |||
Indicates that the server believes that that data sent constitutes an | Indicates that the server believes that the data sent constitutes an | |||
invalid request. A short description of the error will appear on the | invalid request. As an example, the data posted may not be | |||
<http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html#sec6.1> | well-formed XML. The server SHOULD include an entity containing an | |||
itself. A longer description will appear in the body. | explanation of the error situation, and whether it is a temporary or | |||
permanent condition. | ||||
3.1.3.4 Response code 500 | 3.1.3.4 Response code 500 | |||
Indicates that the server detected an internal error on the server | Indicates that the server detected an internal error on the server | |||
processing this request (such as an unhandled exception). A short | processing this request (such as an unhandled exception). The server | |||
description of the error will appear on the | SHOULD include an entity containing an explanation of the error | |||
<http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html#sec6.1> | situation, and whether it is a temporary or permanent condition. | |||
itself. A longer description will appear in the body. | ||||
3.2 EditURI | 3.2 EditURI | |||
An EditURI is used to edit a single entry. Each entry that is | An EditURI is used to edit a single entry. Each entry that is | |||
editable MUST have a unique URI. This URI supports both GET and PUT | editable MUST have a unique URI. This URI supports both GET and PUT | |||
and they are used in tandem for an editing cycle. The client GETs | and they are used in tandem for an editing cycle. The client GETs | |||
the representation which is formatted as an Atom entry. The client | the representation which is formatted as an Atom entry. The client | |||
may then update the entry and then PUT it back to the same URI. The | may then update the entry and then PUT it back to the same URI. The | |||
PUT will cause all the related resources to be updated, for example, | PUT will cause all the related resources to be updated, for example, | |||
the HTML representation. | the HTML representation. | |||
skipping to change at page 7, line 29 | skipping to change at page 7, line 29 | |||
title="Readable desc of the entry."> | title="Readable desc of the entry."> | |||
Note: The critical characteristic of this link tag is the @rel of | Note: The critical characteristic of this link tag is the @rel of | |||
'service.edit' and the @type of 'application/atom+xml'. | 'service.edit' and the @type of 'application/atom+xml'. | |||
3.2.2 Request | 3.2.2 Request | |||
A PUT request, and a GET response both contain a filled-in Atom | A PUT request, and a GET response both contain a filled-in Atom | |||
entry, subject to the constraints in section Section 3.5. | entry, subject to the constraints in section Section 3.5. | |||
The expected status codes from a GET are 200, 301, 307, and 500. | ||||
400, 404, and 410 are also possible. | ||||
The expected status codes from a PUT are 2xx, 301, 307, 500 and 501. | ||||
400, 404, and 410 are also possible. | ||||
3.2.2.1 Successful Requests | ||||
Servers MUST indicate successful GET requests with a 200 response. | ||||
Servers MUST indicate successful PUT requests with a 2xx response. | ||||
Servers MAY include additional information in the PUT response. | ||||
Clients SHOULD NOT expect any additional information in a PUT | ||||
response. | ||||
3.2.2.2 Response code 301 | ||||
The entry has moved permanently, the new URI is given in the Location | ||||
header. The client SHOULD retry the GET using the URI returned in | ||||
the Location header. When a PUT operation is attempted the user | ||||
agent should prompt the user before attempting the PUT on the URI | ||||
returned in the Location header. | ||||
3.2.2.3 Response code 307 | ||||
The entry has moved temporarily, the new URI is given in the Location | ||||
header. The client SHOULD retry the GET using the URI returned in | ||||
the Location header. When a PUT operation is attempted the user | ||||
agent should prompt the user before attempting the PUT on the URI | ||||
returned in the Location header. | ||||
3.2.2.4 Response code 401 | ||||
Indicates that the server believes that the data sent constitutes an | ||||
invalid request. As an example, the data posted may not be | ||||
well-formed XML. The server SHOULD include an entity containing an | ||||
explanation of the error situation, and whether it is a temporary or | ||||
permanent condition. | ||||
3.2.2.5 Response code 410 | ||||
Indicates that the requested resource is gone permanently. The | ||||
client SHOULD NOT repeat the request again. | ||||
3.2.2.6 Response code 500 | ||||
Indicates that the server detected an internal error on the server | ||||
processing this request (such as an unhandled exception). The server | ||||
SHOULD include an entity containing an explanation of the error | ||||
situation, and whether it is a temporary or permanent condition. | ||||
3.3 FeedURI | 3.3 FeedURI | |||
The FeedURI is used to retrieve a representation in Atom format. | The FeedURI is used to retrieve a representation in Atom format. | |||
Note that this feed is different from a typical Atom feed in that it | Note that this feed is different from a typical Atom feed in that it | |||
contains "link" elements for navigating and manipulating the content | contains "link" elements for navigating and manipulating the content | |||
of the site. For example there should be a "link" element with | of the site. For example there should be a "link" element with | |||
rel="next" whose URI points to the next block of entries on the site. | rel="next" whose URI points to the next block of entries on the site. | |||
Similarly, the feed element can contain a "link" element with | Similarly, the feed element can contain a "link" element with | |||
rel="service.post", the URI of which is a PostURI. Individual | rel="service.post", the URI of which is a PostURI. Individual | |||
entries should contain "link" elements with rel="service.edit" whose | entries should contain "link" elements with rel="service.edit" whose | |||
URIs are EditURIs. | URIs are EditURIs. | |||
This document only uses some of the methods available for each type | ||||
of URI. For example, the only method described by this document for | ||||
the FeedURI is GET. Any other method may be supported by the URI | ||||
types described, but defining their behavior is beyond the scope of | ||||
this document. In this light you may notice that the PostURI only | ||||
supports the POST method. It is possible, and allowable, that for | ||||
some implementations the PostURI and the FeedURI are the same URI. | ||||
@@ Editor's Note: @@ Note that the "service.feed" takes the place of | @@ Editor's Note: @@ Note that the "service.feed" takes the place of | |||
the Introspection File and the Search facet in previous versions of | the Introspection File and the Search facet in previous versions of | |||
the specification. That is, facet discovery, which was previously | the specification. That is, facet discovery, which was previously | |||
done by inspecting the Introspection file is now done by looking for | done by inspecting the Introspection file is now done by looking for | |||
"link" tags with an attribute "rel" set to "service.[something]" in | "link" tags with an attribute "rel" set to "service.[something]" in | |||
the "service.feed" file. At the same time the same representation | the "service.feed" file. At the same time the same representation | |||
replaces the search facet by having "link" tags that point to other | replaces the search facet by having "link" tags that point to other | |||
feeds using well knows 'rel' attribute values such as 'next' and | feeds using well-known 'rel' attribute values such as 'next' and | |||
'prev', or the search can branch in multiple directions by specifying | 'prev', or the search can branch in multiple directions by specifying | |||
multiple link tags with rel="service.feed" and having differing title | multiple link tags with rel="service.feed" and having differing title | |||
attributes that announce the kind of search results in that feed. | attributes that announce the kind of search results in that feed. | |||
3.3.1 Locating | 3.3.1 Locating | |||
A link tag of the following format points to the FeedURI. | A link tag of the following format points to the FeedURI. | |||
<link rel="service.feed" | <link rel="service.feed" | |||
type="application/atom+xml" | type="application/atom+xml" | |||
skipping to change at page 8, line 27 | skipping to change at page 9, line 39 | |||
for this URI. | for this URI. | |||
3.3.3 Response | 3.3.3 Response | |||
The expected status codes from a GET are 200, 301, 307, and 500. | The expected status codes from a GET are 200, 301, 307, and 500. | |||
401, 404, and 410 are also possible. | 401, 404, and 410 are also possible. | |||
3.3.3.1 Response code 301 | 3.3.3.1 Response code 301 | |||
The Feed has moved permanently, the new URI is given in the Location | The Feed has moved permanently, the new URI is given in the Location | |||
header. | header. The client SHOULD do a GET on the URI returned in the | |||
Location header. | ||||
3.3.3.2 Response code 307 | 3.3.3.2 Response code 307 | |||
The Feed has moved temporarily, the new URI is given in the Location | The Feed has moved temporarily, the new URI is given in the Location | |||
header. | header. The client SHOULD do a GET on the URI returned in the | |||
Location header. | ||||
3.4 Link Tag | 3.4 Link Tag | |||
The link tag is used in both HTML and Atom formats. There are slight | The link tag is used in both HTML and Atom formats. There are slight | |||
differences between the two usages. Here are the commonalities, | differences between the two usages. Here are the commonalities, | |||
differences, and a list of well-known values for the rel attribute. | differences, and a list of well-known values for the rel attribute. | |||
<http://www.w3.org/TR/html4/struct/links.html#edef-LINK> appears in | <http://www.w3.org/TR/html4/struct/links.html#edef-LINK> appears in | |||
the 'head' of the document. The 'head' section only allows a linear | the 'head' of the document. The 'head' section only allows a linear | |||
list of 'link' tags. The Atom format allows 'link' tags as children | list of 'link' tags. The Atom format allows 'link' tags as children | |||
skipping to change at page 12, line 28 | skipping to change at page 13, line 42 | |||
3.5.11 generator | 3.5.11 generator | |||
PostURI MUST be present and contain a URI. The value of the element | PostURI MUST be present and contain a URI. The value of the element | |||
indicates the code base used to create this request. MUST also | indicates the code base used to create this request. MUST also | |||
have an attribute 'version' with a version number. | have an attribute 'version' with a version number. | |||
FeedURI MUST NOT be present. | FeedURI MUST NOT be present. | |||
EditURI | EditURI | |||
GET MUST NOT be present. | GET MUST NOT be present. | |||
PUT MUST NOT be present. | PUT MUST NOT be present. | |||
3.6 Securing the Atom Protocol | ||||
All instances of publishing Atom entries SHOULD be protected by | ||||
authentication to prevent posting or editing by unknown sources. | ||||
Atom servers and clients MUST support one of the following | ||||
authentication mechanisms, and SHOULD support both. | ||||
o HTTP Digest Authentication [RFC2617] | ||||
o [@@TBD@@ CGI Authentication ref] | ||||
Atom servers and clients MAY support encryption of the Atom session | ||||
using TLS [RFC2246]. | ||||
There are cases where an authentication mechanism may not be | ||||
required, such as a publicly editable Wiki, or when using the PostURI | ||||
to post comments to a site that does not require authentication to | ||||
create comments. | ||||
3.6.1 [@@TBD@@ CGI Authentication] | ||||
This authentication method is included as part of the protocol to | ||||
allow Atom servers and clients that cannot use HTTP Digest | ||||
Authentication but where the user can both insert its own HTTP | ||||
headers and create a CGI program to authenticate entries to the | ||||
server. This scenario is common in environments where the user | ||||
cannot control what services the server employs, but the user can | ||||
write their own HTTP services. | ||||
4. Security Considerations | 4. Security Considerations | |||
Because Atom is a publishing protocol, it is important that only | Because Atom is a publishing protocol, it is important that only | |||
authorized users can create and edit entries. The security of Atom | authorized users can create and edit entries. | |||
is based on HTTP Digest Authentication and/or the WSSE-style | ||||
authentication described in this document. Any weaknesses in either | ||||
of these two protocols will obviously affect the security of the Atom | ||||
publishing protocol. | ||||
Both HTTP Digest Authentication and the WSSE-style authentication | The security of Atom is based on HTTP Digest Authentication and/or | |||
described in this document are susceptible to dictionary-based | [@@TBD@@ CGI Authentication]. Any weaknesses in either of these | |||
attacks on the shared secret. If the shared secret is a password | authentication schemes will obviously affect the security of the Atom | |||
(instead of a random string with sufficient entropy), an attacker can | Publishing Protocol. | |||
determine the secret by exhaustively comparing the authenticating | ||||
string with hashed results of the public string and dictionary | Both HTTP Digest Authentication and [@@TBD@@ CGI Authentication] are | |||
entries. | susceptible to dictionary-based attacks on the shared secret. If the | |||
shared secret is a password (instead of a random string with | ||||
sufficient entropy), an attacker can determine the secret by | ||||
exhaustively comparing the authenticating string with hashed results | ||||
of the public string and dictionary entries. | ||||
See RFC 2617 for more detailed description of the security properties | See RFC 2617 for more detailed description of the security properties | |||
of HTTP Digest Authentication. | of HTTP Digest Authentication. | |||
@@TBD@@ Talk here about using HTTP basic and digest authentication. | @@TBD@@ Talk here about using HTTP basic and digest authentication. | |||
@@TBD@@ Talk here about denial of service attacks using large XML | @@TBD@@ Talk here about denial of service attacks using large XML | |||
files, or the billion laughs DTD attack. | files, or the billion laughs DTD attack. | |||
5. IANA Considerations | 5. IANA Considerations | |||
skipping to change at page 14, line 7 | skipping to change at page 15, line 52 | |||
the 'introspection' file. 1. Creating a new entry 2. Finding an | the 'introspection' file. 1. Creating a new entry 2. Finding an | |||
old entry 3. editing an old entry 4. commenting on a entry (via | old entry 3. editing an old entry 4. commenting on a entry (via | |||
HTML and Atom) | HTML and Atom) | |||
7.2 Example for a wiki | 7.2 Example for a wiki | |||
Fill this in like above but for a wiki. | Fill this in like above but for a wiki. | |||
8. Revision History | 8. Revision History | |||
draft-ietf-atompub-protocol-01 - Added in sections on Responses for | ||||
the EditURI. Allow 2xx for response to EditURI PUTs. Elided all | ||||
mentions of WSSE. Started adding in some normative references. | ||||
Added the section "Securing the Atom Protocol". Clarified that it is | ||||
possible that the PostURI and FeedURI could be the same URI. Cleaned | ||||
up descriptions for Response codes 400 and 500. | ||||
Rev draft-ietf-atompub-protocol-00 - 5Jul2004 - Renamed the file and | Rev draft-ietf-atompub-protocol-00 - 5Jul2004 - Renamed the file and | |||
re-titled the document to conform to IETF submission guidelines. | re-titled the document to conform to IETF submission guidelines. | |||
Changed MIME type to match the one selected for the Atom format. | Changed MIME type to match the one selected for the Atom format. | |||
Numerous typographical fixes. We used to have two 'Introduction' | Numerous typographical fixes. We used to have two 'Introduction' | |||
sections. One of them was moved into the Abstract the other absorbed | sections. One of them was moved into the Abstract the other absorbed | |||
the Scope section. IPR and copyright notifications were added. | the Scope section. IPR and copyright notifications were added. | |||
Rev 09 - 10Dec2003 - Added the section on SOAP enabled clients and | Rev 09 - 10Dec2003 - Added the section on SOAP enabled clients and | |||
servers. | servers. | |||
skipping to change at page 15, line 14 | skipping to change at page 17, line 18 | |||
changed to application/atom+xml. | changed to application/atom+xml. | |||
Rev 01 - 5Jul2003 - Renamed from EchoAPI.html to follow the more | Rev 01 - 5Jul2003 - Renamed from EchoAPI.html to follow the more | |||
commonly used format: draft-gregorio-NN.html. Renamed all references | commonly used format: draft-gregorio-NN.html. Renamed all references | |||
to URL to URI. Broke out introspection into it's own section. Added | to URL to URI. Broke out introspection into it's own section. Added | |||
the Revision History section. Added more to the warning that the | the Revision History section. Added more to the warning that the | |||
example URIs are not normative. | example URIs are not normative. | |||
9 Normative References | 9 Normative References | |||
[RFC2629] Rose, M., "Writing I-Ds and RFCs using XML", RFC 2629, | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
June 1999. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
[RFC2246] Dierks, T. and C. Allen, "The TLS Protocol Version 1.0", | ||||
RFC 2246, January 1999. | ||||
[RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., | ||||
Masinter, L., Leach, P. and T. Berners-Lee, "Hypertext | ||||
Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999. | ||||
[RFC2617] Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S., | ||||
Leach, P., Luotonen, A. and L. Stewart, "HTTP | ||||
Authentication: Basic and Digest Access Authentication", | ||||
RFC 2617, June 1999. | ||||
Authors' Addresses | Authors' Addresses | |||
Joe Gregorio (editor) | Joe Gregorio (editor) | |||
BitWorking, Inc | BitWorking, Inc | |||
1002 Heathwood Dairy Rd. | 1002 Heathwood Dairy Rd. | |||
Apex, NC 27502 | Apex, NC 27502 | |||
US | US | |||
Phone: +1 919 272 3764 | Phone: +1 919 272 3764 | |||
End of changes. | ||||
This html diff was produced by rfcdiff 1.12, available from http://www.levkowetz.com/ietf/tools/rfcdiff/ |