Docker, Shibboleth

Joe Gain joe.gain at uni-konstanz.de
Di Jul 25 11:51:24 CEST 2017


Hallo zusammen,

ich brauche Hilfe bei der Installation und Konfiguration eines Servers: 
Auf dem Server soll eine Django Web-Applikation laufen und zwar in 
Docker. Das funktioniert, aber jetzt soll Shibboleth intergrieren werden.

Als Test habe ich Shibboleth auf dem Host zum Laufen gebracht und wollte 
es ins Docker Container hineinschieben aber es funktioniert nicht.

Das Setup sieht so aus:

WWW <-->  Host mit Proxy [443:8000] <--> Docker mit Apache wsgi 
[8000:80] <--> Python Web Applikation

Auf dem Host (worauf Docker laueft) haben wir einen Proxy Server. Die 
Config sieht so aus:

<VirtualHost *:443>
 
 

     # snip [ ... ] 
 


     ProxyPreserveHost On
     ProxyPass / http://localhost:8000/

     # Header always set Strict-Transport-Security 
"max-age=31536000;includeSubDomains"
     # UseCanonicalName On
     # AddDefaultCharset UTF-8

     SSLEngine on
     SSLCertificateFile 
/etc/ssl/certs/cert-9144210531294497399226264623.pem
     SSLCertificateKeyFile 
/etc/ssl/private/rdmo-test.kim.uni-konstanz.de.key
     # <Location /secure2>
     #   AuthType shibboleth
     #   ShibRequestSetting requireSession 1
     #   Require valid-user
     # </Location>

     # <Location /public>
     # </Location>
</VirtualHost>

Die docker-compose.yml sieht so aus:

version: '2'
services:
   postgres:
     image: postgres
   django:
     build: .
     ports:
     - "8000:80"
     depends_on:
     - postgres

Die Frage ist, wie kann ich Shibboleth intergrieren, denn die 
Django-Applikation braucht die Attribute von Shibboleth um Nutzer 
anzulegen usw., was dazu fuehrt, dass Shibboleth im selben Container wie 
die Applikation sein muss.

Die Apache Config im Docker Container sieht so aus:

<VirtualHost *:80>
     ServerName rdmo
     DocumentRoot /var/www/html/

     # Sanity test, funktioniert
     <Location /public>
     </Location>

     <Location /secured>
         AuthType shibboleth
         ShibRequestSetting requireSession 1
         Require valid-user
     </Location>

     # Ist das notwendig?
     <Location /Shibboleth.sso>
     </Location>
</Virtualhost>

In die shibboleth2.xml (auch im Container) habe ich folgendes:

<Sessions
    handlerURL="/Shibboleth.sso"
    lifetime="28800"
    timeout="3600"
    relayState="ss:mem"
    checkAddress="false"
    consistentAddress="true"
    handlerSSL="false"
    cookieProps="http">

Die interessanten Optionen hier sind erstmals *handlerSSL* und 
*cookieProps*, die ich so geaendert habe, weil die Verbindung nur 
Host-intern ist zwischen Proxy und Docker und eben nicht verschluesselt 
ist. Das hat dazu gefuehrt, dass das Discovery Service angezeigt wird. 
Nachdem ich aber das Test-IdP auswaehle bekomme ich die (Fehler) Meldung:

> Es ist ein Fehler aufgetreten
> In der Kommunikation mit dem von Ihnen ausgewählten Service Provider ist ein Fehler aufgetreten:
> 
> The login service was unable to identify a compatible way to respond to the requested application. This is generally to due to a misconfiguration on the part of the application and should be reported to the application's support team or owner. 

Der Grund scheint zu sein, dass ich keinen handlerURL habe, denn wenn 
man die Default-Einstellung der handlerSSL Option aendert, gibt es (laut 
Dokumentation) keine Default handlerURL. Nun leider wenn ich die obige 
handlerURL verwende bekomme ich diesen (bekannten) Fehler:

> shibsp::ListenerException
> 
> The system encountered an error at Tue Jul 25 08:57:34 2017
> 
> To report this problem, please contact the site administrator at joe.gain at uni-konstanz.de.
> 
> Please include the following message in any email:
> 
> shibsp::ListenerException at (http://rdmo-test.kim.uni-konstanz.de/secured/)
> 
> Cannot connect to shibd process, a site adminstrator should be notified.

Das ist alles ein bisschen unzufriedenstellend, denn eigentlich moechte 
ich shibboleth nicht in dem gleichen Docker Image als die Web 
Application haben, denn Entwickler brauchen Shibboleth nicht. Aber der 
Produktionsserver braucht Shibboleth.

Hat jemand schon Docker zusammen mit Shibboleth benutzt und kann mir ein 
paar Tips geben, wie ich erstmals Shibboleth zum laufen bekommen kann 
und vielleicht auch, ob es moeglich ist Shibboleth von der Web 
Application in Docker zu trennen?

Schoene Gruesse,
Joe
-- 
B 1003
Kommunikations-, Informations-, Medienzentrum (KIM)
Universitaet Konstanz

t: ++49-7531-883234
e: joe.gain at uni-konstanz.de

-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : smime.p7s
Dateityp    : application/pkcs7-signature
Dateigröße  : 5018 bytes
Beschreibung: S/MIME Cryptographic Signature
URL         : <http://listserv.aai.dfn.de/pipermail/aai-users/attachments/20170725/ac79caf1/attachment.bin>


Mehr Informationen über die Mailingliste Aai-users