Shibboleth: Unterschied zwischen den Versionen
Uli (Diskussion | Beiträge) |
Uli (Diskussion | Beiträge) (→Apache) |
||
Zeile 244: | Zeile 244: | ||
Bei der Installation wurden diese Dateien schon in den Konfigurationsdateien eingebunden. | Bei der Installation wurden diese Dateien schon in den Konfigurationsdateien eingebunden. | ||
=====Apache===== | =====Apache===== | ||
+ | # SingleSignOnService | ||
+ | # https://idp.example.com/idp/profile/SAML2/POST/SSO | ||
+ | # https://idp.example.com/idp/profile/SAML2/Redirect/SSO | ||
+ | # https://idp.example.com/idp/profile/Shibboleth/SSO | ||
+ | |||
+ | Listen [10.10.10.10]:443 | ||
+ | |||
+ | # | ||
+ | # Bitte 'idp.example.com' ersetzen durch den Namen Ihres IdPs! | ||
+ | # | ||
+ | <VirtualHost []10.10.10.10.:443> | ||
+ | ServerName idp.example.com | ||
+ | SSLEngine on | ||
+ | SSLCertificateFile /opt/shibboleth-idp-2.0.0/credentials/idp.crt | ||
+ | SSLCertificateKeyFile /opt/shibboleth-idp-2.0.0/credentials/idp.key | ||
+ | #SSLCertificateChainFile /opt/shibboleth-idp-2.0.0/credentials/ca-chain.crt | ||
+ | |||
+ | # alle Anfragen die mit /idp/ anfangen werden per Apache Java | ||
+ | # Protokoll an Tomcat durchgereicht: | ||
+ | |||
+ | <Location /idp> | ||
+ | Allow from all | ||
+ | </Location> | ||
+ | ProxyPass /idp/ ajp://localhost:8009/idp/ | ||
+ | </VirtualHost> | ||
+ | |||
+ | |||
+ | # ArtifactResolutionService und AttributeService | ||
+ | # | ||
+ | # https://idp.example.com:8443/idp/profile/SAML1/SOAP/ArtifactResolution | ||
+ | # https://idp.example.com:8443/idp/profile/SAML2/SOAP/ArtifactResolution | ||
+ | # | ||
+ | # https://idp.example.com:8443/idp/profile/SAML1/SOAP/AttributeQuery | ||
+ | # https://idp.example.com:8443/idp/profile/SAML2/SOAP/AttributeQuery | ||
+ | # | ||
+ | Listen 8443 | ||
+ | |||
+ | |||
+ | # Bitte 'idp.example.com' ersetzen durch den Namen Ihres IdPs! | ||
+ | |||
+ | <VirtualHost [10.10.10.10]:8443> | ||
+ | ServerName idp.example.com | ||
+ | SSLEngine on | ||
+ | SSLCertificateFile /opt/shibboleth-idp-2.0.0/credentials/idp.crt | ||
+ | SSLCertificateKeyFile /opt/shibboleth-idp-2.0.0/credentials/idp.key | ||
+ | #SSLCertificateChainFile /opt/shibboleth-idp-2.0.0/credentials/ca-chain.crt | ||
+ | |||
+ | <Location /idp> | ||
+ | Allow from all | ||
+ | SSLOptions +StdEnvVars +ExportCertData | ||
+ | SSLVerifyClient optional_no_ca | ||
+ | SSLVerifyDepth 10 | ||
+ | </Location> | ||
+ | ProxyPass /idp/ ajp://localhost:8009/idp/ | ||
+ | |||
+ | </VirtualHost> | ||
=SP Service-Provider= | =SP Service-Provider= |
Version vom 22. September 2008, 11:11 Uhr
Inhaltsverzeichnis
Hinweis zur Doku
Diese Doku entstand im wesentlichen mit Hilfe der AAI-DFN Dokumentation
Was ist Shibboleth
Auszug aus Wikipedia
Wikipedia
Shibboleth ist ein vom Internet2/MACE entwickeltes Verfahren zur verteilten Authentifizierung und Autorisierung für Webanwendungen und Webservices. Das Konzept von Shibboleth sieht vor, dass der Benutzer sich nur einmal bei seiner Heimateinrichtung authentisieren muss, um ortsunabhängig auf Dienste oder lizenzierte Inhalte verschiedener Anbieter zugreifen zu können (engl. Single Sign-On). Shibboleth basiert auf einer Erweiterung des Standards SAML.
Allgemein
Die nachfolgende Beschreibung bezieht sich auf folgende Systemvoraussetzungen:
Debian Etch Tomcat 5.5 Shibbileth 1.3.3 Shibboleth IDP 2.0 Shibboleth SP 2.1
IdP Identity-Provider
IDP Version 1.3
Anpassungen in der Sources.list
Für die Installation von Tomcat wird das Java-Run-Time-Environment als auch das Java-Development-Kit
benötig. Diese findet sich im non-free Zweig von Debian.
Es muss eventuell die Datei /etc/apt/sources.list angepasst werden.
deb http://ftp.debian.org/debian etch main contrib non-free deb http://security.debian.org/ etch/updates main contrib non-free
Installation von Java
- Achtung, für Java werden die non-free Quellen benötigt:
deb http://ftp.debian.org/debian stable main contrib non-free deb http://security.debian.org/debian-security stable/updates main contrib non-free aptitude update aptitude install sun-java5-jdk
Konfiguration
Falls schon eine andere Version von Java installiert ist, kann man mit folgendem Befehl sicher stellen,
dass das Java-Kommando auf das eben installierte zegt:
update-alternatives --config java Auswahl Alternative ------------------------------------------------------- 1 /usr/lib/jvm/java-1.5.0-sun/jre/bin/java * 2 /usr/bin/gij-wrapper-4.1 + 3 /usr/lib/jvm/java-gcj/jre/bin/java --------------------------------------------------------
Mit auswahl der Nummer wird die richtige Version aktiviert. Hier die Nummer 3
Installation von Tomcat
aptitude install tomcat5.5
Konfiguration
/etc/default/tomcat5.5
TOMCAT5_SECURITY=no
Tomcat und SSL
Damit der IdP der mit der Unix-ID des Tomcat-Users läuft, auf die SSL-Zertifikate zugreifen kann,
müssen die Recht noch entsprechend angepasst werden:
Zertifikats-Speicher: /etc/ssl/private
# groupadd ssl-cert # adduser tomcat55 ssl-cert # chgrp ssl-cert /etc/ssl/private # chmod g+rw /etc/ssl/privat
Installation Apache2
# aptitude install apache2 libapache2-mod-jk # a2enmod jk # a2enmod ssl
Wenn die Benutzeranmeldung über einen LDAP realisiert wird, benötigt man noch folgendes Modul:
# a2enmod authnz_ldap
Danach dann einmal:
# /etc/init.d/apache2 force-reload
Installation Shibboleth IdP
- Mit wget wird das Shibbolethpaket auf den Server geladen.
Unter folgendem wget Link sind die aktuellen Pakete zu finden. Bitte immer erst nachschauen, welche Version die aktuellste ist.
- Wenn man sich für eine Versio entschieden hat, wird es mit wget auf den Server geladen:
- Java-Installation überprüfen. Es muss folgende Version aktiv sein:
/usr/lib/jvm/java-1.5.0-sun/jre/bin/java
Geprüft wird das mit folgendem Befehl:
# update-alternatives --config java There are 3 alternatives which provide `java'. Selection Alternative ----------------------------------------------- * 1 /usr/lib/jvm/java-1.5.0-sun/jre/bin/java 2 /usr/bin/gij-wrapper-4.1 + 3 /usr/lib/jvm/java-gcj/jre/bin/java Press enter to keep the default[*], or type selection number:
- Jetz kann der Shibboleth IdP instaliert werden:
# cd /usr/local/src/ # wget http://shibboleth.internet2.edu/downloads/shibboleth-idp-1.3.3.tar.gz # tar xzvf shibboleth-idp-1.3.3.tar.gz # cd shibboleth-1.3.3-install # JAVACMD=/usr/bin/java ./ant
ACHTUNG: Hier können die Vorgaben mit Enter bestätigt werden. ACHTUNG: NUR die Angabe des Home-Verz. von Tomcat MUSS angepasst werden: /var/lib/tomcat5.5
- Rechte anpassen
# chown tomcat55 /usr/local/shibboleth-idp/logs # chmod 755 /usr/local/shibboleth-idp/bin/*
Konfiguration Shibboleth IdP
IDP Version 2.0
Installation
Anpassen der /etc/apt/sources.list
In der sources.list muss der non-free Eintrag vorhaden sein, damit das Java-Paket von SUN installiert werden kann:
# cat /etc/apt/sources.list deb http://ftp.debian.org/debian stable main contrib non-free deb http://security.debian.org/debian-security stable/updates main contrib non-free
Benötigte Pakete installieren
# aptitude update # aptitude install sun-java5-jdk tomcat5.5 apache2 libapache2-mod-jk
Java
# update-alternatives --config java Es gibt 3 Alternativen, die »java« bereitstellen. Auswahl Alternative ----------------------------------------------- 1 /usr/bin/gij-wrapper-4.1 + 2 /usr/lib/jvm/java-gcj/jre/bin/java * 3 /usr/lib/jvm/java-1.5.0-sun/jre/bin/java
# update-alternatives --config javac Es gibt 4 Alternativen, die »javac« bereitstellen. Auswahl Alternative ----------------------------------------------- 1 /usr/bin/ecj-bootstrap 2 /usr/bin/gcj-wrapper-4.1 + 3 /usr/lib/jvm/java-gcj/bin/javac * 4 /usr/lib/jvm/java-1.5.0-sun/bin/javac
# update-alternatives --config keytool Es gibt 3 Alternativen, die »keytool« bereitstellen. Auswahl Alternative ----------------------------------------------- 1 /usr/bin/gkeytool-4.1 + 2 /usr/lib/jvm/java-gcj/jre/bin/keytool * 3 /usr/lib/jvm/java-1.5.0-sun/jre/bin/keytool
Tomcat 5.5
Einige globale Java-Parameter müssen beim Tomcat-Start festgelegt werden.
Das IdP-Servlet braucht Zugriff auf das Filesystem und braucht mehr Speicher als von Debian in vorgesehen ist:
# vi /etc/default/tomcat5.5 JAVA_OPTS="-Djava.awt.headless=true -Xmx512M -XX:MaxPermSize=512M" TOMCAT5_SECURITY=no
Tomcat starten
# /etc/init.d/tomcat5.5 start
Apache 2
Für den https-Support wird das Modul 'mod_ssl' benötigt:
# a2enmod ssl
Ausserdem braucht man noch für die Weiterleitung der Anfragen an den IdP der im Tomcat läuft das entsprechende Proxy-Modul für das Apache-Java-Protokoll:
# a2enmod proxy_ajp
Danach aktivieren Sie die Module mit:
# /etc/init.d/apache2 force-reload
Shibboleth-Identity-Provider installieren
- Eine aktuelle Version des Shibboleth IDP erhalten sie unter http://shibboleth.internet2.edu/downloads/shibboleth/idp/latest/
# cd /usr/local # wget http://shibboleth.internet2.edu/downloads/shibboleth/idp/latest/shibboleth-idp-2.0.0-bin.zip # unzip shibboleth-idp-2.0.0-bin.zip # cd identityprovider/
* Dann wird die Instalation gestartet:
# JAVA_HOME=/usr ./ant.sh Buildfile: build.xml install: Is this a new installation? Answering yes will overwrite your current configuration. [yes|no] yes Where should the Shibboleth Identity Provider software be installed? [default: /opt/shibboleth-idp-2.0.0] What is the hostname of the Shibboleth Identity Provider server? [default: idp.example.org] idp.beispiel-uni.de A keystore is about to be generated for you. Please enter a password that will be used to protect it. changeit Updating property file: /home/raoul/identityprovider/install.properties Created dir: /opt/shibboleth-idp-2.0.0 Created dir: /opt/shibboleth-idp-2.0.0/bin Created dir: /opt/shibboleth-idp-2.0.0/conf Created dir: /opt/shibboleth-idp-2.0.0/credentials Created dir: /opt/shibboleth-idp-2.0.0/lib Created dir: /opt/shibboleth-idp-2.0.0/lib/endorsed Created dir: /opt/shibboleth-idp-2.0.0/logs Created dir: /opt/shibboleth-idp-2.0.0/metadata Created dir: /opt/shibboleth-idp-2.0.0/war Generating signing and encryption key, certificate, and keystore. Copying 5 files to /opt/shibboleth-idp-2.0.0/bin Copying 8 files to /opt/shibboleth-idp-2.0.0/conf Copying 1 file to /opt/shibboleth-idp-2.0.0/metadata Copying 38 files to /opt/shibboleth-idp-2.0.0/lib Copying 4 files to /opt/shibboleth-idp-2.0.0/lib/endorsed Copying 1 file to /home/raoul/identityprovider/build/WEB-INF JARs are never empty, they contain at least a manifest file Building jar: /opt/shibboleth-idp-2.0.0/war/idp.war BUILD SUCCESSFUL Total time: 40 seconds
* Zugriffsrechte anpassen:
# chown tomcat55 /opt/shibboleth-idp-2.0.0/{metadata,logs}
* Die Shibboleth-Entwickler empfehlen noch folgende Änderungen an der Tomcat-Installation zu machen:
# rm /usr/share/tomcat5.5/common/endorsed/* # cp endorsed/* /usr/share/tomcat5.5/common/endorsed/
Welche Ausswirkungen diese Änderun auf andere Servlets (falls vorhanden), sollte getestet werden.
* Java-Installation noch um den shibboleth-security-Provider erweitern:
# cp /usr/local/identityprovider/lib/shib-jce-1.0.jar /usr/lib/jvm/java-1.5.0-sun/jre/lib/ext/
* Um den Provider zu aktivieren muß noch ein Eintrag in der Java-Security-Config gemacht werden:
# vi /etc/java-1.5.0-sun/security/java.security
* Bitte nach den vorhandenen 'security.provider'-Einträgen einfügen und dabei die Zahl grösser wählen als die bei den schon vorhandenen.
security.provider.7=edu.internet2.middleware.shibboleth.DelegateToApplicationProvider
* Weiterleitung vom Apache2 zum Tomcat (workers.properties) In der Datei /etc/libapache2-mod-jk/workers.properties werden folgende Anpassungen vorgenommen:
workers.tomcat_home=/usr/share/tomcat5.5 workers.java_home=/usr/lib/jvm/java-1.5.0-sun-1.5.0.14 workers.properties im gesamten workers.tomcat_home=/usr/share/tomcat5.5 workers.java_home=/usr/lib/jvm/java-1.5.0-sun-1.5.0.14 ps=/ worker.list=ajp13_worker worker.ajp13_worker.port=8009 worker.ajp13_worker.host=localhost worker.ajp13_worker.type=ajp13 worker.ajp13_worker.lbfactor=1 worker.loadbalancer.type=lb worker.loadbalancer.balanced_workers=ajp13_worker
Shibboleth-Identity-Provider konfiguration
Zertifikat
Auch für den IDP wird ein Zertifikat benötigt.
* Zertifikats-Request erzeugen
# cd /opt/shibboleth-idp-2.x.x/credentials/ # openssl req -new -key idp.key -out idp.csr
Diese Request wird der DFN PKI mit dem Profil Shibboleth IDP/SP eingereicht und signiert.
* Zertifikat einbinden
# keytool -import -alias idp.example.com -file idp.crt -keystore idp.jks
Am besten benennt man das neue Zertifikat in idp.crt und idp.key um.
Bei der Installation wurden diese Dateien schon in den Konfigurationsdateien eingebunden.
Apache
# SingleSignOnService # https://idp.example.com/idp/profile/SAML2/POST/SSO # https://idp.example.com/idp/profile/SAML2/Redirect/SSO # https://idp.example.com/idp/profile/Shibboleth/SSO
Listen [10.10.10.10]:443
# # Bitte 'idp.example.com' ersetzen durch den Namen Ihres IdPs! # <VirtualHost []10.10.10.10.:443> ServerName idp.example.com SSLEngine on SSLCertificateFile /opt/shibboleth-idp-2.0.0/credentials/idp.crt SSLCertificateKeyFile /opt/shibboleth-idp-2.0.0/credentials/idp.key #SSLCertificateChainFile /opt/shibboleth-idp-2.0.0/credentials/ca-chain.crt # alle Anfragen die mit /idp/ anfangen werden per Apache Java # Protokoll an Tomcat durchgereicht: <Location /idp> Allow from all </Location> ProxyPass /idp/ ajp://localhost:8009/idp/ </VirtualHost>
# ArtifactResolutionService und AttributeService # # https://idp.example.com:8443/idp/profile/SAML1/SOAP/ArtifactResolution # https://idp.example.com:8443/idp/profile/SAML2/SOAP/ArtifactResolution # # https://idp.example.com:8443/idp/profile/SAML1/SOAP/AttributeQuery # https://idp.example.com:8443/idp/profile/SAML2/SOAP/AttributeQuery #
Listen 8443
- Bitte 'idp.example.com' ersetzen durch den Namen Ihres IdPs!
<VirtualHost [10.10.10.10]:8443>
ServerName idp.example.com SSLEngine on SSLCertificateFile /opt/shibboleth-idp-2.0.0/credentials/idp.crt SSLCertificateKeyFile /opt/shibboleth-idp-2.0.0/credentials/idp.key #SSLCertificateChainFile /opt/shibboleth-idp-2.0.0/credentials/ca-chain.crt <Location /idp> Allow from all SSLOptions +StdEnvVars +ExportCertData SSLVerifyClient optional_no_ca SSLVerifyDepth 10 </Location> ProxyPass /idp/ ajp://localhost:8009/idp/
</VirtualHost>
SP Service-Provider
Version 2.1
Bald ;-)
Links
DFN AAI
verteilte Authentifizierung,Autorisierung und Rechteverwaltung (AAR)
Internet2/MACE