hitobito / hitobito_jubla

A hitobito wagon defining the organization hierarchy and additional features for Jungwacht Blauring Schweiz.
Other
15 stars 13 forks source link

Nextcloud-Verbindung auf Ebene #52

Closed richardjubla closed 10 months ago

richardjubla commented 1 year ago

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.

https://github.com/hitobito/hitobito/issues/1854

Aspekte

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

richardjubla commented 1 year ago

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 commented 12 months ago

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

richardjubla commented 11 months ago

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

richardjubla commented 11 months ago

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

richardjubla commented 11 months ago

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 commented 11 months ago

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 commented 11 months ago

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 commented 11 months ago

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 commented 11 months ago

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:

Ebenen-Leitung/Vorstand (Nextcloud Zugang):

Aktivmitglieder (Nextcloud Zugang):

Kein Nextcloud Zugang:

hitobito-nextcloud

carlobeltrame commented 11 months ago

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 werden[^1], 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.

[^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 commented 11 months ago

@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: https://github.com/hitobito/hitobito_jubla/pull/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 commented 10 months ago

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 commented 10 months ago

Abschlussbericht für diese Story nach ende des Inkrement:

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

richardjubla commented 9 months ago

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

image