Nextcloud OIDC Identity Provider: Unterschied zwischen den Versionen

Aus Hostsharing Wiki
Zur Navigation springen Zur Suche springen
(Rumpf)
 
(localpart: user.preferred_username)
 
(8 dazwischenliegende Versionen von einem anderen Benutzer werden nicht angezeigt)
Zeile 1: Zeile 1:
Dieser Wiki-Artikel dokumentiert die Nutzung der OIDC-App in einer vorhandenen Nextcloud-Installation.
Im Folgenden wird die Matrix-Implementierung "Synapse" als Chat-Server an Nextcloud angebunden, so das der Login in Matrix mit einem Nextcloud-Login erfolgt.
Die Installation von Nextcloud und Synapse ist hier im Wiki dokumentiert:
* [[Nextcloud|Nextcloud installieren]]
* [[Matrix_Synapse_installieren|Synapse installieren]]
Als Platzhalter für die Domains der Installationen nutze ich im Folgenden:
'cloud.hs-example.de' und 'matrix.hs-example.de'.
== Installation und Konfiguration der Nextcloud-App ==
Nach Anmeldung mit einem Admin-Account in der Nextcloud installiert man die App "OIDC Identity Provider". Aktuell ist die Version 0.4.9. Die Versionsnummer zeigt, dass nicht alle OpenID-Connect-Features implementiert sind. Die Zusammenarbeit mit Synapse funktioniert aber bei geeigneter Einstellung.
Nach Installation der App steht in den "Administrationseinstellungen" der Nextcloud im Bereich "Verwaltung" / "Sicherheit" ein neuer Abschnitt mit der Überschrift "OpenID Connect-Clients" zur Verfügung.
Im Abschnitt
[[Datei:Nc-step1.png||OpenID-Connect Client hinzufügen]]
werden ein Name (hier: "Matrix") und eine Weiterleitung ("https://matrix.hs-example.de/_synapse/client/oidc/callback" für einen Matrix-Server unter der Domain "matrix.hs-example.de") eingetragen.
Daraufhin werden eine "Client-ID" und ein "Client-Secret" (dt. "Geheimnis") generiert. Diese beiden zufälligen Zeichenketten kopieren wir uns für die Konfiguration des OIDC-Client im Synapse-Server.
[[Datei:Nc-step2.png||Anzeige OpenID-Connect Client]]
== Installation und Konfiguration von OIDC in Synapse ==
Auf der Client-Seite muss ebenfalls ein Plugin installiert werden. Das geschieht (je nach Installationweise von Synapse) zum Beispiel mit den folgenden Befehlen:
cd ~/synapse
. ~/synapse/env/bin/activate
pip install matrix-synapse[oidc]
In der Konfigurations-Datei "homeserver.yaml" des Synapse-Server wird der folgende Abschnitt ergänzt:
<pre>
oidc_providers:
  - idp_id: nextcloud
    idp_name: "Nextcloud-Login"
    discover: true
    issuer: "https://cloud.hs-example.de/"
    client_id: "7K9BHka3e18p1o0ehwI2cPFcrKrw161A2VFsClAYav6qo2jfhHCOddAiDbIi7XzT"
    client_secret: "IG8fQ94Z0dn1fXhq2Ic4sQadTgtXtLLFzp4oUau3p3S2MYEuqfkNFqIoQw6nDZok"
    scopes: [ "openid", "profile", "email" ]
    client_auth_method: client_secret_post
    allow_existing_users: true
    user_mapping_provider:
      config:
        subject_template: "{{ user.preferred_username }}"
        localpart_template: "{{ user.preferred_username }}"
        display_name_template: "{{ user.name }}"
        email_template: "{{ user.email }}"
