Назад | Перейти на главную страницу

Как устранить ошибку «HTTP / 1.1 403 Forbidden» с сервера iCal / CalDAV после обновления до Snow Leopard Server?

Недавно мы обновили наш Open Directory Master & Replica до Mac OS X 10.6.4 Snow Leopard Server. У нас было несоответствующее полное доменное имя сервера и база поиска LDAP / область Kerberos, поэтому мы экспортировали всех пользователей и группы, создали новый Open Directory Master с соответствующим полным доменным именем и поисковой базой / областью, повторно импортировали пользователей и группы и повторно связали все серверы и рабочие станции к новому OD Master.

Одновременно со всем этим мы обновили наш сервер iCal / CalDAV до Mac OS X 10.6.4 Snow Leopard Server. С тех пор мы наблюдали следующие проблемы с нашим сервером iCal / CalDAV и клиентами iCal в Mac OS X 10.5 Leopard и Mac OS X 10.6:

Интересно, что с тех пор мы обнаружили, что пользователи, похоже, могут без ошибок удалять отдельные события из старого повторяющегося события, но это огромный объем работы, чтобы избавиться от повторяющегося события.

Замечу что у нас есть не тем не менее, добавил SRV-запись в DNS, как указано на стр. 19 iCal_Server_Admin_v10.6.pdf.

Дальнейшее расследование:

В этом конкретном случае пользователь пытается отклонить повторяющиеся события, созданные до обновления до Snow Leopard Server. Предоставление пользователю полного доступа на запись с sudo calendarserver_manage_principals --add-write-proxy users:user1 users:user2 (что действительно сработало) не позволяет удалять события. По-прежнему получаю обычную ошибку:

Access to "blah blah" in "blah blah" in account "blah blah" is not permitted.

The server responded:
"HTTP/1.1 403 Forbidden"
to operation CalDAVWriteEntityQueueableOperation.

Ошибка, которая появляется в /var/log/caldavd/error.log на сервере iCal при попытке удалить одно из событий:

2011-03-17 15:14:30-0400 [-] [caldav-8009] [PooledMemCacheProtocol,client] [twistedcaldav.extensions#info] PUT /calendars/__uids__/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/calendar/XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX.ics HTTP/1.1 2011-03-17 15:14:30-0400 [-] [caldav-8009] [PooledMemCacheProtocol,client] [twistedcaldav.scheduling.implicit#error] Cannot change ORGANIZER: UID:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX

И ошибка в /var/log/system.log на клиенте:

Mar 17 15:14:30 192-168-21-169-dhcp iCal[33509]: CalDAV CalDAVWriteEntityQueueableOperation failed: status 'HTTP/1.1 403 Forbidden' request:\n\nBEGIN:VCALENDAR^M\nVERSION:2.0^M\nPRODID:-//Apple Inc.//iCal 3.0//EN^M\nCALSCALE:GREGORIAN^M\nBEGIN:VTIMEZONE^M\nTZID:US/Eastern^M\nBEGIN:DAYLIGHT^M\nTZOFFSETFROM:-0500^M\nTZOFFSETTO:-0400^M\nDTSTART:20070311T020000^M\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU^M\nTZNAME:EDT^M\nEND:DAYLIGHT^M\nBEGIN:STANDARD^M\nTZOFFSETFROM:-0400^M\nTZOFFSETTO:-0500^M\nDTSTART:20071104T020000^M\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU^M\nTZNAME:EST^M\nEND:STANDARD^M\nEND:VTIMEZONE^M\nBEGIN:VEVENT^M\nSEQUENCE:5^M\nDTSTART;TZID=US/Eastern:20090117T094500^M\nDTSTAMP:20081227T143043Z^M\nSUMMARY:blah blah^M\nATTENDEE;CN="First Last";CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT:urn:uuid^M\n :XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX^M\nATTENDEE;CN="First Last";CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED:mailto:user@d^M\n omain.tld^M\nEXDATE;TZID=US/Eastern:20110319T094500^M\nDTEND;TZID=US/Eastern:20090117T183000^M\nRRULE:FREQ=WEEKLY;INTERVAL=1^M\nTRANSP:OPAQUE^M\nUID:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX^M\nORGANIZER;CN="First Last":mailto:user@domain.tld^M\nX-WR-ITIPSTATUSML:UNCLEAN^M\nCREATED:20110317T191348Z^M\nEND:VEVENT^M\nEND:VCALENDAR^M\n\n\n... response:\nHTTP/1.1 403 Forbidden^M\nDate: Thu, 17 Mar 2011 19:14:30 GMT^M\nDav: 1, access-control, calendar-access, calendar-schedule, calendar-auto-schedule, calendar-availability, inbox-availability, calendar-proxy, calendarserver-private-events, calendarserver-private-comments, calendarserver-principal-property-search^M\nContent-Type: text/xml^M\nContent-Length: 134^M\nServer: Twisted/8.2.0 TwistedWeb/8.2.0 TwistedCalDAV/2.5 (iCal Server v12.56.21)^M\n^M\n<?xml version='1.0' encoding='UTF-8'?><error xmlns='DAV:'>^M\n  <valid-attendee-change xmlns='urn:ietf:params:xml:ns:caldav'/>^M\n</error>

Одна вещь, которую я заметил, и я не уверен, имеет ли это какой-либо реальный эффект, заключается в том, что во многих из этих событий миграции до Snow Leopard Server ORGANIZER указывается следующим образом:

ORGANIZER;CN=First Last:mailto:user@domain.tld

Но более новые больше похожи на одну из двух следующих:

ORGANIZER;CN=First Last;EMAIL=user@domain.tld;SCHEDULE-STATUS=1

ORGANIZER;CN=First Last;EMAIL=user@domain.tld:urn:uuid:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX

iCal_Server_Admin_v10.6.pdf отмечает, что файлы ".db.sqlite" полностью одноразовые, они просто кэш производительности и перестраиваются на лету, поэтому их можно безопасно удалить. Я удалил один для календарей организатора, и потребовалось больше времени, чтобы обработать попытку удаления события, пока он перестраивал базу данных, но в итоге все равно возникла ошибка.

FWIW ошибка возникает из-за этого кода:

https://trac.calendarserver.org/browser/CalendarServer/trunk/twistedcaldav/scheduling/implicit.py

Есть еще предложения? Я вижу много вопросов об этом в своих поисках Google, но не вижу решений, и это широко распространенная проблема на нашем сервере iCal. Сейчас мы в основном пытаемся заставить пользователей игнорировать их (отсюда и время, в течение которого этот вопрос был открытым), но время от времени я копаюсь глубже, пытаясь найти виновника и / или решение.

Что касается меня, проблема возникла при использовании iCal с Календарем Google, когда я выбрал свой адрес @ gmail.com вместо адреса @ googlemail.com. После удаления календаря из iCal и его повторного добавления с помощью ... @ googlemail.com все работает нормально.

У меня были точно такие же проблемы, и я решил их, исправив владельца хранилища данных календаря, как описано на стр. 42 iCal Server Admin 10.6. Я выдал в Терминале:

sudo chown -R _calendar:_calendar /Library/CalendarServer/Documents

Моя папка «Документы» имела правильные разрешения, но некоторые файлы или папки, находящиеся в нескольких каталогах ниже, имели «root» в качестве владельца, поэтому приведенная выше команда исправила это, и больше у пользователей не было ошибок.

Возможно, вам также придется изменить разрешения с помощью chmod, но в моем случае они были в порядке.