Einen Webdienst für Shibboleth-Login konfigurieren
Wenn Ihr Webdienst bereits über eine eingebaute SAML2/Shibboleth Unterstützung verfügt, konfigurieren Sie diese bitte nach den Angaben des Herstellers des Dienstes.
Falls ihr Webdienst nicht über eine Shibboleth-Unterstützung verfügt, können Sie diese in den meisten Fällen trotzdem einrichten. In diesem Fall wird in ihrem Webserver ein Modul installiert, dass eine für ihre Webanwendung sichtbare Umgebungsvariable (REMOTE_USER) erzeugt. Diese beinhaltet den Nutzernamen der Person, die sich angemeldet hat. Viele Dienste unterstützen die Verwendung von REMOTE_USER.
Dienst konfigurieren
Im Folgenden wird davon ausgegangen, dass ihre Anwendung von einem Apache-Server ausgeliefert wird.
Sie benötigen mod_shib für den Apache. Dieses erhalten Sie bei Ubuntu 20.04, 22.04, SLES 12 und SLES 15 mit ihrer Distribution. Sie können das Modul aber auch selbst kompilieren.
Die Konfigurationsdateien für mod_shib liegen unter /etc/shibboleth.
- Erzeugen Sie ggf. ein Schluesselpaar fuer ihren Dienst
cat <<EOT >> sp-cert.cnf
[req]
default_bits=3072
default_md=sha256
encrypt_key=no
distinguished_name=dn
string_mask=MASK:0002
prompt=no
x509_extensions=ext
[dn]
CN=$(hostname)
[ext]
certificatePolicies = 2.23.140.1.2.2
basicConstraints = CA:FALSE
keyUsage = critical, digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth, clientAuth
subjectKeyIdentifier=hash
subjectAltName=DNS:$(hostname)
EOT
openssl req -new -x509 -config sp-cert.cnf -out /etc/ssl/certs/sp-signing-cert.pem -keyout /etc/ssl/private/sp-signing-key.pem -days 1095
- Editieren Sie die shibboleth2.xml und tragen Sie als entityID im Knoten ApplicationDefaults ihre entityID ein.
- Im Knoten SSO tragen Sie als entityID https://login.uni-hamburg.de/idp/shibboleth ein.
- Erstellen Sie einen MetadataProvider Knoten wie folgt:
<MetadataProvider type="XML" validate="true" url="https://shibboleth.rrz.uni-hamburg.de/entities/idp.xml?slot=1" backingFilePath="idp.xml" maxRefreshDelay="1800">
<MetadataFilter type="RequireValidUntil" maxValidityInterval="2419200"/>
<MetadataFilter type="Signature" certificate="/etc/ssl/certs/shibboleth.pem" verifyBackup="false"/>
</MetadataProvider>
- Legen Sie die Datei /etc/ssl/certs/shibboleth.pem an und befüllen Sie sie mit dem oben Inhalt aus dem Bereich "Technische Angaben".
- Konfigurieren Sie die CredentialResolver wie folgt
<CredentialResolver type="File" use="signing" key="/etc/ssl/private/sp-signing-key.pem" certificate="/etc/ssl/certs/sp-signing-cert.pem"/>
<CredentialResolver type="File" use="encryption" key="/etc/ssl/private/sp-signing-key.pem" certificate="/etc/ssl/certs/sp-signing-cert.pem"/>
- Starten Sie den Shibd daemon sowie den Apache neu.
Medataten anpassen
- Melden Sie sich auf https://shibboleth.rrz.uni-hamburg.de/ mit ihrer Benutzerkennung an.
- Klicken Sie auf "edit" neben der entityID ihres Dienstes
- Geben Sie unter "Load metadata from url" die URL ihrer Service Provider Metadaten ein und klicken Sie auf "fetch metadata"
- Füllen Sie den Bereich "Contacts" aus (es muessen alle Kontakttypen angegeben werden)
- Wählen Sie unter AttributeConsumingServices alle von ihnen benötigten Attribute mit der Winstellung required=true aus.
- Setzen Sie im Bereich "Common data" den Haken in der Checkbox "Active".
- Klicken Sie auf "Update entitry"