Module 5 · 5.1
Nederlands
CalDAV en CardDAV: hoe agenda en contacten synchroniseren
Module 5: Agenda en contacten · Leestijd: 10 minuten
Leerdoel: Na deze les kun je uitleggen hoe CalDAV en CardDAV je agenda en contacten tussen server en apparaten gelijk houden, waarom je ze pas merkt als je een app instelt, en welke gegevens je nodig hebt om een app te koppelen.
Kernbegrippen: CalDAV, CardDAV, WebDAV, synchroniseren, server-adres, .well-known/caldav, .well-known/carddav, principal, app-wachtwoord, Exchange ActiveSync, standaardagenda
Agenda en contacten wonen op een server
Bij Google en Microsoft merk je niet hoe je agenda op je telefoon komt. Je logt in met je account, en de agenda en contacten zijn er. Achter de schermen gebruiken ze daarvoor vaak hun eigen manier van synchroniseren: Microsoft gebruikt Exchange ActiveSync en eigen koppelingen, Google zijn eigen account-synchronisatie op Android.
Bij een Europese aanbieder gaat het bijna altijd via twee open standaarden:
- CalDAV (RFC 4791) voor agenda's en takenlijsten;
- CardDAV (RFC 6352) voor contactpersonen.
Beide bouwen voort op WebDAV, een uitbreiding van het gewone webverkeer (HTTPS) waarmee je bestanden op een server kunt lezen en schrijven. Een afspraak is voor CalDAV een klein bestand in iCalendar-formaat (les 5.2), een contactpersoon een klein bestand in vCard-formaat. De server bewaart die bestanden in een map per agenda of adresboek. Je telefoon, je laptop en de webagenda vragen elke paar minuten: "wat is er veranderd sinds de vorige keer?" en halen alleen de wijzigingen op.
iPhone <--CalDAV/HTTPS--> server: /calendars/anne/werk/ <--CalDAV--> laptop (Thunderbird)
^
|
webagenda in de browserHet grote voordeel van een open standaard: je bent niet vast aan één app. De agenda-app van je iPhone, DAVx5 op Android, Thunderbird, de Agenda op de Mac en veel andere apps spreken CalDAV. Stap je later weer over naar een andere aanbieder die ook CalDAV heeft, dan stel je dezelfde apps opnieuw in.
Waarom je het niet ziet tot je een app instelt
Na het overzetten van je agenda (les 5.2 en 5.3) staat alles keurig in de webagenda van je nieuwe dienst. Je telefoon weet daar nog niets van. Er is geen app die vanzelf verschijnt: je moet op elk apparaat een account toevoegen. Daarvoor heb je drie dingen nodig:
| Gegeven | Voorbeeld bij Bakkerij De Korrel |
|---|---|
| Het server-adres | https://cloud.example.com of het volledige DAV-adres, zoals https://cloud.example.com/remote.php/dav |
| De gebruikersnaam | anne |
| Een wachtwoord | een app-wachtwoord, zie hieronder |
Het server-adres en .well-known
Elke dienst heeft een eigen pad waar CalDAV en CardDAV wonen. Bij Nextcloud is dat /remote.php/dav, bij andere servers iets anders. Om te voorkomen dat iedereen dat pad moet weten, is er een afspraak (RFC 6764): een app die alleen de domeinnaam krijgt, kijkt eerst op een vaste plek:
https://cloud.example.com/.well-known/caldav
https://cloud.example.com/.well-known/carddavDe server antwoordt daar met een doorverwijzing naar het echte pad. Werkt die doorverwijzing goed, dan hoef je in je iPhone alleen cloud.example.com in te vullen. Werkt hij niet, dan zegt de app "kan account niet verifiëren" en moet je het volledige adres invullen. Dezelfde RFC beschrijft ook SRV-records (_caldavs._tcp.example.com) waarmee een app vanaf je e-maildomein de server kan vinden. Niet elke app gebruikt die.
Daarna vraagt de app de server naar je principal: de vaste plek van jouw account op de server, met de lijst van jouw agenda's en adresboeken. Zo vindt de app vanzelf alle agenda's, ook die met je gedeeld zijn.
Waarom je een app-wachtwoord nodig hebt
De meeste Europese clouddiensten vragen bij het inloggen in de browser een tweede stap: een code per e-mail, een authenticator-app of een passkey. Een agenda-app op je telefoon kan die tweede stap niet invullen. Hij heeft alleen een veld voor gebruikersnaam en wachtwoord.
Daarom maak je voor zo'n app een app-wachtwoord: een lang, willekeurig wachtwoord dat alleen voor die ene app geldt. Je maakt het in de beveiligingsinstellingen van je cloud, geeft het een herkenbare naam ("Agenda iPhone Anne") en vult het in de app in.
Voordelen:
- Je echte wachtwoord staat niet op je telefoon.
- Raak je je telefoon kwijt, dan trek je alleen dat ene app-wachtwoord in; de rest blijft werken.
- Verander je je gewone wachtwoord, dan blijven je apps werken.
Sommige apps kunnen ook inloggen via de browser: ze openen het inlogscherm van je cloud, jij doet daar de tweede stap, en de app krijgt zelf een app-wachtwoord. DAVx5 op Android kan dat met Nextcloud bijvoorbeeld.
De bekendste foutmelding bij agenda-apps is 401 Unauthorized. Bijna altijd betekent dat: je hebt je gewone wachtwoord gebruikt in plaats van een app-wachtwoord, of het app-wachtwoord is ingetrokken.
Exchange-agenda's en wat je verliest
Wie van Microsoft 365 komt, is gewend aan een paar dingen die met CalDAV anders of niet werken:
- Vrij/bezet zien van collega's bij het plannen. Nextcloud en andere CalDAV-servers hebben een eigen vorm (beschikbaarheid binnen dezelfde server), maar die werkt niet tussen verschillende diensten en niet altijd in elke app.
- Ruimtes en apparaten boeken (vergaderzaal, beamer). Sommige servers hebben resource-agenda's, andere niet.
- Gedelegeerde toegang ("de secretaresse beheert de agenda van de directeur"). Bij CalDAV regel je dat met delen met bewerkrechten.
Zet dat op je lijst (module 3). Het is zelden een reden om niet over te stappen, maar collega's moeten het wel vooraf weten.
In de praktijk: zo ziet het eruit bij een aanbieder
In een WebOké Nextcloud vind je de adressen in de app Agenda, linksonder bij Agenda instellingen: de CalDAV URL en het Server adres voor iOS en macOS, elk met een kopieerknop. Het algemene adres is https://<jouw-adres>/remote.php/dav. Een app-wachtwoord maak je bij Instellingen, Beveiliging, Apparaten & sessies. Daar zie je later ook welk apparaat wanneer voor het laatst contact had, en trek je een app-wachtwoord in. Andere Nextcloud-aanbieders werken precies zo; bij andere Europese diensten (bijvoorbeeld mailbox.org, Posteo of een Open-Xchange-omgeving) staat het CalDAV-adres in de hulppagina's of de instellingen, en heten app-wachtwoorden soms "apparaatwachtwoord" of "applicatiewachtwoord".
Samenvatting
- CalDAV (agenda, taken) en CardDAV (contacten) zijn open standaarden boven op WebDAV en HTTPS; elke wijziging is een klein bestand op de server.
- Je moet op elk apparaat zelf een account toevoegen: server-adres, gebruikersnaam en een app-wachtwoord.
- Via
.well-known/caldaven.well-known/carddavvindt een app het echte pad vanaf alleen de domeinnaam; werkt dat niet, vul dan het volledige DAV-adres in. - Een app-wachtwoord is nodig omdat agenda-apps geen tweede inlogstap kunnen doen; een 401-melding betekent bijna altijd een verkeerd wachtwoord.
- Exchange-functies als vrij/bezet tussen collega's, ruimtes boeken en delegatie werken anders; zet ze op je lijst.
Quiz
Opdracht
Opdracht A5.1: Vindt een app jouw agenda? Vul het adres van je (nieuwe) cloud in, bijvoorbeeld cloud.example.com. Het programma kijkt of /.well-known/caldav en /.well-known/carddav goed doorverwijzen naar een DAV-pad, en of de server daar als DAV-server antwoordt. Zo weet je of je op een telefoon alleen de domeinnaam kunt invullen.
Verder lezen
De stappen in deze artikelen gelden voor de diensten van WebOké; bij andere aanbieders werkt het vergelijkbaar.
- Nextcloud handleiding 3.5: App-wachtwoorden: wanneer en hoe
- Nextcloud handleiding 9.9: Agenda en contacten op de iPhone en iPad
- Nextcloud handleiding 9.10: Agenda en contacten op Android met DAVx5
- Nextcloud handleiding 15.6: Agenda of contacten komen niet op de telefoon
- App-wachtwoord aanmaken (nodig om te verbinden met apps en apparaten)
- RFC 4791 (CalDAV), RFC 6352 (CardDAV), RFC 4918 (WebDAV), RFC 6764 (.well-known en SRV voor CalDAV en CardDAV)
