Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Nextcloud-Verbindung auf Ebene #52

Closed
richardjubla opened this issue Jul 12, 2023 · 14 comments
Closed

Nextcloud-Verbindung auf Ebene #52

richardjubla opened this issue Jul 12, 2023 · 14 comments

Comments

@richardjubla
Copy link
Contributor

User-Story

Als Schar (Ebene/Gruppe) möchte ich meinen Mitgliedern und Ehrenamtlichen kollaborativ nutzbaren Speicherplatz und Dokumentablage/Dokumentbearbeitung mit einer eigenen Nextcloud-Instanz ermöglichen. Sie kann die Nextcloud-Instanz in der jubla.db Eintragen und damit können sich alle in der Gruppe verwalteten Menschen (Mitglieder) direkt in Nextcloud anmelden und haben dort die jeweils gültigen Berechtigungen (Rollen) aus der jubla.db.

hitobito/hitobito#1854

Aspekte

  • Die jubla.db (Hitobito) ermöglicht die Einbindung (Verknüpfung) der Open Source Software Nextcloud auf Basis einer einzelnen Schar (Ebene/Gruppe).

Wir suchen bestehende Lösungen, die für die Jubla-Welt anpassbar und zugänglich sind. Das heisst, wir setzen auf Lösungen, die auch von Personen, die sich zukünftig in der Jubla engagieren möchten, weiterentwickelt werden können, insbesondere gut dokumentierte Open-Source-Software.

Nextcloud ist eine freie Software für das Speichern von Daten (z. B. Dateien, Kalender, Kontakte etc.) auf einem Server. Auf die Daten kann der Anwender sowohl über eine Weboberfläche als auch mit Client-Applikationen (Smartphone und Desktop) zugreifen. Server und Clients können sich dabei synchronisieren. Nextcloud ermöglicht dem Anwender dadurch, auf einen zentralen und konsistenten Datenbestand von vielen Endgeräten aus zuzugreifen und diesen mit anderen Anwendern optional zu teilen. Neben der Datenhaltung bietet Nextcloud Funktionalitäten für Videokonferenzen und verschiedene Office-Applikationen über die Weboberfläche.Über Nextcloud und ausgewählte Add-Ons wäre Kollaboration (OnlyOffice) bis hin zu Projektmanagement (OpenProject) über den kompletten Verein möglich.

Integration: Die jubla.db und Nextclound können zusammen kombiniert werden. Hitobito setzt mit einem Partner dieses Projekt aktuell um. Gemäss Interpretation/Wissensstand soltle dies ein stark gewünschtes Bedürfnis der Scharen und KaLeis abdecken.

Kosten: Je nach Auslegung ist Nextcloud “die einzige Lösung”, um ein kompetitives Angebot zur Konkurrenz der Cloud-Anbieter (Microsoft/Google/etc.) entgegenzuhalten.

Chance/Innovation: Die Erweiterung der Datenbank um Kollaborations-Services und Cloud-Speicher ist ein Bedürfnis und wäre ein logische Innovation auch entsprechend der Vision der Datenbank. Die Datenbank könnte hier mit einem Angebot einen signifikanten Beitrag zur Digitalisierung und Stärkung der Scharen leisten.

Risiken: In direkter Konkurrenz zu Cloud-Anbietern bergen die Support/Wartungskosten, eingeschränkter Leistungsumfang oder Schulungsaufwand das Risiko für gescheiterte Projekte. Es darf keine strategische Verbindung, Zwang oder Abhängigkeit zwischen der Datenbank und einer Nextcloud Instanz entstehen.

Definition of Done

  • Die Verbindung zwischen jubla.db und Nextcloud wird von der FG Datenbank weiterverfolgt (Ebene Schar)
  • FG Datenbank kennt die wichtigsten Faktoren (Technik, Kosten, Abhängigkeiten)
  • FG Datenbank kann evtl. bereits Implementierung testen
  • Dokumentation: Schritt-für-Schritt Anleitung für Scharen (inkl. Hinweise für Nextcloud) / Erfolgt durch jubla/FG DB
@richardjubla
Copy link
Contributor Author

Die @jubla-ch hat in der FG Datenbank ein Team (>4P.) welches sich mit der Thematik befasst. Das Commitment für die Storry ist da. Neben unterschiedlichen Interessenvertretungen aus dem Jubla-Umfeld sind auch explizite Kenntnisse und auch Eigenleistungen vorhanden.

Siehe Erweiterung für die Verbindung zwischen Nextcloud Gruppen und Hitobito Rollen
nextcloud groups unique for group and role
https://github.com/bergerar/hitobito_jubla/tree/nextcloud_groups

@richardjubla richardjubla mentioned this issue Sep 22, 2023
3 tasks
@richardjubla
Copy link
Contributor Author

Feature soll im Verlauf vom Dezember auf Stage-Umgebung ankommen.

@richardjubla
Copy link
Contributor Author

Nur als Info: Es gibt auch Informationen zu Nextcloud im Hitobito "development kit" https://github.com/hitobito/development/#nextcloud

@richardjubla
Copy link
Contributor Author

