Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung | |||
de:shibsp_beispiele_nextcould [2020/04/06 13:12] – Silke Meyer | de:shibsp_beispiele_nextcould [2020/04/06 13:14] (aktuell) – gelöscht Silke Meyer | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== AAI-Login für Nextcloud ====== | ||
- | Nextcloud bringt eine eigene SAML-Erweiterung mit, die aber nur zur Anbindung eines einzigen IdPs geeignet ist. Glücklicherweise hat diese Erweiterung aber einen Modus in dem per CGI-Environment-Variablen Authentifiziert wird. Damit wird die Authentifizierung an den Apache ausgelagert und dadurch kann die Shibboleth-SP-Software als Apache-Authentifizierungsmethode verwendet werden. | ||
- | |||
- | Vorteile und Besonderheiten: | ||
- | |||
- | * für die ' | ||
- | * der initiale NC-Admin kann sich nach wie vor lokal anmelden, muss dazu aber eine spezielle URL nehmen:< | ||
- | * neue AAI-User werden automatisch angelegt. Will man nicht alle AAI-User zulassen muss ausserhalb von Nextcloud eine Liste gepflegt werden: | ||
- | * idealerweise per SAML-Attribut (typischerweise " | ||
- | * alternativ als Userliste im Apache | ||
- | * für jeden nicht-Browser-Client muss der User selber per initialem Browser-AAI-Login ein Security-Token erstellen | ||
- | |||
- | |||
- | ===== "SSO & SAML authentication" | ||
- | |||
- | * als Nextcloud-Admin einloggen | ||
- | * unter " | ||
- | * unter " | ||
- | * "Only allow authentication if..." NICHT auswählen | ||
- | * General --> " | ||
- | * " | ||
- | * erstes Feld " | ||
- | * zweites Feld " | ||
- | |||
- | |||
- | |||
- | ===== Shibboleth-SP ===== | ||
- | |||
- | ==== DFN-AAI-Config ===== | ||
- | |||
- | * grundsätzliche DFN-AAI-Anbindung siehe https:// | ||
- | * Kontrollieren, | ||
- | |||
- | <file xml / | ||
- | |||
- | < | ||
- | REMOTE_USER=" | ||
- | | ||
- | </ | ||
- | ==== Attribut-Mapping ==== | ||
- | |||
- | Folgende Attribut-Mappings aktivieren falls nicht schon per Default aktiv: | ||
- | |||
- | <file xml / | ||
- | |||
- | < | ||
- | < | ||
- | </ | ||
- | | ||
- | < | ||
- | | ||
- | < | ||
- | | ||
- | </ | ||
- | |||
- | < | ||
- | root@host: | ||
- | </ | ||
- | |||
- | <wrap tip> | ||
- | |||
- | |||
- | ===== Apache ===== | ||
- | |||
- | ==== Grundlegende Konfiguration ==== | ||
- | |||
- | Es wird nur die Login-Seite per Shibboleth geschützt (siehe https:// | ||
- | |||
- | <file apache / | ||
- | < | ||
- | | ||
- | | ||
- | < | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | </ | ||
- | </ | ||
- | </ | ||
- | |||
- | < | ||
- | root@host: | ||
- | </ | ||
- | |||
- | Damit wird ein AAI-Login möglich und (sofern der Nutzer die geforderten drei Attribute mitbringt) automatisch ein Nextcloud-Account angelegt. | ||
- | |||
- | ==== Einschränkung der Nutzergruppe ==== | ||
- | |||
- | Eine Einschränkung des Nutzerkreises erfolgt typischerweise mithilfe des Berechtigungsattribute (" | ||
- | |||
- | <file apache / | ||
- | < | ||
- | | ||
- | | ||
- | < | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | </ | ||
- | | ||
- | </ | ||
- | |||
- | # Error-Seite muss auch einen Shibboleth-Context haben damit | ||
- | # dort die SAML-Attribute im CGI-Environment auftauchen! | ||
- | Alias /info.php / | ||
- | < | ||
- | AuthType shibboleth | ||
- | ShibRequestSetting requireSession true | ||
- | Require valid-user | ||
- | </ | ||
- | </ | ||
- | |||
- | < | ||
- | root@host: | ||
- | </ | ||
- | |||
- | Dynamischer Beispielspielausschnitt für die Error-Seite wie sie in der Nextlcloud für die DFN-Nutzergruppe verwendet wird: | ||
- | |||
- | |||
- | <file php / | ||
- | <?php | ||
- | |||
- | if (empty($_SERVER[' | ||
- | | ||
- | } else { | ||
- | | ||
- | }; | ||
- | |||
- | echo "<p class=' | ||
- | echo "<p class=' | ||
- | zur Verfügung.</ | ||
- | |||
- | if (!empty($_SERVER[' | ||
- | echo "<p class=' | ||
- | unter Angabe Ihrer Netz-ID</ | ||
- | print_r($_SERVER[' | ||
- | echo "</ | ||
- | } else { | ||
- | echo "<p class=' | ||
- | fehlen noch folgende Benutzerinformationen um diesen Dienst nutzen zu können:</ | ||
- | |||
- | if (empty($_SERVER[' | ||
- | echo "<p class=' | ||
- | }; | ||
- | if (empty($_SERVER[' | ||
- | echo "<p class=' | ||
- | }; | ||
- | if (empty($_SERVER[' | ||
- | echo "<p class=' | ||
- | }; | ||
- | }; | ||
- | |||
- | ?> | ||
- | |||
- | </ | ||
- | |||
- | ==== Logout ==== | ||
- | |||
- | Bei der hier beschriebenen Konfiguration überlässt die Nextcloud-Software die Autentifizierung dem Webserver. Damit verschwindet aber der " | ||
- | |||
- | < | ||
- | | ||
- | </ | ||
- | |||
- | FIXME: wie baut man das in die Nextcloud-Oberfläche ein? | ||
- | |||
- | Dabei wird ein Single-Logout getriggert, d.h. der User wird nicht nur vom Nextcloud-Dienst abgemeldet sondern auch von allen anderen AAI-Diensten an denen er in diesem Moment eingelogged ist. Daher sollte unbedingt eine Nachfrage mit entsprechendem Hinweis an den User gestellt werden bevor das Logout aktiviert wird. | ||
- | |||
- | FIXME: wie sieht so ein Code aus? | ||
- | |||
- | ===== IdP-Config ===== | ||
- | |||
- | IdPs welche die Attribut-Infos in den DFN-AAI-Metadaten nicht auswerten müssen drei Attribute manuell freigeben: | ||
- | |||
- | |||
- | <file xml / | ||
- | |||
- | < | ||
- | |||
- | < | ||
- | |||
- | < | ||
- | < | ||
- | < | ||
- | |||
- | </ | ||
- | |||
- | </ |