Résumé des points techniques clés des chapitres 11-25 du RFC 4918
Ce document résume le contenu technique clé des chapitres 11 à 25 du RFC 4918, incluant les extensions de codes d'état, les définitions XML, les exigences de conformité, etc.
11. Extensions des codes d'état (Status Code Extensions)
WebDAV introduit 5 nouveaux codes d'état HTTP :
11.1 207 Multi-Status
Usage : réponse composite pour les opérations en lot
Scénarios : PROPFIND, PROPPATCH, COPY, MOVE, DELETE
Exemple :
HTTP/1.1 207 Multi-Status
Content-Type: application/xml
<D:multistatus xmlns:D="DAV:">
<D:response>
<D:href>/resource1<D:href>
<D:status>HTTP/1.1 200 OK<D:status>
<D:response>
<D:response>
<D:href>/resource2<D:href>
<D:status>HTTP/1.1 403 Forbidden<D:status>
<D:response>
<D:multistatus>
11.2 422 Unprocessable Entity
Signification : la requête est syntaxiquement correcte mais sémantiquement erronée
Scénarios : XML syntaxiquement correct mais violant les règles métier
11.3 423 Locked
Signification : la ressource cible est verrouillée
Scénarios : tentative de modification d'une ressource verrouillée
11.4 424 Failed Dependency
Signification : l'opération en cours ne peut pas être exécutée en raison de l'échec d'une opération précédente
Scénarios : échec de dépendance dans une opération en lot
11.5 507 Insufficient Storage
Signification : espace de stockage insuffisant sur le serveur
Scénarios : impossible de stocker la ressource ou de terminer l'opération
12. Utilisation des codes d'état HTTP (Use of HTTP Status Codes)
12.1 412 Precondition Failed
Utilisé dans WebDAV pour :
- Condition de l'en-tête If non satisfaite
- Overwrite: F mais la ressource de destination existe
- Échec de validation du jeton de verrou
12.2 414 Request-URI Too Long
Retourné lorsque l'URI dépasse la limite du serveur.
13. Réponse multi-état (Multi-Status Response)
Concept central
La réponse multi-état permet au serveur de retourner des informations d'état pour plusieurs ressources.
Structure :
<multistatus>
<response>*
<responsedescription>?
</multistatus>
13.1 En-têtes de réponse
- Content-Type: application/xml
- PEUT inclure un en-tête Location (pour les ressources créées)
13.2 Traitement des sous-ressources redirigées
Le serveur DEVRAIT suivre les redirections et signaler l'état de la ressource finale.
13.3 Codes d'état internes
Les codes d'état dans une réponse multi-état PEUVENT être n'importe quel code d'état HTTP valide.
14. Définitions des éléments XML (XML Element Definitions)
WebDAV définit un vocabulaire XML complet, incluant :
Principales catégories d'éléments
1. Éléments de requête :
propfind— requête de recherche de propriétéspropertyupdate— requête de mise à jour de propriétéslockinfo— informations de verrouprop— liste de propriétés
2. Éléments de réponse :
multistatus— réponse multi-étatresponse— réponse pour une ressource uniquepropstat— état des propriétés
3. Éléments de propriété :
- Voir le chapitre 15 pour les détails
4. Éléments d'erreur :
- Voir le chapitre 16 pour les détails
15. Propriétés DAV (DAV Properties)
WebDAV définit un ensemble de propriétés standard, divisées en propriétés vivantes et mortes.
Propriétés vivantes principales
| Nom de propriété | Type | Description |
|---|---|---|
creationdate | vivante | Date de création de la ressource |
displayname | vivante/morte | Nom d'affichage |
getcontentlanguage | vivante | Langue du contenu |
getcontentlength | vivante | Longueur du contenu |
getcontenttype | vivante | Type de contenu |
getetag | vivante | Étiquette d'entité (ETag) |
getlastmodified | vivante | Heure de dernière modification |
lockdiscovery | vivante | Informations de découverte de verrou |
resourcetype | vivante | Type de ressource |
supportedlock | vivante | Types de verrous pris en charge |
Caractéristiques des propriétés
- Propriétés vivantes : calculées et maintenues par le serveur
- Propriétés mortes : définies par le client, stockées par le serveur
- Propriétés protégées : ne peuvent pas être modifiées via PROPPATCH
16. Éléments XML de précondition/postcondition (Precondition/Postcondition XML Elements)
Usage
Fournir des informations d'erreur lisibles par machine.
Préconditions courantes
lock-token-matches-request-uri— correspondance du jeton de verroulock-token-submitted— soumission du jeton de verrou requiseno-conflicting-lock— aucun verrou en conflitno-external-entities— entités externes non autoriséespreserved-live-properties— propriétés vivantes préservéespropfind-finite-depth— limite de profondeur PROPFIND
17. Extensibilité XML dans DAV (XML Extensibility in DAV)
Principes d'extension
- Ajouter de nouveaux éléments : de nouveaux éléments XML PEUVENT être ajoutés à n'importe quel emplacement
- Ajouter de nouvelles propriétés : de nouvelles propriétés DAV PEUVENT être définies
- Ignorer les éléments inconnus : les clients et serveurs DOIVENT ignorer les éléments qu'ils ne comprennent pas
- Espaces de noms : utiliser les espaces de noms XML pour éviter les conflits
Meilleures pratiques
- Définir les extensions avec son propre espace de noms
- Maintenir la compatibilité ascendante
- Documenter le comportement des extensions
18. Classes de conformité DAV (DAV Compliance Classes)
Classe 1 (WebDAV de base)
Prise en charge obligatoire :
- Méthodes PROPFIND / PROPPATCH
- Méthode MKCOL
- Extensions GET / HEAD pour les collections
- Extensions PUT / DELETE
- Méthodes COPY / MOVE
- En-tête DAV retournant « 1 »
- Toutes les propriétés définies au chapitre 15
- Étiquettes d'entité (ETags)
Classe 2 (Avec verrouillage)
Inclut la Classe 1, plus :
- Méthodes LOCK / UNLOCK
- Prise en charge de l'en-tête Timeout
- Prise en charge de l'en-tête If
- En-tête Lock-Token
- En-tête DAV retournant « 1, 2 »
Classe 3 (Collections ordonnées)
Inclut la Classe 1, plus :
- Prise en charge des collections ordonnées
- En-tête DAV retournant « 1, 3 » ou « 1, 2, 3 »
19. Considérations d'internationalisation (Internationalization Considerations)
Points clés
- Encodage UTF-8 : XML utilise l'encodage UTF-8
- Attribut xml:lang : prise en charge des annotations de langue
- Valeurs de propriétés : PEUVENT contenir des caractères Unicode
- Encodage URL : traitement correct des URL internationalisées
20. Considérations de sécurité (Security Considerations)
Principaux problèmes de sécurité
1. Authentification et autorisation :
- DOIT utiliser des mécanismes d'authentification appropriés
- Mettre en œuvre un contrôle d'accès granulaire
- Protéger les propriétés sensibles
2. Déni de service (DoS) :
- Limiter les requêtes Depth: infinity
- Mettre en œuvre des quotas de ressources
- Mécanismes de délai d'expiration
3. Divulgation d'informations :
- Traiter les messages d'erreur avec précaution
- Protéger les jetons de verrou
- Vérifications d'autorisation appropriées
4. Sécurité XML :
- Prévenir les attaques par expansion d'entités XML
- Limiter la taille des documents XML
- Désactiver les entités externes
21. Considérations IANA (IANA Considerations)
Contenu enregistré
- Enregistrement du schéma URI DAV : « opaquelocktoken »
- Enregistrement des en-têtes HTTP : DAV, Depth, Destination, etc.
- Codes d'état HTTP : 207, 422, 423, 424, 507
- Espace de noms XML : « DAV: »
22-24. Remerciements / Contributeurs / Auteurs (Acknowledgements / Contributors / Authors)
Le RFC 4918 est le fruit des efforts collectifs de nombreux membres de la communauté WebDAV. Remerciements particuliers à :
- Les auteurs originaux du RFC 2518
- Les membres du groupe de travail WebDAV
- Les retours des implémenteurs et des premiers adoptants
25. Références (References)
25.1 Références normatives
- RFC 2119 : définition des mots-clés
- RFC 2616 : HTTP/1.1
- RFC 3986 : syntaxe générique des URI
- REC-XML : spécification XML 1.0
- REC-XML-NAMES : espaces de noms XML
25.2 Références informatives
- RFC 2518 : WebDAV 1.0 (remplacé par cette spécification)
- RFC 3253 : gestion de versions WebDAV
- RFC 3744 : contrôle d'accès WebDAV
- Autres RFC connexes
Résumé : Les chapitres 11 à 25 couvrent les détails d'implémentation de WebDAV, les exigences de conformité, les considérations de sécurité et la prise en charge de l'internationalisation. Ces chapitres sont essentiels pour implémenter un serveur ou un client WebDAV complet. Les points clés incluent l'utilisation correcte des codes d'état HTTP, l'implémentation de l'extensibilité XML, la satisfaction des exigences de conformité et la gestion des problèmes de sécurité.