Owncloud im Internet über SAML

german

#1

Hallo, ich hab Owncloud auf meinem Webspace installiert und wollte das dann über SAML an den UCS anbinden. Dazu hab ich diese App im Owncloud installiert und die SAML-App auf dem UCS.

Die App für Owncloud braucht ja auch simplesamlphp. Dieses hab ich auf owncloud.im.netz/simplesaml installiert, owncloud liegt auf owncloud.im.netz/owncloud.

Eintrag in der config/authsources.php:

'default-sp' => array( 'saml:SP', 'entityID' => 'owncloud.im.netz', 'idp' => 'https://ucsmaster.intern.int', 'discoURL' => NULL, ),

Eintrag in metadata/saml20-idp-remote.php

[code]$metadata[‘https://ucsmaster.intern.int’] = array(
‘name’ => array(
‘en’ => ‘Feide OpenIdP - guest users’,
‘no’ => ‘Feide Gjestebrukere’,
),
‘description’ => ‘Here you can login with your domain account’,

'SingleSignOnService'  => 'https://ucsmaster.intern.int/simplesamlphp/saml2/idp/SSOService.php',
'SingleLogoutService'  => 'https://ucsmaster.intern.int/simplesamlphp/saml2/idp/initSLO.php?RelayState=/simplesamlphp/logout.php',
'cert'                 => 'ucsmaster.intern.int-idp-certificate.crt'

);[/code]

Konfiguration im UCS:

ID: owncloud.im.netz Antwort an diese Service Provider URL nach dem Login: http://owncloud.im.netz Name des Attributs, das als NameID verwendet wird: uid

In Wirklichkeit kommt vor der Owncloud-URL noch ein SSL-Reverse-Proxy. ABer ohne Proxy ist es dasselbe. Der Link auf den UCS funktioniert, man kann sich einloggen, man wird auf die Startseite von owncloud weitergeleitet, man ist aber nicht eingeloggt. Ich nehme an die Konfiguration auf der UCS-Seite macht Probleme.


#2

So ich hab mal die simplesamlphp-Sachen in die Webserver-Wurzel verschoben und den www-Ordner von ersteren in simplesaml unbenannt, da die Software das ja so mögen scheint. Jetzt funktioniert auch die Oberfläche von simplesamlphp.

Weiß jemand auf welche URL der UCS leiten muß für die Testseite von simplesamlphp? Und noch eine Verständnisfrage: Ist diese URL für den normalen Betrieb eigentlich egal oder funktioniert darüber dann erst der Login? Denn der Cookie vom UCS wird ja auf jeden Fall gesetzt.


#3

Wenn ich im UCS die Daten aus der Metadaten.xml vom SP eingebe, bekomme ich folgenden Backtrace:

Backtrace: 0 /htdocs/irgendwas/owncloud/simplesaml/module.php:180 (N/A) Caused by: SimpleSAML_Error_Exception: The issuer of the response does not match to the identity provider we sent the request to. Backtrace: 1 /htdocs/irgendwas/owncloud/modules/saml/www/sp/saml2-acs.php:65 (require) 0 /htdocs/irgendwas/owncloud/simplesaml/module.php:135 (N/A)


#4

Wenn ich die metadata/saml20-idp-remote.php aus der Metadata.xml vom UCS generieren lasse, will er wohl auf die URL ssl.proxy.de/simplesaml/etc zugreifen, richtig wäre natürlich ssl.proxy.de/owncloud.im.netz/simplesaml/etc. Daher lasse ich den Proxy nun erst mal weg. Dann bekomme ich “Statusinformationen verloren” mit:

2 /htdocs/irgendwas/owncloud/lib/SimpleSAML/Auth/State.php:232 (SimpleSAML_Auth_State::loadState) 1 /htdocs/irgendwa/owncloud/modules/saml/www/sp/saml2-acs.php:54 (require) 0 /htdocs/irgendwa/owncloud/simplesaml/module.php:135 (N/A)


#5

Die Cookie-Doamin war noch die des SSL-Proxys. Jetzt gehts immerhin mal weiter:

Anscheinend wird wohl nichts übermittelt. Der Login klappt dementsprechend auch nicht.


#6

Hallo,

ich beschreibe hier mal die Konfiguration die bei mir funktioniert. Einiges wiederholt sich aus den vorherigen Posts, aber so steht die gesamte Konfiguration in einem Stück beisammen. Folgende Programmversionen wurden verwendet:

Entfernter Rechner (“owncloud.im.netz”)
simplesamlphp: 1.11
owncloud5: 5.0.13
owncloud user_saml Erweiterung: 0.4, heruntergeladen von https://github.com/pitbulk/apps/tree/master/user_saml

Lokales UCS: (“ucsmaster.ucs.local”)
UCS 3.2 errata18
SAML App: 1.2

Einrichtung owncloud.im.netz
Editieren der simplesaml config /etc/simplesamlphp/config/authsources.php und anpassen des default-sp Eintrags:

'default-sp' => array( 'saml:SP', 'entityID' => 'owncloud.im.netz', 'idp' => 'https://ucsmaster.ucs.local/simplesamlphp/saml2/idp/metadata.php', 'discoURL' => NULL, ),

