Soit un serveur Open Directory 10.5 (OD), un deuxième serveur CalDAV en 10.5. Configurer les deux serveurs afin que CalDAV server d'agenda avec identification et authentification de l'Open Directory.
Le serveur iCal de MacOS X Server 10.5 est basé sur les standards suivants :
Afin de partager des calendriers, la première étape consiste à se connecter à un annuaire
Utlitaire Répertoire
Sur un poste client, dans iCal, au moment de créer un compte, si vous obtenez le message "Aucun serveur Open Directory configuré. Configurez un ou plusieurs serveur Open Directory à l'aide d'Utilitaure d'annuaire ou utilisez une URL de compte explicite.", c'est que vous n'etes pas connecté à un annuaire. (en anglais : No Open Directory servers configured. Confugure one or more Open Directory servers using Directory Utility or use an explicite Accound URL.)
A tester "utilisez une URL de compte explicite" sans connexion Open Directory.
Sur un poste client, dans iCal, au moment de créer un compte, si vous obtenez le message "Le nom d'utilisateur «nom_utilisateur» est introuvable. Aucun nom d'utilisateur correspond n'a été trouvé dans le service d'annuaire. Vérifiez le nom d'utilisateur que vous avez saisi." C'est que le nom ne correspond à personne dans le serveur d'authentification. (en anglais "The username 'user_name' was not found. No Matching username was found on the directory service. Double check your username.")
Le nom d'utilisateur «nom_utilisateur» ne possède aucun nom principal configuré. Confirmez auprès de votre administrateur réseau que votre compte a au moins un nom principal CalDAV configuré. Cela peut être une erreur de mot de passe.
(en anglais: The username 'user_name' has no configured principals. Confirm with your network administrator that your account has at least on CalDAV principal configured.)
Côté serveur il y une erreur : [AMP,client] Could not find the principal resource for user id: Nom_Utilisateur
et avant pour chaque utilisateur :
[-] [caldav-8009] [OpenDirectoryService] Directory (incorrectly) returned a record with no ServicesLocator attribute: Nom_utilisateur
cd /Library/CalendarServer/Documents/
mkdir -p principals/users/ical1
mkdir -p principals/__uids__
mkdir -p calendars/users/ical1
chown -R _calendar:_calendar *
chmod -R o-rx *
Lorsque les deux serveurs sont sur le meme ordinateur, tout fonctionne parfaitement sans meme à avoir à mettre https://nom_serveur:8443:
Dans ce cas, lors de la création du premier utilisateur ici ical2, les répertoire principals, calendar sont automatiquement créés ainsi que le __uids__ ..
Documents/
Documents/calendars/
Documents/calendars/users/
Documents/calendars/users/._ical2
Documents/calendars/users/ical2/
Documents/calendars/users/ical2/._calendar
Documents/calendars/users/ical2/calendar/
Documents/calendars/users/ical2/calendar/.db.sqlite
Documents/calendars/users/ical2/._inbox
Documents/calendars/users/ical2/inbox/
Documents/principals/
Documents/principals/.db.calendaruserproxy
Documents/principals/__uids__/
Documents/principals/__uids__/._D56DE1AE-2B7C-4469-9F90-B3FC391C497C
Documents/principals/__uids__/D56DE1AE-2B7C-4469-9F90-B3FC391C497C/
Documents/principals/__uids__/D56DE1AE-2B7C-4469-9F90-B3FC391C497C/calendar-proxy-read/
Documents/principals/__uids__/D56DE1AE-2B7C-4469-9F90-B3FC391C497C/calendar-proxy-write/
Documents/principals/__uids__/._D56DE1AE-2B7C-4469-9F90-B3FC391C497C#calendar-proxy-read
Documents/principals/__uids__/D56DE1AE-2B7C-4469-9F90-B3FC391C497C#calendar-proxy-read/
Documents/principals/__uids__/D56DE1AE-2B7C-4469-9F90-B3FC391C497C#calendar-proxy-read/calendar-proxy-read/
Documents/principals/__uids__/._D56DE1AE-2B7C-4469-9F90-B3FC391C497C#calendar-proxy-write
Documents/principals/__uids__/D56DE1AE-2B7C-4469-9F90-B3FC391C497C#calendar-proxy-write/
Documents/principals/__uids__/D56DE1AE-2B7C-4469-9F90-B3FC391C497C#calendar-proxy-write/calendar-proxy-write/
access.log
Log opened - server start: [Thu Apr 10 16:26:12 2008].
132.227.104.12 - - [10/Apr/2008:16:29:45 +0200] "PROPFIND /principals/__uids__/D56DE1AE-2B7C-4469-9F90-B3FC391C497C/ HTTP/1.1" 401 141 "-" "DAVKit/2.0 (10.5.2; wrbt) iCal 3.0.2" [5.4 ms]
132.227.104.12 - ical2 [10/Apr/2008:16:29:46 +0200] "PROPFIND /principals/__uids__/D56DE1AE-2B7C-4469-9F90-B3FC391C497C/ HTTP/1.1" 207 1937 "-" "DAVKit/2.0 (10.5.2; wrbt) iCal 3.0.2" [116.0 ms]
132.227.104.12 - - [10/Apr/2008:16:29:46 +0200] "PROPFIND /calendars/users/ical2/inbox/ HTTP/1.1" 401 141 "-" "DAVKit/2.0 (10.5.2; wrbt) iCal 3.0.2" [3.1 ms]
132.227.104.12 - ical2 [10/Apr/2008:16:29:46 +0200] "PROPFIND /calendars/users/ical2/inbox/ HTTP/1.1" 207 342 "-" "DAVKit/2.0 (10.5.2; wrbt) iCal 3.0.2" [35.2 ms]
132.227.104.12 - ical2 [10/Apr/2008:16:29:46 +0200] "PROPFIND /principals/__uids__/D56DE1AE-2B7C-4469-9F90-B3FC391C497C/ HTTP/1.1" 207 1937 "-" "DAVKit/2.0 (10.5.2; wrbt) iCal 3.0.2" [16.4 ms]
132.227.104.12 - ical2 [10/Apr/2008:16:29:46 +0200] "PROPFIND /calendars/users/ical2/ HTTP/1.1" 207 3512 "-" "DAVKit/2.0 (10.5.2; wrbt) iCal 3.0.2" [38.0 ms]
132.227.104.12 - ical2 [10/Apr/2008:16:29:46 +0200] "PROPFIND /calendars/users/ical2/calendar/ HTTP/1.1" 207 780 "-" "DAVKit/2.0 (10.5.2; wrbt) iCal 3.0.2" [28.6 ms]
132.227.104.12 - ical2 [10/Apr/2008:16:29:47 +0200] "PROPFIND /calendars/users/ical2/calendar/ HTTP/1.1" 207 449 "-" "DAVKit/2.0 (10.5.2; wrbt) iCal 3.0.2" [39.8 ms]
132.227.104.12 - ical2 [10/Apr/2008:16:29:47 +0200] "PROPFIND /calendars/users/ical2/inbox/ HTTP/1.1" 207 497 "-" "DAVKit/2.0 (10.5.2; wrbt) iCal 3.0.2" [28.5 ms]
132.227.104.12 - ical2 [10/Apr/2008:16:29:47 +0200] "PROPFIND /calendars/users/ical2/inbox/ HTTP/1.1" 207 452 "-" "DAVKit/2.0 (10.5.2; wrbt) iCal 3.0.2" [29.1 ms]
132.227.104.12 - ical2 [10/Apr/2008:16:30:43 +0200] "PROPPATCH /calendars/users/ical2/inbox/ HTTP/1.1" 207 388 "-" "DAVKit/2.0 (10.5.2; wrbt) iCal 3.0.2" [53.1 ms]
132.227.104.12 - ical2 [10/Apr/2008:16:30:43 +0200] "PROPFIND /principals/__uids__/D56DE1AE-2B7C-4469-9F90-B3FC391C497C/ HTTP/1.1" 207 1188 "-" "DAVKit/2.0 (10.5.2; wrbt) iCal 3.0.2" [23.6 ms]
132.227.104.12 - ical2 [10/Apr/2008:16:30:43 +0200] "PROPFIND /principals/__uids__/D56DE1AE-2B7C-4469-9F90-B3FC391C497C/ HTTP/1.1" 207 321 "-" "DAVKit/2.0 (10.5.2; wrbt) iCal 3.0.2" [11.4 ms]
error.log
2008-04-10 16:29:45+0200 [-] [caldav-8009] [AMP,client] Unauthenticated users not enabled with the 'calendar' SACL
2008-04-10 16:29:45+0200 [-] [caldav-8009] [AMP,client] Provisioning file: <DirectoryPrincipalProvisioningResource: /Library/CalendarServer/Documents/principals>
2008-04-10 16:29:45+0200 [-] [caldav-8009] [AMP,client] Provisioning file: <DirectoryPrincipalUIDProvisioningResource: /Library/CalendarServer/Documents/principals/__uids__>
2008-04-10 16:29:45+0200 [-] [caldav-8009] [AMP,client] "Directory service <SudoDirectoryService '/Search': FilePath('/etc/caldavd/sudoers.plist')> has no GUID; generating service GUID from realm name."
2008-04-10 16:29:45+0200 [-] [caldav-8009] [AMP,client] Provisioning file: (users) ical2
2008-04-10 16:29:45+0200 [-] [caldav-8009] [AMP,client] PROPFIND /principals/__uids__/D56DE1AE-2B7C-4469-9F90-B3FC391C497C/ HTTP/1.1
2008-04-10 16:29:46+0200 [-] [caldav-8009] [-] Provisioning file: <CalendarHomeTypeProvisioningFile: /Library/CalendarServer/Documents/calendars/users>
2008-04-10 16:29:46+0200 [-] [caldav-8009] [-] Provisioning file: <CalendarHomeFile: /Library/CalendarServer/Documents/calendars/users/ical2>
2008-04-10 16:29:46+0200 [-] [caldav-8009] [-] Initializing database /Library/CalendarServer/Documents/calendars/users/ical2/calendar/.db.sqlite
2008-04-10 16:29:46+0200 [-] [caldav-8009] [-] Provisioning file: <ScheduleInboxFile (calendar inbox collection): /Library/CalendarServer/Documents/calendars/users/ical2/inbox>
2008-04-10 16:29:46+0200 [-] [caldav-8009] [AMP,client] Unauthenticated users not enabled with the 'calendar' SACL
2008-04-10 16:29:46+0200 [-] [caldav-8009] [AMP,client] PROPFIND /calendars/users/ical2/inbox/ HTTP/1.1
2008-04-10 16:29:46+0200 [-] [caldav-8009] [-] Provisioning file: (users) ical2 [calendar-proxy-read]
2008-04-10 16:29:46+0200 [-] [caldav-8009] [-] Provisioning file: (users) ical2
2008-04-10 16:29:46+0200 [-] [caldav-8009] [-] Provisioning file: (users) ical2 [calendar-proxy-read]
2008-04-10 16:29:46+0200 [-] [caldav-8009] [-] Initializing database /Library/CalendarServer/Documents/principals/.db.calendaruserproxy
2008-04-10 16:29:46+0200 [-] [caldav-8009] [-] Provisioning file: (users) ical2 [calendar-proxy-write]
2008-04-10 16:29:46+0200 [-] [caldav-8009] [-] Provisioning file: (users) ical2
2008-04-10 16:29:46+0200 [-] [caldav-8009] [-] Provisioning file: (users) ical2 [calendar-proxy-write]
2008-04-10 16:29:46+0200 [-] [caldav-8009] [AMP,client] PROPFIND /principals/__uids__/D56DE1AE-2B7C-4469-9F90-B3FC391C497C/ HTTP/1.1
2008-04-10 16:29:46+0200 [-] [caldav-8009] [AMP,client] PROPFIND /calendars/users/ical2/ HTTP/1.1
2008-04-10 16:29:46+0200 [-] [caldav-8009] [AMP,client] PROPFIND /calendars/users/ical2/calendar/ HTTP/1.1
2008-04-10 16:29:47+0200 [-] [caldav-8009] [AMP,client] PROPFIND /calendars/users/ical2/calendar/ HTTP/1.1
2008-04-10 16:29:47+0200 [-] [caldav-8009] [AMP,client] PROPFIND /calendars/users/ical2/inbox/ HTTP/1.1
2008-04-10 16:29:47+0200 [-] [caldav-8009] [AMP,client] PROPFIND /calendars/users/ical2/inbox/ HTTP/1.1
2008-04-10 16:30:43+0200 [-] [caldav-8010] [-] AMP connection established (HOST:UNIXSocket(None) PEER:UNIXSocket('/var/run/caldavd-pydir.sock'))
2008-04-10 16:30:43+0200 [-] [caldav-8009] [AMP,client] PROPPATCH /calendars/users/ical2/inbox/ HTTP/1.1
2008-04-10 16:30:43+0200 [-] [caldav-8010] [AMP,client] "Directory service <SudoDirectoryService '/Search': FilePath('/etc/caldavd/sudoers.plist')> has no GUID; generating service GUID from realm name."
2008-04-10 16:30:43+0200 [-] [caldav-8010] [AMP,client] PROPFIND /principals/__uids__/D56DE1AE-2B7C-4469-9F90-B3FC391C497C/ HTTP/1.1
2008-04-10 16:30:43+0200 [-] [caldav-8009] [AMP,client] PROPFIND /principals/__uids__/D56DE1AE-2B7C-4469-9F90-B3FC391C497C/ HTTP/1.1
ls -al@ Documents/principals/__uids__/D56DE1AE-2B7C-4469-9F90-B3FC391C497C/calendar-proxy-read/
total 0
drwxr-x--- 2 _calendar _calendar 68 Apr 10 16:29 .
drwxr-x---@ 4 _calendar _calendar 136 Apr 10 16:29 ..
WebDAV:{http:%2F%2Ftwistedmatrix.com%2Fxml_namespace%2Fdav%2Fprivate%2F}record-type 123
cd calendars/users/
mv ical2 ical1
cd principals/__uids__/
mv D56DE1AE-2B7C-4469-9F90-B3FC391C497C 01A16B4C-3AF6-4E8A-A02C-EFD1BA05C2F6
mv D56DE1AE-2B7C-4469-9F90-B3FC391C497C#calendar-proxy-read 01A16B4C-3AF6-4E8A-A02C-EFD1BA05C2F6#calendar-proxy-read
mv D56DE1AE-2B7C-4469-9F90-B3FC391C497C#calendar-proxy-write 01A16B4C-3AF6-4E8A-A02C-EFD1BA05C2F6#calendar-proxy-write
cal1
dsAttrTypeNative:apple-serviceslocator : E552D587-450C-42D9-9C11-94FB53CB0991:3F61A360-86F2-4376-BB5B-EC85B94F8271:calendar
Dans Workgroup Manager créer un utilisateur, dans l'onglet Advanced, cocher la case Enable calendaring et choisir le serveur d'agenda calDAV. Si il n'y a pas de serveur dans la liste, il faut faire le lien depuis le serveur CalDAV.
C'est que le compte Open Directory a été créé sur une ancienne version du serveur, le champs LastName de la personne est "99" (très ancienne erreur de ServerAdmin). Pour corriger, sur Server Admin, aller dans l'onglet Info de la personne.
Plus exactement, lorsque l'on crée une fiche avec le Gestionnaire de groupe de travail (Workgroup Manager), on remplit le champ Name et WM va automatiquement remplir divers les champs en découpant Name en supposant que la premier mot est le prénom et que le dernier mot est le nom de famille. Si ce n'est pas correct (par exemple si vous avez mis comme moi le nom en premier), il faut cliquer sur l'onglet Info et remplir les rubriques.
Listes des rubriques du gestionnaire de groupe de travail (WM) et correspondance LDAP.
Rubrique WM | rubrique LDAP | Commentaire |
Name (onglet Basic) | RealName | |
User ID | uniqueID | |
Short Names | RecordName et uid | RecordName contient aussi le nom complet. Il est utilisé aussi pour les alias de mail |
Name (onglet Info) Prénom puis Nom | givenName et sn | Il y a deux champs, le premier Prénom et le deuxième Nom de famille |
Address (Street) | ||
Address (City) | ||
Address (State / Province) | ||
Address (Zip) | ||
Address (Country) | ||
Phone | ||
à vérifier | ||
Chat | apple-imhandle | exemple JABBER:login@{FQDN} |
Homepage | ||
Weblog | ||
calendaring | apple-serviceslocator | GeneratedUID du serveur d'agenda:adresse-Hexa:calendar |
Le répertoire où sont stockés les calendriers contient :
/Library/CalendarServer/Documents
# ls -al@
drwxr-x---@ 2 _calendar _calendar 68 Oct 4 2007 .
WebDAV:{DAV:}acl 136
drwxrwxr-x 3 root admin 102 Oct 4 2007 ..
puis
Localisation | Contenu | Commentaire |
principles/<users | groups > | Dossiers des tous les utilisateurs autorisés à utiliser les calendriers et qui se sont connectés | |
principles/<resources | locations> | Dossiers de toutes les ressources ou salles avec des calendriers | |
principles/sudoers | Dossiers de tous les administrateurs de calendriers | pas vu |
principals/__uids__ | Dossiers de tous les utilisateurs, groupes, ressources ou salles qui utilisent un directory-record comme nom d'identification | |
principles/<users | groups>/<username> | Ressource http qui représente le calendriers de la personne ou du groupe | |
principles/<users | groups>/<username>/calendar-proxy-read principles/<users | groups>/<username>/calendar-proxy-write |
Identifie le 'principal' utilisé pour fournir les droits de délégation pour les autres. | |
calendars/<users | groups> | Dossiers de chaque utilisateur ou groupe qui a créé au moins un calendrier, un événement ou un 'todo'. | |
calendars/<resources | locations> | Dossiers de cahque ressource ou salle qui a accepté au moins un calendrier, un événement ou un 'todo'. | |
calendars/<users | groups | resources | locations>/<name>/calendar | Contains iCalendar (.ics) files of each event in the principles calendar. | |
calendars/<users | groups | resources | locations>/<name>/inbox | Contains iTIP file invitations to other users pending events. | |
calendars/<users | groups | resources | locations>/<name>/outbox | Contains iTip file invitations waiting to be distributed to invitees. | |
calendars/<users | groups | resources | locations>/<name>/dropbox | Contains files attached to events, either from a users self-created event or from participant events. |
Les process suivants sont en attente.
root a lancé :
Python /usr/share/caldavd/bin/twistd -n caldav
Python /usr/share/caldavd/bin/pydir.py /tmp/pydKHe7
agenda est propriétaire de 8 process de type :
Python /usr/share/caldavd/bin/twistd -u calendar -g calendar -n caldav -f /etc/caldavd/caldavd.plist -o ProcessType=Slave -o BindAddresses=127.0.0.1 -o PIDFile=None -o ErrorLogFile=None -o MultiProcess/ProcessCount=8 -o BindHTTPPorts=8009 -o BindSSLPorts=8444
Python /usr/share/caldavd/bin/twistd -u calendar -g calendar -n caldav -f /etc/caldavd/caldavd.plist -o ProcessType=Slave -o BindAddresses=127.0.0.1 -o PIDFile=None -o ErrorLogFile=None -o MultiProcess/ProcessCount=8 -o BindHTTPPorts=8010 -o BindSSLPorts=8445
Le fichier /etc/caldavd/sudoers.plist contient par défault
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>users</key>
<array>
<dict>
<key>password</key>
<string>mot-de-passe-codé</string>
<key>username</key>
<string>wikiserver</string>
</dict>
</array>
</dict>
</plist>
Sur le serveur OD, la liste des serveurs de calendriers est vide dans Enable calendaring (onglet Advanced) en sélectionnant un utilisateur.
Sur une machine qui fonctionne :
guid 500 : com.apple.monitor_calendar
Au moment de l'activation du service iCal, message : No Virtual host found for iCal service
Solution : Sur le serveur CalDAV, ouvrir l'utilitaire d'annuaire (Diretory Utility),
Mars/avril 2008. Page élaborée en collaboration avec Jean-Baptiste Voron.
|