Aller au contenu principal

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és
  • propertyupdate — requête de mise à jour de propriétés
  • lockinfo — informations de verrou
  • prop — liste de propriétés

2. Éléments de réponse :

  • multistatus — réponse multi-état
  • response — réponse pour une ressource unique
  • propstat — é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éTypeDescription
creationdatevivanteDate de création de la ressource
displaynamevivante/morteNom d'affichage
getcontentlanguagevivanteLangue du contenu
getcontentlengthvivanteLongueur du contenu
getcontenttypevivanteType de contenu
getetagvivanteÉtiquette d'entité (ETag)
getlastmodifiedvivanteHeure de dernière modification
lockdiscoveryvivanteInformations de découverte de verrou
resourcetypevivanteType de ressource
supportedlockvivanteTypes 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 verrou
  • lock-token-submitted — soumission du jeton de verrou requise
  • no-conflicting-lock — aucun verrou en conflit
  • no-external-entities — entités externes non autorisées
  • preserved-live-properties — propriétés vivantes préservées
  • propfind-finite-depth — limite de profondeur PROPFIND

17. Extensibilité XML dans DAV (XML Extensibility in DAV)

Principes d'extension

  1. Ajouter de nouveaux éléments : de nouveaux éléments XML PEUVENT être ajoutés à n'importe quel emplacement
  2. Ajouter de nouvelles propriétés : de nouvelles propriétés DAV PEUVENT être définies
  3. Ignorer les éléments inconnus : les clients et serveurs DOIVENT ignorer les éléments qu'ils ne comprennent pas
  4. 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

  1. Encodage UTF-8 : XML utilise l'encodage UTF-8
  2. Attribut xml:lang : prise en charge des annotations de langue
  3. Valeurs de propriétés : PEUVENT contenir des caractères Unicode
  4. 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é

  1. Enregistrement du schéma URI DAV : « opaquelocktoken »
  2. Enregistrement des en-têtes HTTP : DAV, Depth, Destination, etc.
  3. Codes d'état HTTP : 207, 422, 423, 424, 507
  4. 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é.