270 likes | 507 Views
Authentifizierung, Autorisierung und Rechteverwaltung. Einführung in den Service Provider Shibboleth-Workshop Freiburg, 12. Oktober 2005 Dr. Jochen Lienhard AAR Projekt UB Freiburg. Gliederung des Vortrags (I). Einführung in den Service Provider Aufgaben Aufbau Funktionsweise
E N D
Authentifizierung, Autorisierung und Rechteverwaltung Einführung in den Service Provider Shibboleth-Workshop Freiburg, 12. Oktober 2005 Dr. Jochen Lienhard AAR Projekt UB Freiburg
Gliederung des Vortrags (I) • Einführung in den Service Provider • Aufgaben • Aufbau • Funktionsweise • Systemvoraussetzungen • Installation von zusätzlichen Komponenten • Installation des Service Providers • Basiskonfiguration des Service Providers • Java - Version • Konfiguration des Service Providers Dr. Jochen Lienhard, AAR Projekt, UB Freiburg 2
Aufgaben des Service Providers • Schutz der Ressourcen • Kontaktaufnahme zum Identity Provider (via WAYF) • Überprüfung der Zertifikate • Überprüfung der Attribute • Freigabe der Ressource Dr. Jochen Lienhard, AAR Projekt, UB Freiburg 3
Aufbau Ressourcen Apache Benutzer authentifiziert? mod_shib (ACS) Ressource- Manager (RM) fragt Attribute bei der AA ab shibd definiert, welche Attribute für den Zugriff auf die Ressourcen erforderlich sind AAP kontrolliert den Zugriff auf die Ressourcen Dr. Jochen Lienhard, AAR Projekt, UB Freiburg 4
Funktionsweise • Zugriff auf Ressource • Redirect zum WAYF oder IdP durch ACS • Authentifizierungsbestätigung des IdPs • Weiterleitung der SAML vom Apache-Modul (ACS) zum Shibboleth-Dämon (shibd) • Anfrage vom Dämon an den AA bzgl Attribute • Attribute des AAs • Verifizierung der Attribute (AAP.xml) • Freigabe oder Sperrung der Ressource Dr. Jochen Lienhard, AAR Projekt, UB Freiburg 5
Systemvoraussetzungen (für C Version) • Apache 1.3 oder 2 • Quelldateien für entsprechenden Apache • OpenSSL • GCC (inklusive Entwicklungsumgebung für g++) • libcurl • (für Windows) Visual Studio 6.0 und alternativ IIS • (für MAC) ebenfalls Sourcecode vorhanden Dr. Jochen Lienhard, AAR Projekt, UB Freiburg 6
Zusätzliche Komponenten Die zusätzlichen Komponenten sind bei Internet2 oder Apache verfügbar: Downloaden, auspacken, kompilieren, installieren! • log4cpp 0.3.5.rc1 • xerces-c 2.6.1 • xml-security-c 1.2.x • opensaml 1.1 Dr. Jochen Lienhard, AAR Projekt, UB Freiburg 7
Service Provider (Installation) • Sourcecode downloaden, auspacken und konfigurieren ./configure … --with-apxs=<apxs Pfad> --enable-apache-13oder --with-apxs2=<apxs2 Pfad> --enable-apache-20 • Kompilieren und installieren • make und make install Dr. Jochen Lienhard, AAR Projekt, UB Freiburg 8
Service Provider (Basiskonfiguration) • Einbinden der apache.config • Startvorgang von shibd einrichten • shibboleth.xml konfigurieren • WAYF eintragen • Zertifikate eintragen • Name des Service Providers • metadata.xml herunterladen • Apache neu starten Zugriff mit Shibboleth geschützt Dr. Jochen Lienhard, AAR Projekt, UB Freiburg 9
Service Provider (Java-Version) • Noch keine offizielles Release • Systemvoraussetzung: Tomcat 4.x besser 5.x sowie entsprechende Java-Version • Sourcen: • 1 zip File oder • Sourcecode aus dem CVS von Internet2 • Dokumentation: für Eclipse unter Windows • Vorteile / Nachteile Dr. Jochen Lienhard, AAR Projekt, UB Freiburg 10
Gliederung des Vortrags (II) • Einführung in den Service Provider • Konfiguration des Service Providers • shibboleth.xml im Detail • Schutz der Ressourcen • AAP.xml Verifizierung der Attribute • Anbindung an existierende Systeme • Einbindung in mehrere Föderationen • Attribute: Beispiele Dr. Jochen Lienhard, AAR Projekt, UB Freiburg 11
shibboleth.xml im Detail • SPConfig (Rahmen der XML-Datei) • Global • Local • Applications • Sessions • Metadata • Application • Credentials Dr. Jochen Lienhard, AAR Projekt, UB Freiburg 12
SPConfig <SPConfig xmlns="urn:mace:shibboleth:target:config:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:mace:shibboleth:target:config:1.0 /usr/local/share/xml/shibboleth/shibboleth-targetconfig-1.0.xsd" logger="/usr/local/etc/shibboleth/shibboleth.logger" clockSkew="180"> -<Extensions> <Library path="/usr/local/libexec/xmlproviders.so" fatal="true" /> </Extensions> … </SPConfig> Dr. Jochen Lienhard, AAR Projekt, UB Freiburg 13
Global <Global logger="/usr/local/etc/shibboleth/shibd.logger"> <UnixListener address="/usr/local/var/run/shib-shar.sock" /> <MemorySessionCache cleanupInterval="300" cacheTimeout="3600" AATimeout="30" AAConnectTimeout="15" defaultLifetime="1800" retryInterval="300" strictValidity="false" propagateErrors="false" /> </Global> • Alternativen: • TCPListener • MySQLSessionCache Dr. Jochen Lienhard, AAR Projekt, UB Freiburg 14
Local <Local logger="/usr/local/etc/shibboleth/native.logger" localRelayState="true"> -<RequestMapProvidertype="edu.internet2.middleware.shibboleth.sp.provider.NativeRequestMapProvider"> -<RequestMap applicationId="default"> - <Host name="lienhard.ub.uni-freiburg.de"> <Path name="test" authType="shibboleth" requireSession="true" exportAssertion="true" /> </Host> </RequestMap> </RequestMapProvider> </Local> Dr. Jochen Lienhard, AAR Projekt, UB Freiburg 15
Applications <Applications id="default" providerId="https://aar.ub.uni-freiburg/shibboleth" homeURL="https://aar.ub.uni-freiburg/" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion" xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"> … <Errors session="/usr/local/etc/shibboleth/sessionError.html" metadata="/usr/local/etc/shibboleth/metadataError.html" rm="/usr/local/etc/shibboleth/rmError.html" access="/usr/local/etc/shibboleth/accessError.html" supportContact="root@localhost" logoLocation="/shibboleth-sp/logo.jpg" styleSheet="/shibboleth-sp/main.css" /> … </Applications> • providerId muss mit den übermittelten Daten übereinstimmen! Dr. Jochen Lienhard, AAR Projekt, UB Freiburg 16
Applications (Sessions) <Sessions lifetime="7200" timeout="3600" checkAddress="false" handlerURL="/Shibboleth.sso" handlerSSL="false" idpHistory="true" idpHistoryDays="7"> <SessionInitiator isDefault="true" id="AAR" Location="/WAYF/DEMOaar" Binding="urn:mace:shibboleth:sp:1.3:SessionInit" wayfURL="https://aar.ub.uni-freiburg.de/DEMOaar/WAYF" wayfBinding="urn:mace:shibboleth:1.0:profiles:AuthnRequest" /> <md:AssertionConsumerService Location="/SAML/POST" isDefault="true" index="1" Binding="urn:oasis:names:tc:SAML:1.0:profiles:browser-post" /> <md:AssertionConsumerService Location="/SAML/Artifact" index="2" Binding="urn:oasis:names:tc:SAML:1.0:profiles:artifact-01" /> <md:SingleLogoutService Location="/Logout" Binding="urn:mace:shibboleth:sp:1.3:Logout" /> </Sessions> Dr. Jochen Lienhard, AAR Projekt, UB Freiburg 17
Applications (Metadaten) <CredentialUse TLS="defcreds" Signing="defcreds"> <RelyingParty Name="urn:mace:DEMOaar" TLS="defcreds" Signing="defcreds" /> </CredentialUse> <AAPProvider type="edu.internet2.middleware.shibboleth.aap.provider.XMLAAP" uri="/usr/local/etc/shibboleth/AAP.xml" /> <MetadataProvider type="edu.internet2.middleware.shibboleth.metadata.provider.XMLMetadata" uri="/usr/local/etc/shibboleth/DEMO-metadata.xml" /> <TrustProvider type="edu.internet2.middleware.shibboleth.common.provider.ShibbolethTrust" /> <saml:Audience>urn:mace:DEMOaar</saml:Audience> Dr. Jochen Lienhard, AAR Projekt, UB Freiburg 18
Application • notwendig, wenn individuelle • Attribute • Session-Settings • Metadaten benötigt werden. • Analog zu Applications • kann auch separaten WAYF enthalten Dr. Jochen Lienhard, AAR Projekt, UB Freiburg 19
Credentials <CredentialsProvider type="edu.internet2.middleware.shibboleth.common.Credentials"> <Credentials xmlns="urn:mace:shibboleth:credentials:1.0"> - <FileResolver Id="defcreds"> - <Key> <Path>/etc/apache2/ssl.key/server_ohne.key</Path> </Key> - <Certificate> <Path>/etc/apache2/ssl.crt/server.crt</Path> </Certificate> </FileResolver> </Credentials> </CredentialsProvider> Dr. Jochen Lienhard, AAR Projekt, UB Freiburg 20
Schutz der Ressourcen (am Beispiel von Apache) • Rechteserver • Konfiguration des Apache <Location /interna> AuthType shibboleth ShibRequireSession On Require EduPersonEntitlement urn:mace:aar:entitlement:ezb:unirb:admin </Location> Dr. Jochen Lienhard, AAR Projekt, UB Freiburg 21
AAP.xml Abbildung der Attribute • „Default-Attribute“: Identity Provider • Empfangene Attribute müssen abgebildet und gefiltert werden <AttributeRule Name=“urn:mace:dir:attribute-def:eduPersonAffiliation“ Header=“Shib-EP-Affiliation“ Alias=“affiliation“> <AnySite> <AnyValue> </AnySite> </AttributeRule> Dr. Jochen Lienhard, AAR Projekt, UB Freiburg 22
Anbindung existierende Systeme • Bisheriger Schutz der Ressourcen? • Apache • Tomcat • … • Existiert ein Sessionmanagement? • Kann dieses verwendet werden?(z.B. durch Erstellen eines Tickets mittels Shibboleth) • eventuell Änderungen am System Dr. Jochen Lienhard, AAR Projekt, UB Freiburg 23
Beispiel: ReDI als SP • Sessionmanagement vorhanden • ReDI-Session wird durch zentrales login-Script erzeugt • Anpassen des Scriptes, so dass externe Authentifizierungen akzeptiert werden • Abbilden der akzeptieren Authentifizierung auf ReDI-Sessions Dr. Jochen Lienhard, AAR Projekt, UB Freiburg 24
Einbindung in mehrere Föderationen • notwendig für internationale Anbieter, falls nur länderspezifischen Föderationen existieren. • alternativ: eigene Föderation • Realsierbar durch mehrere Applications • Verschiedene URLs definieren und schützen • Zugriff auf verschiedene WAYFs • ein metadata.xml Dr. Jochen Lienhard, AAR Projekt, UB Freiburg 25
Attribute • eduPerson – Schemata • eduPersonScopedAffiliationBeispiel: member@uni-freiburg.de • eduPersonEntitlementBeispiele: urn:mace:incommon:entitlement:common:1 urn:mace:aar:entitlement:redi:unifr:jura urn:mace:aar:entitlement:ezb:unirb:admin • eduPersonPrincipalNameBeispiel: lienhard@uni-freiburg.de • eduPersonTargetedID Dr. Jochen Lienhard, AAR Projekt, UB Freiburg 26
Fragen, Probleme, Anregungen?