Skip to content

Latest commit

 

History

History
85 lines (65 loc) · 6.48 KB

SHIBBOLETH.md

File metadata and controls

85 lines (65 loc) · 6.48 KB

DFN-AAI / Shibboleth Integration

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.

Voraussetzungen

  • 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
    ... 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"
    
    

Unterstützte Systeme

  • 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.

Konfiguration

Shibboleth Service Provider hinter Reverse Proxy konfigurieren

  • 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 und apache_conf_usecanonicalname: 'On'

Standard-Werte für neue User in edu-sharing konfigurieren

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"

selbst-signiertes Zertifikat erstellen

  • 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
    scp -i ~/.vagrant.d/insecure_private_key [email protected]:/etc/shibboleth/tmp*.pem .
    
    Nachteil: Erstellung der Zertifikate geht erst während/nach der Installation.
  • Zur Beschreibung der verwendeten Methoden siehe SWITCHaai keygen und SWITCHaai openssl certificate generation

Zertifikatswechsel

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.

Bemerkungen

  • 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).