Nur als Info: Eine Nextcloud Instanz (von der Stange) exklusiv für Testzwecke steht auf Seiten Jubla/FG Datenbank bereit.

@richardjubla
Copy link
Contributor Author

Lieber @ThomasEllenberger

Wir müssen davon ausgehen, dass Eine Nextcloud Instanz (von der Stange) noch angepasst werden muss, damit es mit Hitobito verbunden werden kann. Bitte deshalb diese Informationen bereitstellen.

@richardjubla richardjubla mentioned this issue Nov 30, 2023
44 tasks
@richardjubla
Copy link
Contributor Author

Lieber @ThomasEllenberger

Viel Freude zum aktivierten Feature! Und eine erste Frage:

Unsere Test-Nexcloud meldet:

Impossible to decode OIDC token:Error: kid must be provided in JWT header.

Deshalb frage ich mit Bezug auf das "Manual": Wurde das JWT-Signing eingerichtet?

@kronn
Copy link
Member

kronn commented Dec 12, 2023

Hoi @richardjubla

Unsere Test-Nexcloud meldet:

Impossible to decode OIDC token:Error: kid must be provided in JWT header.

Deshalb frage ich mit Bezug auf das "Manual": Wurde das JWT-Signing eingerichtet?

Ja, es ist ein JWT-Signing-Key sowohl in der integration als auch in der production vorhanden und entsprechend verlinkt. Daran sollte es zumindest nicht liegen.

@carlobeltrame
Copy link
Member

Die Einstellungen für das native Nextcloud OIDC Plugin könnten hier herausgelesen und adaptiert werden:
https://github.com/hitobito/development/blob/master/nextcloud/setup/setup.sh#L31..L38
Welche Einstellungen welchen deutschen Namen in eurem Nextcloud UI haben müsst ihr halt anhand der technischen Bezeichnungen zuordnen. Oder den hitobito-Nextcloud Dev Setup lokal starten und die Einstellungen dort rauslesen.

@richardjubla
Copy link
Contributor Author

Die Einstellungen für das native Nextcloud OIDC Plugin könnten hier herausgelesen und adaptiert werden: https://github.com/hitobito/development/blob/master/nextcloud/setup/setup.sh#L31..L38 Welche Einstellungen welchen deutschen Namen in eurem Nextcloud UI haben müsst ihr halt anhand der technischen Bezeichnungen zuordnen. Oder den hitobito-Nextcloud Dev Setup lokal starten und die Einstellungen dort rauslesen.

Danke für deinen Beitrag zu diesem Ticket, @carlobeltrame. Da ich nicht weiss ob du dich auf etwas spezifisches beziehst gebe ich ein Update unserer Situation:

Die Verbindung zwischen Hitobito und Nextcloud "funktioniert" in der Stage-Umgebung: Ein Profil welches an beiden Orten angelegt wird (Nextcloud/Hitobito), kann sich aus Hitobito heraus direkt in der Nextcloud anmelden.

Für das "Rollen/Gruppenmapping" habe ich folgende Informationen:

Hier meine Gedanken zu den Rollen:

  • Zugang zu Nextcloud sollen "nur" aktive Vereinsmitglieder haben. Konkret sind das zum Beispiel Vorstand, Leiter*innen. Präses oder Coach. Nicht aber Kinder, Eltern oder Externe Kontakte. So wenig Accounts wie nötig. Öffentliche oder Netzwerk-Bedürfnisse für erweiterte Zielgruppen sind nicht über jubla.db/Nextcloud zu lösen.
  • Minimal wären somit zwei "Gruppen" für den "Vorstand" und die "Aktivmitglieder" nötig

Ebenen-Leitung/Vorstand (Nextcloud Zugang):
* Scharleitung
* Lagerleitung
* Kassier/in
* Adressverwaltung
* Leitung
* IT Support

Aktivmitglieder (Nextcloud Zugang):
* Leiter*in
* Mitglied
* Coach
* Präses
* Stellenbegleitung

Kein Nextcloud Zugang:
* Alle ohne Explizite Zuteilung/Rolle
* Kind
* Ehemalig
* Extern
* Versandadresse
* etc.

hitobito-nextcloud

@carlobeltrame
Copy link
Member

Alles klar, ich sehe, die Anbindung funktioniert mal, sieht schon mal gut aus.

Was mit der aktuellen Version von hitobito bzw. der Nextcloud-Anbindung noch nicht möglich ist, ist hitobito-seitig einigen Personen den Zugang zu Nextcloud zu verweigern und es anderen zu gewähren. Diese Entscheidung, wer sich einloggen darf und wer nicht, sehen wir bisher auf Seite der konsumierenden OAuth Applikation, also auf Seite Nextcloud.

Der aktuelle "Workaround" ist, das Nextcloud so zu konfigurieren dass Personen ohne Nextcloud-Gruppen praktisch keine Rechte haben. Sie können sich dann zwar via hitobito in Nextcloud einloggen, aber dort nichts weiter machen, keine Dateien ablegen etc.

Mit dem Code von Armin kann dann hitobito-seitig programmiert werden1, dass nur gewisse hitobito-Personen gewisse Nextcloud-Gruppen bekommen, wenn sie sich via hitobito in Nextcloud einloggen.

