Installation und Konfiguration des Identity Provider Shibboleth Workshop Freiburg, 12.10.2005 Franck Borel, AAR-Projekt, UB Freiburg Übersicht • Installation des Identity Providers • Konfiguration des Identity Providers Franck Borel, AAR-Projekt, UB-Freiburg 2 Installation des Identity Providers • Wie gehen Sie vor? – Komponenten installieren und einzeln testen – Komponenten im Verbund testen – DemoAAR oder InQueue Testzugang einrichten und Identity Provider testen • Welche Kenntnisse sind von Vorteil? – Kenntnisse in der Administration von Apache und Tomcat – XML, SAML – Java, insbesondere J2EE • Wie groß ist der zeitliche Aufwand? – Je nach vorhandenen Kenntnissen 1 bis 3 Wochen Franck Borel, AAR-Projekt, UB-Freiburg 3 Installation des Identity Providers • Aus dem Nähkästchen: – Welche Anfangsschwierigkeiten hatten wir bei der Installation? • Unzureichende Dokumentation (z.B. fehlende oder falsche Angaben) – Hoher Zeitaufwand, bis das Prinzip und das Konzept verstanden wurde • Uneinheitliche Bezeichnung der Komponenten • Alles in einem Paket (SP, IdP und WAYF): Welche Datei gehört zu welcher Komponente? Franck Borel, AAR-Projekt, UB-Freiburg 4 Installation des Identity Providers Welche Komponenten müssen installiert werden? • Apache 1.3.26+ oder 2.0.x mit SSL (empfohlen 2.0.x) • Java 1.5.x • Tomcat 5.5.x • mod_jk • Ant • Shibboleth Identity Provider 1.3+ Franck Borel, AAR-Projekt, UB-Freiburg Folgende Kombinationen werden unterstützt: Java 1.4.x & Tomcat 4.1.18+ oder Java 1.5.x + Tomcat 5.5.x Vorsicht! Inkonsistenzen in den einzelnen Versionen 5 Installation des Identity Providers Übersicht zu den Komponenten des Identity Providers: Apache mod_jk Tomcat Authentifizierung über Tomcat oder Apache schützt SSO (HS) SSO (HS) Autorisierung LDAP Benutzerdaten ShibbolethKomponenten SQL Franck Borel, AAR-Projekt, UB-Freiburg ... AA ARP Richtlinien für die Freigabe von Attributen 6 Konfiguration des Identity Providers Übersichtskarte zu den Konfigurationsdateien httpd.conf Apache mod_jk.conf server.xml mod_jk Workers.properties web.xml Tomcat resolver.xml idp.xml metadata.xml Identity Provider arp.site.xml log4j.properties Franck Borel, AAR-Projekt, UB-Freiburg 7 Konfiguration des Identity Providers • Die wichtigsten Konfigurationsaufgaben am Identity Provider: – Grundeinstellungen (idp.xml) – Einstellungen für die Authentifizierung (server.xml, web.xml) – Einstellungen für die Autorisierung (resolver.xml, arp.xml) Franck Borel, AAR-Projekt, UB-Freiburg 8 Konfiguration des Identity Providers • Grundeinstellungen an der Hauptkonfigurationsdatei idp.xml <?xml version="1.0" encoding="ISO-8859-1"?> <IdPConfig … AAUrl="https://idp.example.org:8443/shibboleth-idp/AA" resolverConfig="file:/opt/shibboleth-idp-1.3b/etc/resolver.xml" defaultRelyingParty="urn:mace:shibboleth:examples" providerId="https://idp.example.org/shibboleth"> <!- RelyingParty --> <!– ReleasePolicyEngine --> <!– Logging --> <!- NameMapping --> <!- ArtifactMapper --> → z.B. Liste mit Service Providern → Weist auf die arp.xml → Einstellungen für die Log-Dateien → Zwischenablage des Principal → Einstellungen für die Verwendung der <!- ProtocolHandler --> <!- MetadataProvider --> </IdPConfig> → Zertifikate/Schlüssel → Hier wird festgelegt, welche Art von Anfragen beantworten werden → Weist auf die metadata.xml Franck Borel, AAR-Projekt, UB-Freiburg Standard Relaying Party: z.B. Föderation oder Applikation Übertragungsmethode Browser/Artifact <!- Credentials --> Attribute Eindeutige ID des Identity Providers (URI) 9 Konfiguration des Identity Providers • Beispiel für eine formularbasierte Authentifizierung mit MemoryRealm 1. server.xml bearbeiten 2. web.xml bearbeiten 3. Login-Seite mit FORM-Authentifizierung und eine FORM-Fehlerseite erstellen Franck Borel, AAR-Projekt, UB-Freiburg 10 Konfiguration des Identity Providers Formularbasierte Authentifizierung mit MemoryRealm: XML-Datei mit Benutzername/Passwort server.xml Tomcat … <Context path="/shibboleth-13b" docBase="/srv/www/webapps/shibboleth-13b" debug=„4" reloadable="true" <Realmclass Name="org.apache.catalina.realm.MemoryRealm" debug="4" pathname="conf/tomcat-user.xml"/> </context> … Einbinden der Klasse MemoryRealm Franck Borel, AAR-Projekt, UB-Freiburg debug level (0-4 / default = 0) 11 Konfiguration des Identity Providers Formularbasierte Authentifizierung mit MemoryRealm web.xml Identity Provider FORMSeiten … <login-config> <auth-method>FORM</auth-method> <realm-name>MemoryRealm</realm-name> <form-login-config> <form-login-page>/login.jsp</form-loggin-page> <form-error-page>/error.jsp</form-error-page> </form-login-config> </login-config> <security-role> <role-name>demo</role-name> </security-role> … Authentifizierungsmethode Benutzergruppe Franck Borel, AAR-Projekt, UB-Freiburg 12 Konfiguration des Identity Providers Formularbasierte Authentifizierung mit MemoryRealm Aufruf von j_security_check login.jsp Identity Provider … <form method="POST" action="<%=response.encodeURL('j_security_check')%> … <input type="text" name="j_username" /> <input type="password" name="j_password"> … </form> … Benutzername /Passwort Franck Borel, AAR-Projekt, UB-Freiburg 13 Konfiguration des Identity Providers Vordefinierte Realms: • MemoryRealm: Schnittstelle zur Authentifizierung gegen ein statisches Objekt (z.B. Textdatei) • JDBCRealm: Schnittstelle zu einer relationalen Datenbank mit Hilfe des JDBC-Treibers • JAASRealm: Schnittstelle zur Authentifizierung via Java Authentication & Authorization Service Famework • JNDIRealm: Schnittstelle zur Authentifizierung mit LDAP Franck Borel, AAR-Projekt, UB-Freiburg 14 Konfiguration des Identity Providers Die Konfiguration der Attribute Authority (AA) • Die Konfiguration und Anbindung der Attribute Authority wird in der resolver.xml-Datei vorgenommen. • In der arp.site.xml können Attribute gefiltert werden • In der arp.site${PRINCIPALNAME}.xml können Attribute abhängig vom aktuellen Benutzer gefiltert werden. • Drei vordefinierte Konfigurationsdateien zur Anbindung an ein bestehendes Speicherobjekt stehen zur Verfügung: – resolver.jdbc (JDBC) – resolver.ldap (LDAP) – resolver.xml (für Testzwecke mit festkodierten Werten → echoresponder) • Sie können auch eigene Resolver erstellen (Thema im nächsten Workshop ? ) Franck Borel, AAR-Projekt, UB-Freiburg 15 Konfiguration des Identity Providers • Beispiel einer Konfiguration mit einem JDBC-Resolver: Anpassen der idp.xml idp.xml Legt fest, welche ResolverKonfigurationsdatei verwendet werden soll. <?xml version="1.0" encoding="ISO-8859-1"?> <IdPConfig xmlns="urn:mace:shibboleth:idp:config:1.0" xmlns:cred="urn:mace:shibboleth:credentials:1.0" xmlns:name="urn:mace:shibboleth:namemapper:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:mace:shibboleth:idp:config:1.0 ../schemas/shibboleth-idpconfig-1.0.xsd" AAUrl="https://aar.ub-freiburg.de:8443/shibboleth-idp/AA" resolverConfig="file:/opt/shibboleth-idp-1.3b/etc/resolver.jdbc.xml" defaultRelyingParty="urn:mace:shibboleth:examples" providerId="https://aar.ub-freiburg.de/shibboleth"> … </IdPConfig> Attribute Authority und sSSO müssen bei der Verwendung von SSL auf getrennten Ports laufen! Franck Borel, AAR-Projekt, UB-Freiburg 16 Konfiguration des Identity Providers • Beispiel einer Konfiguration mit einem JDBC-Resolver: Anpassen der resolver.jdbc.xml Eindeutige Attributreferenz resolver.xml <AttributeResolver …> <SimpleAttributeDefinition id="urn:mace:dir:attribute-def:member" sourceName="member"> <DataConnectorDependency requires="db1"/> Referenz zur </SimpleAttributeDefinition> Datenbankverbindung <JDBCDataConnector id="db1" dbURL="jdbc:postgresql://aar.ub.uni-freiburg.de/redi?user=postgres&amp;password=test" dbDriver="org.postgresql.Driver" maxActive="10" maxIdle="5"> Verbindung zur <Query>Select member from users where name = ?</Query> Datenbank </JDBCDataConnector> <CustomDataConnector id="echo" class="edu.internet2.middleware.shibboleth.aa.attrresolv.provider.SampleConnector"/> </AttributeResolver> SQL-Abfrage (? = %PRINCIPAL%) Franck Borel, AAR-Projekt, UB-Freiburg 17 Konfiguration des Identity Providers • Beispiel einer Konfiguration mit einem JDBCResolver: Anpassen der arp.xml arp.xml Empfänger <?xml version="1.0" encoding="UTF-8"?> <AttributeReleasePolicy xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xmlns="urn:mace:shibboleth:arp:1.0" xsi:schemaLocation="urn:mace:shibboleth:arp:1.0 shibboleth-arp-1.0.xsd" > <Rule> <Target><AnyTarget/></Target> <Attribute name="urn:mace:dir:attribute-def:member"> <AnyValue release="permit"/> </Attribute> </Rule> </AttributeReleasePolicy> Erlauben? Attributname Franck Borel, AAR-Projekt, UB-Freiburg 18 Schnittstellen erweitern • Steht keine geeignete Schnittstelle für die Authentifizierung zur Verfügung können eigene Schnittstellen mit Hilfe der JAAS-Schnittstelle entwickelt werden. • Fehlt eine Schnittstelle für die Autorisierung müssen eigene Resolver erstellt werden. Franck Borel, AAR-Projekt, UB-Freiburg 19 Danke für Ihre Aufmerksamkeit! Franck Borel, AAR-Projekt, UB-Freiburg 20