Teil 3: Benutzerverwaltung und -autentifizierung mit sabre/dav | datamate (2024)

In Teil 1 – Was ist sabre/dav? wurde die Synchronisationslösung für Termine, Kontakte und Aufgaben bereits vorgestellt. In Teil 2 – Installation von sabre/dav unter Ubuntu 16.04 wurden die notwendigen Befehle vorgestellt, um den eigenen sabre/dav-Server zu installieren. In diesem dritten Teil geht es nun darum den Dienst das erste Mal zu benutzen und die dafür benötigen User mit den entsprechenden Berechtigungen anzulegen. Gleichzeitig werden Sie beginnen die modulare Bauweise und die MySQL-Datenbank von sabre/dav kennen zu lernen.

Nach diesem Kapitels werden sie einen voll einsatzfähigen Synchronisationsserver haben. Ausserdem werden Sie wissen, wie Sie weitere Benutzer anlegen und verwalten können. Sie werden erste Schritte mit der MySQL-Datenbank machen, bevor es dann im vierten Teil um die Konfiguration der verschiedenen Clients gehen wird. Schon bald können Sie Ihre privaten Daten über alle Ihre Geräte und Betriebssysteme hinweg synchronisieren.

Anlage eines Benutzers mit einem eigenen Kalender und Adressbuch

Bietet sabre/dav eine Benutzerverwaltung?

SabreDAV does not provide an administrative interface to add users. While this may happen in the future, for now SabreDAV is mostly intended for developers.

Adding new users is done directly on the database. In order to allow a user to log in, add them to the users table. You must also add them to the principals table to enable calendar access.


– Evert Pot auf http://sabre.io/dav/caldav/

Dieses Zitat vom Entwickler Evert Pot soll Sie nicht entmutigen, aber auch nichts beschönigen: sabre/dav ist ein Framework von einem Entwickler für andere Entwickler. Die Installation der Software ist ziemlich gut beschrieben und sollte Ihnen durch den vorherigen Artikel nicht schwer gefallen sein. Aber bereits jetzt, wenn es an die Anlage von Benutzern geht, muss man sich selbst in der Datenbank zurechtfinden – oder eben diesen Artikel lesen. Worauf warten wir also?!?

Struktur der MySQL-Datenbank

Die zwei zentralen Tabellen für die Benutzerverwaltung von sabre/dav sind users und principals. Sie sehen diese Tabellen, wenn Sie sich mit dem vorher angelegten MySQL-User mit der MySQL-Datenbank verbinden. In der Tabelle users findet man den Benutzernamen und das gehashte Passwort digesta1, welche Sie verwenden um sich gegenüber sabre/dav zu authentifizieren.

mysql -u sabredav -pEnter password: Welcome to the MySQL monitor. Commands end with ; or \g....mysql> describe users;+----------+------------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+----------+------------------+------+-----+---------+----------------+| id | int(10) unsigned | NO | PRI | NULL | auto_increment || username | varbinary(50) | YES | UNI | NULL | || digesta1 | varbinary(32) | YES | | NULL | |+----------+------------------+------+-----+---------+----------------+

Die principals-Tabelle ist nur unwesentlich komplizierter. Die uri beschreibt den absoluten Pfad zu des zugehörigen Users und hat immer die Form 'principals/BENUTZERNAME und hinter displayname verbirgt sich immer der Name in der Form, wie er später auch dem Anwender angezeigt wird - also z.B. Christoph Dyllick.

mysql> describe principals;+-------------+------------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+-------------+------------------+------+-----+---------+----------------+| id | int(10) unsigned | NO | PRI | NULL | auto_increment || uri | varbinary(200) | NO | UNI | NULL | || email | varbinary(80) | YES | | NULL | || displayname | varchar(80) | YES | | NULL | |+-------------+------------------+------+-----+---------+----------------+

Anlage eines Benutzers

Beginne wir also mit ein paar MySQL-Befehlen um einen Benutzer anzulegen:

mysql> use sabredav;mysql> INSERT INTO users (username, digesta1) VALUES ('cdb',MD5('cdb:SabreDAV:meinPasswort'));mysql> INSERT INTO principals (uri, email, displayname) VALUES ('principals/cdb','cdb@datamate.org','Christoph Dyllick');

Nach diesen Datenbankeinträgen sollte sich der User cdb mit dem Passwort meinPasswort auf der Weboberfläche von sabre/dav oder per Client einloggen können. Wichtig: sabre/dav bietet keine Logout-Funktion, weshalb man nur wieder zum Login kommt, wenn man den Browser-Cache manuell leert und danach die Seite neu lädt.

Kalender und Adressbuch anlegen

Bisher haben wir nur den User cdb angelegt und noch keinen Kalender und kein Adressbuch angelegt. Dies muss nicht zwingend bei der Anlage eines Benutzers erfolgen, macht aber natürlich großen Sinn. Höchste Zeit also, um das zuvor genannte nachzuholen. Ein Adressbuch anzulegen ist dabei mit einem Befehl getan, wohingegen bei der Anlage eines Kalenders zwei Befehle und ein bischen Hirnschmalz gefordert ist.

# Zuerst legen wir das Adressbuch anmysql> INSERT INTO addressbooks (principaluri, displayname, uri, description, synctoken) VALUES ( 'principals/cdb', 'Adressbuch', 'addresses', NULL, '1' );+----+-----------------+-------------+-----------+-------------+-----------+| id | principaluri | displayname | uri | description | synctoken |+----+-----------------+-------------+-----------+-------------+-----------+| 1 | principals/cdb | Adressbuch | addresses | NULL | 1 |+----+-----------------+-------------+-----------+-------------+-----------+

