Apr 07

Nextcloud mit 2-Faktor-Authentifizierung

Mit einem Stick für weniger als 8 Euro lässt sich mittlerweile bequem eine 2-Faktor-Authentifizierung für Nextcloud realisieren.
Was ist dafür notwendig?
1. Einen FIDO kompatiblen Stick bestellen (z. B. HyperFIDO mini)
2. Einen FIDO kompatiblen Browser verwenden. Das sind derzeit entweder Chrome (Nein Danke, Google) oder Firefox. In Firefox muss man derzeit noch folgende Zusatzschritte einmalig durchführen:
– about:config im Browser eintippen
– Im Suchfeld „u2f“ suchen
– In der Einstellung security.webauth.u2f den Wert auf „true“ stellen
3. Als Admin in Nextcloud die App „Two Factor U2F“ aktivieren
4. Als Benutzer (!) in Nextcloud unter Einstellungen->Sicherheit:
– Backup-Codes erzeugen und sie ausdrucken und zusätzich speichern (sinnvollerweise außerhalb von Nextcloud ;-))
– U2F-Stick anstecken im Feld „Name your device“ einen Namen vergeben (v. a. falls man mehrere Sticks einsetzen möchte) und auf „U2F-Gerät hinzufügen“ klicken.
=> Danach ist das Account mit dem Stick verknüpft und man braucht für eine Anmeldung dieses Users zusätzlich zu Username/Passwort auch noch einen Klick auf den Button am Stick oder einen der Backup-Codes.

Feb 10

User Provisioning API für Nextcloud/Owncloud in Shared Hosting Umgebungen nutzen

Nextcloud / Owncloud ist mittlerweile ja nicht nur DIE Alternative zu Dropbox für Freunde der informationellen Selbstbestimmung, sondern durch diverse Apps noch viel mehr. Ich nutze z. B. den integrierten Mailclient Rainloop gerne.

Wer das ganze für einen größeren Personenkreis nutzen möchte, der kommt früher oder später an den Punkt, dass er sich um Benutzerverwaltung eigentlich nicht von Hand kümmern möchte. Klar, im professionellen Umfeld hat man einen LDAP-Server oder einen SSO-Dienst. Aber auch wenn’s eine Nummer kleiner sein soll, dann hat man dafür gute Chancen. Um die Entwicklung von Apps und Anwendungen zu erleichtern gibt es nämlich eine toll dokumentierte User Provisioning API. Leider geht die in den aufgeführten Beispielen davon aus, dass man einen Shell-Zugriff auf den Server hat und Befehle in der Konsole ausführen kann. In Shared Hosting Umgebungen ist ein Shell-Zugriff aber in der Regel so kastriert, dass man ihn dafür nicht nutzen kann. Glücklicherweise funktionieren die Aufrufe auch über ein Webinterface und sind damit z. B. über CURL mit PHP ansprechbar.

Damit sich nicht jeder das ganze selbst zusammenreimen muss, habe ich eine Klasse geschrieben und unter Github veröffentlicht: https://github.com/ddwgitlab/nextcloud_user_provisioning.
Außerdem habe ich noch ein paar nette Funktionen eingebaut, denen man z. B. nur ein Array mit Usernamen und Passwörter übergeben muss, die dann alle schön abgearbeitet werden.

Viel Spaß und Erfolg damit.

Okt 22

Owncloud-Kontakte mit Carddav und iOS 7

Owncloud ist eine tolle Sache. Und die Synchronisation der dort gespeicherten Kontakte mit iOS war auch kein Problem. Bis das iOS7 Update kam. Danach hat es mich schon mehrere Abende gekostet, bis ich es wieder zum Laufen bekommen habe (weil iOS7 hier leider einen folgenschweren Bug hat). Hier der Workaround für alle anderen, die es auch getroffen hat:

  1. Einstellungen->Mail,Kontakte, Kalender anwählen
  2. Bestehendes Owncloud-Account auf dem iOS-Gerät löschen. (Ja. Wirklich.)
  3. Account hinzufügen->Andere->CardDAV-Account hinzufügen
  4. Als Server nur den Servernamen (z. B. „meinecloud.de“) angeben. (Kein HTTP://, kein Verzeichnis…)
  5. Benutzername, Passwort und Beschreibung wie üblich eingeben und auf „Weiter“ klicken.
  6. iOS bringt eine Fehlermeldung. Auf „Fortfahren“ klicken.
  7. Auf „Erweiterte Einstellungen“ klicken, SSL anschalten, Port 443 eingeben und bei Account-URL die volle URL angeben, also z. B. „https://meinecloud.de/remote.php/carddav/principals/BENUTZERNAME“
  8. Auf „Weiter“ klicken. Es kommt wieder eine Fehlermeldung. Wieder auf „Fortfahren“ klicken.
  9. Erneute Fehlermeldung. Auf „Sichern“ klicken.
  10. Unter „Kontakte“->Gruppen die neue Gruppe entdecken und anwählen.
  11. Dabei zusehen, wie die Kontakte wieder auf dem Gerät landen 😉