Es ist möglich den Single-Sign-On (SSO) Zugang via DFN-AAI (Shibboleth) automatisiert zu konfigurieren. Dies umfasst die Installation von shibboleth und die Konfiguration von edu-sharing.
- Anmeldung des Service Provider (SP) bei DFN AAI: https://doku.tid.dfn.de/de:registration
- Daten des SP in die Metadaten der DFN-AAI Testföderation eintragen
- Unter https://www.aai.dfn.de/verwaltung/metadaten/ => "neuen SP anlegen"
- Eigene Daten einpflegen bzw URL zum eigenen SP angeben (zB http://192.168.98.101/Shibboleth.sso/Metadata)
- Benötigte Attribute
... FriendlyName="eduPersonScopedAffiliation" ... isRequired="true" ... FriendlyName="uid" ... isRequired="true" ... FriendlyName="mail" ... isRequired="true" ... FriendlyName="eduPersonUniqueId" ... isRequired="true" ... FriendlyName="sn" ... isRequired="true" ... FriendlyName="givenName" ... isRequired="true" ... FriendlyName="o" ... isRequired="true"
- Debian
Ansible-Skripte für weitere Systeme können unter ansible/roles/shibboleth/tasks hinzugefügt werden. Eine gute Beschreibung der Installation liefert SWITCHaai. Beiträge sind sehr willkommen - einfach einen Pull Request erstellen.
- Ansible Inventory erstellen, dass die (mandatory) Variablen aus ansible/group_vars/shibboleth.yml setzt.
- Zertifikate in shibboleth_sp_credential_files: Service Provider können selbst-signierte Zertifikate verwenden.
- Siehe https://doku.tid.dfn.de/de:certificates#informationen_fuer_service_provider
- Diese Zertifikate müssen vor der Aufnahme in die DFN-AAI Produktivumgebung verifiziert werden.
- Zertifikaterstellung s.u.
- Client greift auf das geschützte edu-sharing bzw. den Shibboleth-SP via Reverse Proxy zu, zB über https://proxy.example.org/edu-sharing auf http://abc.example.org/edu-sharing
- Dann muss der Reverse Proxy so konfiguriert werden, dass auch Shibboleth.sso zugänglich ist, zB über https://proxy.example.org/path/Shibboleth.sso auf http://abc.example.org/path/Shibboleth.sso
- Falls als Pfad nicht der Standard-Pfad /Shibboleth.sso verwendet werden soll, so kann der Pfad in shibboleth_sp_base_path konfiguriert werden.
- Bei der Konfiguration der Metadaten bei DFN-AAI muss dann die Proxy-URL verwendet werden, zB https://proxy.example.org/path/Shibboleth.sso
- In der Apache-Konfiguration, auf dem Shibboleth-Host müssen dann die Properies ServerName und UseCanonicalName gesetzt werden, damit Shibboleth korrekte URLs erstellen kann. Dies sollte über die Ansible-Variablen apache_conf_servername und apache_conf_usecanonicalname automatisiert passieren, zB
apache_conf_servername: https://proxy.example.org:443
undapache_conf_usecanonicalname: 'On'
Um Default-Werte für die Felder cm:sizeQuota und cm:eduSchoolPrimaryAffiliation in edu-sharing zu konfigurieren existiert derzeit keine offizielle, allgemeingültige Konfigurationsmöglichkeit. Daher gibt es die Möglichkeit durch die Box automatisiert Default-Werte in der ccContentModel.xml zu setzen. Diese greifen bei erstmaliger Anmeldung eines Nutzers über shibboleth. Dazu müssen folgende Ansible-Variablen im Inventory gesetzt werden:
edu_cccontentmodel_adjustments:
- path: "model/ccContentModel.xml"
xpath: "/ns:model/ns:types/ns:type[@name='cm:person']/ns:properties/ns:property[@name='cm:sizeQuota']/ns:default"
value: "524288000" # sizeQuote in Bytes (500MB)
- path: "model/ccContentModel.xml"
xpath: "/ns:model/ns:types/ns:type[@name='cm:person']/ns:properties/ns:property[@name='cm:eduSchoolPrimaryAffiliation']/ns:default"
value: "teacher"
- Ein selbst-signiertes Zertifikat kann mit folgenden Methoden erstellt und eingebunden werden:
- (Empfohlen) Erstellen des Zertifikates mit dem Skript ansible/roles/shibboleth/files/generate-cert.sh. Dann generiertes cert+key eintragen in shibboleth_sp_credential_files.
- (Alternative) wird die Ansible-Variable shibboleth_sp_credential_files bei der Installation leer gelassen, so werden automatisch cert und key generiert unter /etc/shibboleth/tmp-cert.pem und /etc/shibboleth/tmp-key.pem. Diese können dann zB mit scp kopiert werden und im Inventory unter shibboleth_sp_credential_files fest eingebunden werden
Nachteil: Erstellung der Zertifikate geht erst während/nach der Installation.scp -i ~/.vagrant.d/insecure_private_key [email protected]:/etc/shibboleth/tmp*.pem .
- Zur Beschreibung der verwendeten Methoden siehe SWITCHaai keygen und SWITCHaai openssl certificate generation
Siehe https://doku.tid.dfn.de/de:certificates#zertifikatstausch.
Die Reihenfolge der CredentialResolver in der shibboleth2.xml
ist durch die Reihenfolge in shibboleth_sp_credential_files bestimmt.
- Neues Zertifikat erstellen und verifizieren lassen.
- Eintragen des neuen Zertifikates am Ende von shibboleth_sp_credential_files und Update via Playbook ausrollen.
- Veröffentlichung des neuen Zertifikates (zusätzlich) in den Föderationsmetadaten.
- 24 Stunden warten.
- Das neue Zertifikat an den Anfang von shibboleth_sp_credential_files setzen, das alte ans Ende und Update via Playbook ausrollen.
- Das alte Zertifikat aus den Föderationsmetadaten entfernen.
- 24 Stunden warten.
- Entfernen des alten Zertifikates aus shibboleth_sp_credential_files und Update via Playbook ausrollen.
- Die Konfiguration hier ist auf DFN-AAI ausgelegt. Es ist jedoch auch möglich eine eigene Shibboleth-Konfiguration zu verwenden indem eigene Templates für die Konfigurationsdateien verwendet werden (die Pfade der Dateien sind konfigurierbar).