Shibboleth Integration (nur Enterprise Version)¶
Einführung¶
Die ownCloud Shibboleth Benutzer Backend-Anwendung integriert ownCloud mit einem Shibboleth Service Provider (SP) und ermöglicht Operationen in föderierten und Single-Sign-On-Infrastrukturen.
Derzeit unterstützte Installationen werden auf der Grundlage der nativeen Apache Integration eingesetzt. Die individuelle Konfiguration des Service-Providers ist stark abhängig von dem Betriebssystem, wie auch für die Integration mit dem Identitäts Provider (IdP) und verdienen eine Fall-zu-Fall-Analyse und Installation.
Der ownCloud Desktop Client und Mobile-Client können mit ownCloud interagieren, in dem beispielsweise der Shibboleth Service Provider mit Hilfe eingebauter Browser-Laufzeit-Komponenten die Authentifizierung gegenüber dem IdP durchführt.
Apache Konfiguration¶
Das ist eine Beispiel Konfiguration/Installtion und wird auf einem Linux-Server betrieben mit der Ausführung des Apache-Webservers. Diese Konfigurationen ist hoch betriebssystemspezifisch und erfordert ein hohes Maß an Anpassung.
Die ownCloud Instanz selbst ist unter /var/www/owncloud/ installiert. Die folgenden Aliase werden in einer Apache Virtual Host-Richtlinie festgelegt:
# non-Shibboleth access
Alias /owncloud /var/www/owncloud/
# for Shibboleth access
Alias /oc-shib /var/www/owncloud/
Weitere Shibboleth spezifische Konfigurationen gemäß der Definition unter /etc/apache2/conf.d/shib.conf:
#
# Load the Shibboleth module.
#
LoadModule mod_shib /usr/lib64/shibboleth/mod_shib_22.so
#
# Ensures handler will be accessible.
#
<Location /Shibboleth.sso>
Satisfy Any
Allow from all
</Location>
#
# Configure the module for content.
#
# Shibboleth is disabled for the following location to allow non
shibboleth webdav access
<Location ~ "/oc-shib/remote.php/nonshib-webdav">
Satisfy Any
Allow from all
AuthType None
Require all granted
</Location>
# Shibboleth is disabled for the following location to allow public link
sharing
<Location ~
"/oc-shib/(status.php$
|public.php$
|cron.php$
|core/img/
|index.php/apps/files_sharing/publicpreview.png$
|index.php/apps/files/ajax/upload.php$
|index.php/core/ajax/translations.php$
|apps/files/templates/fileexists.html$
|index.php/apps/files/ajax/mimeicon.php$)">
Satisfy Any
Allow from all
AuthType None
Require all granted
</Location>
# Shibboleth is disabled for the following location to allow public gallery
sharing
<Location ~
"/oc-shib/(apps/gallery/templates/slideshow.html$
|index.php/apps/gallery/ajax/getimages.php
|index.php/apps/gallery/ajax/thumbnail.php
|index.php/apps/gallery/ajax/image.php)">
Satisfy Any
Allow from all
AuthType None
Require all granted
</Location>
# Shibboleth is disabled for the following location to allow public link
sharing
<Location ~ "/oc-shib/.*\.css">
Satisfy Any
Allow from all
AuthType None
Require all granted
</Location>
# Shibboleth is disabled for the following location to allow public link
sharing
<Location ~ "/oc-shib/.*\.js">
Satisfy Any
Allow from all
AuthType None
Require all granted
</Location>
# Besides the exceptions above this location is now under control of
Shibboleth
<Location /oc-shib>
AuthType shibboleth
ShibRequireSession On
ShibUseHeaders Off
ShibExportAssertion On
require valid-user
</Location>
Anwendungskonfiguration¶
Nach der Installation und Freigebe der Shibboleth-Anwendung gibt es drei Konfigurationsvariablen die, in Abhängigkeit von der Rücksendung der Daten von der IdP, einzurichten sind. Die Konfiguration wird unter config.php gespchert:
namespace OCA\user_shibboleth {
const SHIB_SESSION_ID = 'Shib-Session-ID';
const SHIB_EPPN = 'eppn';
const SHIB_EMAIL = 'eppn';
const SHIB_DISPLAY_NAME = 'eppn';
}
Parameter | Beschreibung |
SHIB_SESSION_ID | Diese Konstante definiert den Namen der Umgebungsvariablen, der Shibboleth Session-ID. |
SHIB_EPPN | Diese Konstante definiert den Namen der Umgebungsariablen, die für den EPPN (eduPersonPrincipalName) gilt. Dies ist die eindeutige Benutzerkennung. |
SHIB_EMAIL | Die Umgebungsvariable mit dem angegebenen Namen enthält die E-Mail-Adresse des angemeldeten Benutzers. |
SHIB_DISPLAY_NAME | Diese Konstante definiert den Namen der Umgebungsariablen, die Anzeigenamen des Benutzers enthält. |
aktivieren der Shibboleth App¶
Sie müssen die Shibboleth-App auf Ihrer Apps-Seite aktivieren, und dann Activate Shibboleth überrüfen und klicken Sie dann auf den Save Button auf Ihrer ownCloud Admin Seite. Die Systeminformationen auf Ihrer Admin-Seite werden angezeigt, das kann nützlich für die Fehlersuche sein; zum Beispiel können Sie diese kopieren und fügen Sie diese dann in Ihr Support-Ticket ein.
WebDAV Support¶
Benutzer von Standard WebDAV-Clients können eine Alternative zu WebDAV-URL verwenden, zum Beispiel https://cloud.example.com/remote.php/nonshib-webdav/ um sich mit ihrem Benutzernamen und Passwort anzumelden. Das Passwort wird auf der Persönliche Einstellungen Seite erstellt.
Für die Bereitstellung der OCS-API wurde das entsprechent hinzugefügt, um das zu widerrufen, wird für diesen Zweck das Kennwort für einen Benutzer wie folgt erzeugt:
Syntax: /v1/cloud/users/{userid}/non_shib_password
- HTTP method: DELETE
Status Code:
- 100 - successful
- 998 - user unknown
bekannte Einschränkungen¶
Verschlüsselung¶
Datei-Verschlüsselung kann nicht zusammen mit Shibboleth verwendet werden, da die Verschlüsselung das Kennwort des Benutzers erfordert, um den privaten Schlüssel zu entsperren. Der Grund dafür ist die Art das Shibboleth das Kennwort des Benutzers nicht an den Service-Provider bekannt gibt. Zur Zeit haben wir keine Lösung für diese Einschränkung.
Andere Login Mechanismen¶
Shibboleth ist nicht mit anderen ownCloud Benutzer Backend kompatibel weil der Anmeldevorgang außerhalb von ownCloud abgewickelt wird.
Sie können andere Login-Mechanismen (z.Bsp LDAP oder ownCloud native) verwenden, indem Sie es erlauben eine zweiten Apache Virtual Host-Konfiguration zu verwenden. Diese zweite Möglichkeit ist nicht von Shibboleth geschützt, und Sie können Ihre anderen ownCloud Anmeldemechanismen verwenden.
Ablauf der Sitzung¶
Das Session-Timeout wird auf Shibboleth vom IdP gesteuert. Es ist nicht möglich, eine Sitzungslänge länger als die Länge zu verwenden die von der IdP gesteuert wird. In Extrem Fällen könnte dies zum erneuten anmelden auf mobilen Clients und Desktop-Clients alle Stunde führen.
Das Session-Timeout kann vom Service-Provider außer Kraft gesetzt werden, aber das erfordert ein Quellcode Änderung des Apache Shibboleth-Modul. Ein Patch kann vom ownCloud Support-Team zur Verfügung gestellt werden.