</pre>
'idp_id' ist ein freier Bezeichner. 'idp_name' ist der Text für die Beschriftung des Button zur Weiterleitung zum Nextcloud-Login.
Mit 'discover: true' wir der Client angewiesen die URLs für die Client-Konfiguration im Server auszulesen. Dazu wird der URL-Stamm unter 'issuer' mit dem Well-Known-Pfad '/.well-known/openid-configuration' kombiniert. Der Nextcloud OIDC-Provider stellt diese Information unter '/index.php/apps/oidc/openid-configuration' bereit. Eine Redirect-Regel in der '.htaccess'-Datei im Verzeichnis '~/doms/cloud.hs-example.de/' schließt diese Lücke:
~/doms/cloud.hs-example.de$ cat .htaccess
Redirect 301 "/.well-known/openid-configuration" "/index.php/apps/oidc/openid-configuration"
Nach einem (Neu-)Start des Synapse-Server sollte ein Login in Matrix/Element über die Nextcloud-Login-Seite geleitet werden.
== Links ==
== Links ==
* [https://apps.nextcloud.com/apps/oidc Nextcloud-App OIDC Identity Provider]
* [https://github.com/H2CK/oidc#readme README des OIDC Identity Provider]
* [https://github.com/H2CK/oidc/wiki/User-Documentation Benutzer-Dokumentation des OIDC Identity Provider]
* [https://matrix-org.github.io/synapse/v1.81/openid.html OpenID-Konfiguration in der Doku zu Synapse]


[[Kategorie:Installationsanleitungen]]
[[Kategorie:Installationsanleitungen]]

Aktuelle Version vom 12. Juni 2023, 15:28 Uhr

Dieser Wiki-Artikel dokumentiert die Nutzung der OIDC-App in einer vorhandenen Nextcloud-Installation.

Im Folgenden wird die Matrix-Implementierung "Synapse" als Chat-Server an Nextcloud angebunden, so das der Login in Matrix mit einem Nextcloud-Login erfolgt.

Die Installation von Nextcloud und Synapse ist hier im Wiki dokumentiert:

Als Platzhalter für die Domains der Installationen nutze ich im Folgenden: 'cloud.hs-example.de' und 'matrix.hs-example.de'.

Installation und Konfiguration der Nextcloud-App

Nach Anmeldung mit einem Admin-Account in der Nextcloud installiert man die App "OIDC Identity Provider". Aktuell ist die Version 0.4.9. Die Versionsnummer zeigt, dass nicht alle OpenID-Connect-Features implementiert sind. Die Zusammenarbeit mit Synapse funktioniert aber bei geeigneter Einstellung.

Nach Installation der App steht in den "Administrationseinstellungen" der Nextcloud im Bereich "Verwaltung" / "Sicherheit" ein neuer Abschnitt mit der Überschrift "OpenID Connect-Clients" zur Verfügung.

Im Abschnitt

OpenID-Connect Client hinzufügen

werden ein Name (hier: "Matrix") und eine Weiterleitung ("https://matrix.hs-example.de/_synapse/client/oidc/callback" für einen Matrix-Server unter der Domain "matrix.hs-example.de") eingetragen.

Daraufhin werden eine "Client-ID" und ein "Client-Secret" (dt. "Geheimnis") generiert. Diese beiden zufälligen Zeichenketten kopieren wir uns für die Konfiguration des OIDC-Client im Synapse-Server.

Anzeige OpenID-Connect Client

Installation und Konfiguration von OIDC in Synapse

Auf der Client-Seite muss ebenfalls ein Plugin installiert werden. Das geschieht (je nach Installationweise von Synapse) zum Beispiel mit den folgenden Befehlen:

cd ~/synapse
. ~/synapse/env/bin/activate
pip install matrix-synapse[oidc]

In der Konfigurations-Datei "homeserver.yaml" des Synapse-Server wird der folgende Abschnitt ergänzt:

 oidc_providers:
   - idp_id: nextcloud
     idp_name: "Nextcloud-Login"
     discover: true
     issuer: "https://cloud.hs-example.de/"
     client_id: "7K9BHka3e18p1o0ehwI2cPFcrKrw161A2VFsClAYav6qo2jfhHCOddAiDbIi7XzT"
     client_secret: "IG8fQ94Z0dn1fXhq2Ic4sQadTgtXtLLFzp4oUau3p3S2MYEuqfkNFqIoQw6nDZok"
     scopes: [ "openid", "profile", "email" ]
     client_auth_method: client_secret_post
     allow_existing_users: true
     user_mapping_provider:
       config:
         subject_template: "{{ user.preferred_username }}"
         localpart_template: "{{ user.preferred_username }}"
         display_name_template: "{{ user.name }}"
         email_template: "{{ user.email }}"

'idp_id' ist ein freier Bezeichner. 'idp_name' ist der Text für die Beschriftung des Button zur Weiterleitung zum Nextcloud-Login.

Mit 'discover: true' wir der Client angewiesen die URLs für die Client-Konfiguration im Server auszulesen. Dazu wird der URL-Stamm unter 'issuer' mit dem Well-Known-Pfad '/.well-known/openid-configuration' kombiniert. Der Nextcloud OIDC-Provider stellt diese Information unter '/index.php/apps/oidc/openid-configuration' bereit. Eine Redirect-Regel in der '.htaccess'-Datei im Verzeichnis '~/doms/cloud.hs-example.de/' schließt diese Lücke:

~/doms/cloud.hs-example.de$ cat .htaccess 
Redirect 301 "/.well-known/openid-configuration" "/index.php/apps/oidc/openid-configuration"

Nach einem (Neu-)Start des Synapse-Server sollte ein Login in Matrix/Element über die Nextcloud-Login-Seite geleitet werden.

Links