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.

../_images/shib-gui5.png

Bild 3: aktivieren von Shibboleth auf der Admin Seite

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.

../_images/shibboleth-personal.png

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.