Seit der Version 2.4 des Shibboleth Service Providers ist es möglich, den Discovery Service lokal zu betreiben, ohne auf einen zentralen Dienst (WAYF) zurückgreifen zu müssen. Ein Vorteil beim EDS ist, dass man die Shibboleth-Konfiguration außerhalb von Olat machen kann und somit bei Änderungen nicht zwangsläufig auch Olat neu gestartet werden muss.
Der erste Schritt ist die Einrichtung des DiscoFeeds und die Filterung der EntityIDs. Dazu fügt man in shibboleth2.xml am Ende des <Sessions>-Blocks zu Zeile <Handler type="DiscoveryFeed" Location="/DiscoFeed"/> ein. Damit wird die Liste der Identity Provider in einem JSON-Format standardmäßig in /var/cache/shibboleth geschrieben. Die IdPs werden in einer Liste im <MetadataProvider>-Block angegeben:
<MetadataFilter type="Whitelist"> <Include>https://idptest.rhrk.uni-kl.de/idp/shibboleth</Include> <Include>https://idptest2.rhrk.uni-kl.de/idp/shibboleth</Include> <Include>https://idptest3.rhrk.uni-kl.de/idp/shibboleth</Include> ...usw... </MetadataFilter>
Den DiscoFeed kann man auch in der shibbolethlogin.html in Olat angegeben und spart sich dadurch die Aufzählung der wayf_unhide_idps:
var wayf_use_disco_feed = true;
var wayf_discofeed_url = "/Shibboleth.sso/DiscoFeed";
Wenn man auf die Kategorien in der Auswahlliste verzichten kann (das entsprechende Javascript leistet das (noch) nicht), kann man im zweiten Schritt auch vollständig auf shibbolethlogin.html und die Variablen in olat.local.properties verzichten, indem man den EDS installiert (unter CentOS mit yum install shibboleth-ds). Nach der Installation findet man ein Verzeichnis /etc/shibboleth-ds.
Demnächst geht's weiter mit der Konfiguration des EDS :-)
Die drei entscheidenden Dateien habe ich schon mal hochgeladen: idpselect_config.js, idpselect_src.js und edslogin.html