Die Werte der Tabelle addressbooks sind fast selbsterklärend. principaluri zeigt, welchem Benutzer aus der Tabelle principals das Adressbuch gehört. displayname ist die Bezeichnung, die der Anwender später sieht und uri beschreibt den genauen Pfad im System (in einem folgenden Artikel mehr dazu...). Die description könnte beliebig gesetzt werden, wir aber meines Wissens von den wenigsten Clients überhaupt zur Anzeige gebracht. Viel spannender ist der Wert synctoken, der bei Clientanfragen hilft zu erkennen, ob es etwas zu synchronisieren gibt. Mit jedem zusätzlichen Eintrag oder jeder Änderung in den zum Adressbuch gehörenden Einträgen steigt der synctoken um eins. Wenn also zwischen der letzten und der aktuellen Synchronisation der synctoken gleich geblieben ist, muss nichts synchronisiert werden.

# Nun zur Anlage des Kalendersmysql> INSERT INTO calendars (synctoken, components) VALUES ('1', 'VEVENT,VTODO');mysql> select * from calendars;+----+-----------+--------------+| id | synctoken | components |+----+-----------+--------------+| 1 | 2 | VEVENT,VTODO |+----+-----------+--------------+mysql> INSERT INTO calendarinstances (calendarid, principaluri, access, displayname, uri) VALUES ( '1', 'principals/cdb', '1', 'Kalender', 'cfc80623-b1dd-4889-88fe-caa9de79902d');# Wichtige Hinweise: # calendarid (=1) ist die id aus der Tabelle calendars. Wenn in der Tabelle calendars die id = 200 steht, muss auch die 200 in der Tabelle calendarinstances stehen.# access kann die folgenden Werte annehmen: 1 = owner, 2 = readonly, 3 = readwrite# die uri muss nicht 32 Stellen haben. Sie kann auch deutlich kürzer sein, es muss jedoch sichergestellt werden, dass die uri einzigartig ist. Später mehr dazu.

Fazit: das Ziel des eigenen Termin- und Kontaktserver ist fast erreicht.

Endlich sind alle Vorbereitungen getroffen und nun kann es mit der Synchronisation losgehen. Es wurde der erste Benutzer mit Passwort angelegt, dieser Benutzer mit ausreichenden Berechtigungen versehen und ein erster Kalender und erstes Addressbuch angelegt. Im nächsten Teil dieser Serie wird es um die Synchronisation mit verschiedensten Clients gehen, bevor wir uns weiteren Funktionen von sabre/dav zuwenden.

Teil 3: Benutzerverwaltung und -autentifizierung mit sabre/dav | datamate (2024)

References

Top Articles
Facial hair removal: Can you use IPL on the face? | Philips
Craigslist Jobs Frederick Maryland
Evil Dead Rise Review - IGN
What Is a Megapixel: Essential Guide [Megapixels Explained]
Walmart Automotive Number
Steve Wallis Wife Age
Fbsm Berkeley
Erhöhte Gesundheitsgefahr durch Zuckeraustauschstoff Erythrit?
Terry Gebhardt Obituary
Sigma Aldrich Calculator
The 10 Best Drury Hotels in the United States
Thompson Center Thunderhawk Parts
What Does Purge Mods Do In Vortex
For My Derelict Favorite Novel Online
Sarah Dreyer Obituary
Non Sequitur-exemples et définition de Non Sequitur
Vector Driver Setup
Dow Futures Pre Market Cnn
Sour Animal Strain Leafly
Myzynrewards
Free 120 Step 2 Correlation
Diablo 3 Legendary Reforge
Kim Dotcom to fight extradition, says he won't get fair trial in US
Female Same Size Vore Thread
Elfqrindiscard
Snow Rider Unblocked 67
Ullu Web Series 123
Runescape Abyssal Beast
Aunt Nettes Menu
Freehold Township Patch
Lolalytics Aram
When Is The Next Va Millionaire Raffle 2023
Kathy Carrack
Bdo Passion Of Valtarra
Walmart Neighborhood Market Pharmacy Phone Number
Grand Forks (British Columbia) – Travel guide at Wikivoyage
Josh Bailey Lpsg
Bbc Weather In Mallorca
Intelligent intranet overview - SharePoint in Microsoft 365
Krua Thai In Ravenna
Jeld Wen Okta Com Login
NDS | Kosttilskud, Probiotika & Collagen | Se udvalget her
Ten Conservative Principles
Hyb Urban Dictionary
Left Periprosthetic Femur Fracture Icd 10
Crandon Skyward
How To Buy Taylor Swift Tickets By Navigating Ticketek's Stress-Inducing System
Ucla Outlook Web Access
Espn Ppr Fantasy Football Rankings
Craigslist Groton
Csuf Mail
Craigslist Sf Jobs Food And Beverage
Latest Posts
Article information

Author: Zonia Mosciski DO

Last Updated:

Views: 6036

Rating: 4 / 5 (51 voted)

Reviews: 90% of readers found this page helpful

Author information

Name: Zonia Mosciski DO

Birthday: 1996-05-16

Address: Suite 228 919 Deana Ford, Lake Meridithberg, NE 60017-4257

Phone: +2613987384138

Job: Chief Retail Officer

Hobby: Tai chi, Dowsing, Poi, Letterboxing, Watching movies, Video gaming, Singing

Introduction: My name is Zonia Mosciski DO, I am a enchanting, joyous, lovely, successful, hilarious, tender, outstanding person who loves writing and wants to share my knowledge and understanding with you.