Der Code von Armin ist in der heutigen Form nicht sehr selektiv: Er verwendet mehr oder weniger einfach die Gruppen-ID bzw. den Gruppentyp als Nextcloud-Gruppennamen. Ihr könntet mit diesem Stand arbeiten und in Nextcloud einfach nur manuell selektiv an diejenigen Nextcloud-Gruppen die ihr wollt Rechte vergeben (z.B. allen Nextcloud-Gruppen die auf "-Vorstand" enden Vorstands-Rechte geben). Oder ihr könntet Armins Code verfeinern, sodass die nötige Logik (z.B. nur eine Nextcloud-Gruppe Vorstand und eine Nextcloud-Gruppe Aktivmitglieder) von hitobito an Nextcloud übergeben werden, je nach dem welche Rollen die sich einloggende Person hat.

Footnotes

  1. Dass diese Logik in hitobito implementiert wird, ist aus Architektur-Sicht nicht konsistent mit dem obigen Grundsatz. Das wurde auch schon kritisiert, aber da das Nextcloud-Plugin derzeit keine erweiterten Mapping-Optionen bietet ist das aktuell die beste Lösung die wir haben.

@bergerar
Copy link

bergerar commented Dec 18, 2023

@richardjubla

Ich würde jeweils pro Gruppe+Rolle eine eigene Gruppe in Nextcloud machen. Dann kann dann jede Organisation selber entscheiden welche Daten sie mit welchen Gruppen+Rolle teilen.

Das sieht dann in Nextcloud z.B so aus:
Screenshot 2023-12-18 at 19-37-46 Active users - Users - Users - Nextcloud

Ich habe noch meinen Vorschlag angepasst, damit die Nextcloud Gruppen nicht nur für Scharen sondern für alle Gruppen generiert werden. Habe dann auch einen Pull Request erstellt: #66

Bei den Rollen habe ich mich am Vorschlag von @richardjubla orientiert. Viele Rollen sind bereits über die generellen Rollen Definition der Jubla abgedeckt: https://github.com/hitobito/hitobito_jubla/pull/66/files#diff-bc4c6a968482163dded02d5148861eafd44c0d0e38eaaddf2c95532964b6b7c0

@richardjubla
Copy link
Contributor Author

Wenn für eine Schar/Ebene die Verbindung zwischen Hitobito/Nextcloud "funktionieren" soll, sollte sie als technisch nicht versierte Organisation nicht davon ausgehen müssen, dass jedes Hitobito-Profil mit einem Login sich auch auf ihre Nextcloud Instanz anmelden kann. Diesen Umstand will ich (bei uns) weiterverfolgen.
Wir werden die möglichen Ansätze in der "Architektur-Sicht", den Möglichkeiten zur Konfiguration einer Nextcloud-Instanz und der OpenID Connect-App gut wählen müssen.

@richardjubla
Copy link
Contributor Author

Abschlussbericht für diese Story nach ende des Inkrement:

  • Die Verbindung zwischen jubla.db und Nextcloud wurde von der FG Datenbank weiterverfolgt (Ebene Schar). Ein Pull Request steht Nextcloud groups #66.
  • FG Datenbank kennt wahrscheinlich die wichtigsten Faktoren (Technik, Kosten, Abhängigkeiten). Es bestehen aber noch Unsicherheiten und grosse Risiken im Bereich (Folge-)Kosten und dem Umstand, dass weder Hitobito noch Nextcloud zwischen den Ebenen/Gruppen unterscheiden kann.
    -FG Datenbank kann aktuell das Feature Nextcloud ohne Gruppen-Mapping sowohl auf Stage- wie Produktiv-Umgebung testen oder verwenden.
  • Es gibt noch keine Dokumentation oder Schritt-für-Schritt Anleitung für Scharen (inkl. Hinweise für Nextcloud) / Erfolgt durch jubla/FG DB

Weiter notwendige Schritte wären (Vorschlag für Pläne/DoD):

  • Pull Request Nextcloud groups #66 (Schätzung bekannt) umsetzten lassen
  • Entweder muss Nextcloud stark «konfiguriert» werden oder die Schar muss damit rechnen, dass jedes jubla.db-Profil (inkl. Selbstregistrierung) ein Profil in der Nextcloud erstellen kann. Es beleibt ein entscheidender Aspekt unserer Lösung, dass eine Schar (Ebene/Gruppe) ihre eigene Nextcloud-Instanz ohne technisches Expertenwissen nutzen kann. Story: Als Schar/Gruppe kann ich sicherstellen, dass nur Menschen in meiner Gruppe/Ebene Zugang zu meiner Nextcloud-Instanz/Daten erhalten.
  • Dokumentation oder Schritt-für-Schritt Anleitung für Scharen (inkl. Hinweise zu Nextcloud) wird durch die Fachgruppe Datenbank verfasst

@richardjubla
Copy link
Contributor Author

Interner Hinweis: Sollen die Nextcloud Benutzer sich gegenseitig nicht sehen: https://help.nextcloud.com/t/benutzer-vor-anderen-benutzern-verstecken/20325/14

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants