Реализация ACD WebDAV: я должен изменить или заменить записи доступа? - PullRequest
0 голосов
/ 05 ноября 2019

Давайте предположим, что я делаю метод ACL для ресурса в первый раз:

   <?xml version="1.0" encoding="utf-8" ?>
   <D:acl xmlns:D="DAV:">
     <D:ace>
       <D:principal>
         <D:href>http://www.example.com/users/esedlar</D:href>
       </D:principal>
       <D:grant>
         <D:privilege><D:write/></D:privilege>
       </D:grant>
     </D:ace>
</D:acl>

А затем на тот же ресурс во второй раз:

<?xml version="1.0" encoding="utf-8" ?>
   <D:acl xmlns:D="DAV:">
     <D:ace>
       <D:principal>
         <D:href>http://www.example.com/users/esedlar</D:href>
       </D:principal>
       <D:grant>
         <D:privilege><D:read/></D:privilege>
       </D:grant>
     </D:ace>
</D:acl>

Должно ли D: write быть сохранено для http://www.example.com/users/esedlar после запроса № 2?

1 Ответ

0 голосов
/ 12 ноября 2019

Извлечение RFC: https://tools.ietf.org/html/rfc3744#page-40

В частности, метод ACL позволяет изменять только те записи ACE, которые не наследуются и не защищены. Вызов метода ACL изменяет все не унаследованные и незащищенные ACE в списке управления доступом ресурса, чтобы точно соответствовать ACE, содержащимся в XML-элементе DAV: acl (указанном в разделе 5.5) тела запроса. Тело запроса ACL ДОЛЖНО содержать только один XML-элемент DAV: acl. Если ненаследуемые и незащищенные записи ACE свойства DAV: acl ресурса не могут быть обновлены до значения, точно указанного в запросе ACL, запрос ACL ДОЛЖЕН завершиться неудачей.

...