Dann muss die Konfiguration des IdP in /etc/simplesamlphp/metadata/saml20-idp-remote.php vorgenommen werden:

$metadata['https://ucsmaster.ucs.local/simplesamlphp/saml2/idp/metadata.php'] = array( 'description' => 'Log in to owncloud here', 'SingleSignOnService' => 'https://ucsmaster.ucs.local/simplesamlphp/saml2/idp/SSOService.php', 'certificate' => '/etc/simplesamlphp/ucsmaster.ucs.local-idp-certificate-REMOTE.crt', 'SingleLogoutService' => 'https://ucsmaster.ucs.local/simplesamlphp/saml2/idp/SingleLogoutService.php', );
Hinweis: Im ersten Post dieses Threads wurde das Attribut cert statt certificate verwendet, was nicht funktioniert

Das Zertifikat des IdP muss dann dem Service Provider zur Verfügung gestellt werden. Auf owncloud.im.netz:

scp ucsmaster.ucs.local:/etc/simplesamlphp/ucsmaster.ucs.local-idp-certificate.crt /etc/simplesamlphp/ucsmaster.ucs.local-idp-certificate-REMOTE.crt

chown root:www-data /etc/simplesamlphp/ucsmaster.ucs.local-idp-certificate-REMOTE.crt
chmod g+r /etc/simplesamlphp/ucsmaster.ucs.local-idp-certificate-REMOTE.crt

Installation owncloud, ablegen der user_saml Erweiterung unter /var/www/owncloud/apps, chown -R www-data:www-data /var/www/owncloud/apps/user_saml

Dann mit dem Administrationsaccount an owncloud anmelden und die App aktivieren. Anschließend auf die Administrationsseite in owncloud wechseln und bei der SAML Konfiguration das Feld SimpleSAMLphp path anpassen. Unter Debian sollte er auf /usr/share/simplesamlphp gesetzt werden. Im Feld SimpleSAMLphp SP source sollte als Wert der oben konfigurierte Name des lokalen Service Providers, default-sp, stehen. Ich habe noch einen Haken gesetzt bei Autocreate user after saml login.

Dem Hinweis aus der user_saml Dokumentation zu den session cookies bin ich einfach mal gefolgt und habe den Wert, der in der Datei /var/www/owncloud/config/config.php bei instanceid steht, in die simplesamlphp Konfiguration übernommen: Er kommt in der /etc/simplesamlphp/config.php als Wert an das Attribut session.phpsession.cookiename

Erst jetzt beginnt die Konfiguration des UCS ucsmaster.ucs.local:
Einen neuen Serviceprovider anlegen, aktivieren und folgendermaßen konfigurieren:

Tab Allgemein:
Bezeichner des Service Providers: owncloud.im.netz
Antwort an diese Service Provider URL nach dem Login: https://owncloud.im.netz/simplesamlphp/module.php/saml/sp/saml2-acs.php/default-sp
Single logout URL des Service Providers: https://owncloud.im.netz/simplesamlphp/module.php/saml/sp/saml2-logout.php/default-sp
Format des NameID Attributs: urn:oasis:names:tc:SAML:2.0:attrname-format:basic
Name des Attributs, das als NameID verwendet wird: uid

Tab Weitere Einstellungen:
Erlaube die Übertragung von LDAP Attributen an den Service Provider aktivieren

Jetzt noch einen UCS Benutzer anlegen und auf dessen Konto Tab den owncloud.im.netz Service Provider aktivieren. Dann kann man auf http://owncloud.im.netz/owncloud den SAML Login auswählen und per Single-Sign-On einloggen.

Ein weiterer Hinweis: Ob der Identity Provider korrekt auf owncloud.im.netz konfiguriert ist kann man herausbekommen, in dem man den Test von default-sp in der simplesamlphp Oberfläche startet: https://owncloud.im.netz/simplesamlphp/module.php/core/authenticate.php

Mit freundlichen Grüßen
Erik Damrose


#7

Vielen vielen Dank :slight_smile: Der Login funktionierte auf diese Weise. Für den Logout mußte ich für owncloud.im.net die SingleLogoutURL ändern:

$metadata['https://ucsmaster.ucs.local/simplesamlphp/saml2/idp/metadata.php'] = array( 'description' => 'Log in to owncloud here', 'SingleSignOnService' => 'https://ucsmaster.ucs.local/simplesamlphp/saml2/idp/SSOService.php', 'certificate' => '/etc/simplesamlphp/ucsmaster.ucs.local-idp-certificate-REMOTE.crt', 'SingleLogoutService' => 'https://ucsmaster.ucs.local/simplesamlphp/saml2/idp/SingleLogoutService.php', );

EDIT: Ich habs mal versucht das auch mit owncloud6 zum Laufen zu kriegen, aber da scheints wohl noch Problene zu geben. Fürs erste muß man wohl bei owncloud5 bleiben.


#8

Vielen Dank für den Hinweis, ich habe das in meinem vorherigen Post angepasst.

Gruß,
Erik Damrose