Anbindung des IdP an IdM‐ Systeme VZG 13.11.2008, 7. Shibboleth Workshop Franck Borel, VZG Übersicht VZG • • • • • • • Vorraussetzungen Betriebsumfeld Architektur des IdP Standardanbindungen Eigene Anbindung ArpViewer (uApprove) von SWITCH Ausblick 2.2 Franck Borel – [email protected] 2 Voraussetzung • Grundlage ist eine funkRonierende Benutzerverwaltung – – – – Wiederholbare Arbeitabläufe Richtlinien bei der Pflege der Benutzerdaten Datenschutz Benutzerverwaltung muss über eine Standardschni:stelle ansprechbar sein • Sonderfälle beachten – Z.B. Ein Mitarbeiter arbeitet für die UB, ist aber an der PH angestellt und daher nicht im LDAP‐Verzeichnis des Rechenzentrums verzeichnet. • Datenbestand – Datenbereinigung (DubleYen, nicht mehr benöRgte Accounts, Sonderzugriffe für die Administratoren) – Abbildung der AYribute auf den Standard eduPerson VZG • Seman=k – Was ist ein Angehöriger, ein Mitglied einer Hochschule? (§9 LHG) – Welche Rechte hat ein Angehöriger, ein Mitglied an der Hochschule? Franck Borel – [email protected] 3 Betriebsumfeld JVM Apache Server Tomcat Server Service Host Context ajp IdP JAAS mod_jk Tomcat Server IdM Service Host Context VZG ajp Franck Borel – [email protected] IdP JAAS 4 Betriebsumfeld • Pakeeilter, Firewall, DMZ • Apache – mod_jk, mod_proxy – SSL (ZerRfikate) • JVM • Tomcat – Filter, Servlets, Valves, Load‐Balancing, Monitoring, neue Versionen aufspielen (deployment) • IdP – Metadaten, AuthenRfizierung, AYribut‐Resolver – JAAS, JDBC, Spring – SSL (ZerRfikate) VZG • IdM – Typische IdMs: LDAP‐Server, SQL‐Datenbanken, Bibliothekssyteme (PICA, BiBer, Libero), AcRve‐Directory Franck Borel – [email protected] 5 Architektur des IdP IdPSession‐Filter Profile AuthenRfizierung Principal Autorisierung VZG SchniYstelle zum IdM IdenRty‐Management Franck Borel – [email protected] 6 KonfiguraRon des IdP web.xml IdPSession‐Filter service.xml Profile Principal handler.xml Encoding AuthenRfizierung Filter web.xml VZG Autorisierung Resolver aYribute‐ resolver.xml aYribute‐ filter.xml aYribute‐ resolver.xml SchniYstelle zum IdM IdenRty Management Franck Borel – [email protected] 7 Standardanbindung • AuthenRfizierung – RemoteUser – UsernamePassword – IPAddress – PreviousSession (Single‐Sign‐On) VZG • Autorisierung – Konnektor für staRsche Daten – Konnektor zum Speichern von persistenten IDs mit Hilfe einer Datenbank – Konnektor für relaRonale Datenbanken – LDAP‐Konnektor Franck Borel – [email protected] 8 StandardschniYstellen zum IdM • JAAS – LDAP • AciRve Directory – Kerberos • JDBC VZG – RelaRonale Datenbanken Franck Borel – [email protected] 9 Standardanbindung • Was kann man mit der Standardanbindung alles machen? – AuthenRfizierung • mit Benutzername und Passwort • mit der IP‐Adresse • verschiedene IdMs mit JAAS abfragen. Hierbei gelten die Regeln die von JAAS vorgegeben werden! • LDAP‐Server, Kerberos, AcRve‐Directory und relaRonale Datenbanken VZG – Autorisierung • LDAP‐Server, AcRve‐Directory und relaRonale Datenbanken • IdMs in Reihe schalten Franck Borel – [email protected] 10 Standardanbindung • Was geht nicht? – AuthenRfizierung: • AuthNHandler kombinieren: z.B. Benutzername/Passwort + IP‐Adresse • IdMs in Reihe schalten • Andere Parameter neben den Benutzernamen und dem Passwort verwenden (z.B. IP‐Adresse, OrganisaRon) • Beliebige Protokolle zur Abfrage des IdM verwenden (z.B. SOAP, (X)SLNP) • Kombinierte Abfragen: Zusammentragen von InformaRonen und diese auswerten. • X.509‐AuthenRfizierung – Autorisierung VZG • Beliebige Protokolle zur Abfrage des IdM verwenden (z.B. SOAP, (X)SLNP) • Kombinierte Abfragen: Zusammentragen von InformaRonen und diese auswerten. Franck Borel – [email protected] 11 AuthenRfizierung mit JAAS VZG • JAAS ist das Akronym für Java AuthenBcaBon and AutorizaBon Service • Integriert im JDK • JAAS orienRert sich an den Pluggable AuthenBcaBon Modules (PAM) • Der IdP verwendet JAAS für die AuthenRfizierung in seiner Standardanbindung UsernamePassword • Die Standardanbindung bietet eine ferRge SchniYstelle zum LDAP, AcRve‐Directory und Kerberos an. • Verschiedene Konnektoren können konfiguriert werden: JAAS fragt der Reihe nach die an den Konnektoren angehängten IdMs ab. Der erste Treffer wird genommen (!). Franck Borel – [email protected] 12 AuthenRfizierung und Autorisierung mit JAAS VZG • Was muss beachtet werden? – Der IdP unterstützt nur die Weitergabe der Parameter Benutzername und Passwort. – JAAS‐KonfiguraRon wird in die JAVA‐VM geladen. Deshalb muss bei Änderungen der Servlet‐ Container neu gestartet werden. – Logging ist nicht möglich! JAAS ist Teil der JVM. – Werden verschiedene Benutzerverwaltungen abgefragt, muss garanRert sein, dass die Benutzernamen eindeu=g sind. Franck Borel – [email protected] 13 AuthenRfizierung mit JAAS <servlet> <servlet-name>UsernamePasswordAuthHandler</servlet-name> <servletclass> edu.internet2.middleware.shibboleth.idp.authn.provider.UsernamePasswordLoginServlet </servlet-class> <init-param> <param-name>jaasConfigName</param-name> <param-value>ShibUserAuth</param-value> </init-param> </servlet> web.xml <LoginHandler xsi:type="UsernamePassword" jaasConfigurationLocation="file:///myopt/shibboleth-idp-2.1.0/conf/login.config"> <AuthenticationMethod> urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport </AuthenticationMethod> </LoginHandler> VZG handler.xml ShibUserAuth { edu.vt.middleware.ldap.jaas.LdapLoginModule required host=„ldap1.example.org ldap2.example.org ldap3.example.org“ base=“ou=people,dc=example,dc=org” tls=“true” userField=“uid” } Franck Borel – [email protected] login.config 14 Autorisierung mit LDAP <resolver:DataConnector id="myLDAP" xsi:type="LDAPDirectory" xmlns="urn:mace:shibboleth:2.0:resolver:dc” ldapURL="ldap://ldap.example.org" baseDN="ou=people,dc=example,dc=org" principal="uid=myservice,ou=system” principalCredential="myServicePassword"> <FilterTemplate> <![CDATA[ (uid=$requestContext.principalName)]]> </FilterTemplate> VZG </resolver:DataConnector> Suchfilter Franck Borel – [email protected] aYribute‐ resolver.xml EindeuRge ID Adresse des LDAP Nutzer mit welchem der Konnektor an den LDAP gebunden wird Passwort für die Bindung des Konnektors 15 Autorisierung mit LDAP • Was kann man noch machen? VZG – Definieren, welche AYribute zurückgegeben werden sollen – LDAP SSL/TSL Franck Borel – [email protected] 16 AuthenRfizierung und Autorisierung mit JDBC • Defini=on: JDBC ist eine DatenbankschniYstelle der Java‐Plaworm, die eine einheitliche SchniYstelle zu Datenbanken verschiedener Hersteller bietet und speziell auf relaRonale Datenbanken ausgerichtet ist. • Was gibt es zu beachten? VZG – JDBC‐Bibliothek liegt beim IdP nicht bei! – Wenn Sie nicht selber programmieren wollen, müssen Sie den RemoteUser AuthenBcaBon‐Handler verwenden! – Die AuthenRfizierung geschieht über die StandardauthenRfizierung von Tomcat und dem JDBCRealm (KonfiguraRon wie bei Shibboleth 1.3) – Für die Autorisierung gibt es einen ferRgen Konnektor. Franck Borel – [email protected] 17 AuthenRfizierung mit JDBC VZG <servlet-mapping> <servlet-name>RemoteUserAuthHandler</servlet-name> <url-pattern>/Authn/RemoteUser</url-pattern> </servlet-mapping> … <security-constraint> <display-name>Shibboleth IdP</display-name> <web-resource-collection> <web-resource-name>user authentication</web-resource-name> <url-pattern>/Authn/RemoteUser</url-pattern> <http-method>GET</http-method> <http-method>POST</http-method> </web-resource-collection> <auth-constraint> <role-name>user</role-name> </auth-constraint> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint> web.xml <security-role> <role-name>user</role-name> </security-role> Franck Borel – [email protected] 18 AuthenRfizierung mit JDBC <LoginHandler xsi:type="RemoteUser"> <AuthenticationMethod>urn:oasis:names:tc:SAML: 2.0:ac:classes:unspecified </AuthenticationMethod> </LoginHandler> context.xml handler.xml <Realm className="org.apache.catalina.realm.JDBCRealm” driverName="org.gjt.mm.mysql.Driver” connectionURL="jdbc:mysql://localhost/authority? user=dbuser&amp;password=dbpass” Name des userTable="users" Datenbankteibers, der im userNameCol="user_name” lib‐Verzeichnis des VZG Tomcat sein muss. userCredCol="user_pass” userRoleTable="user_roles" roleNameCol="role_name”/> URL zur Datenbank Tabelle mit den Nutzer; Name des Nutzers; Passwort des Nutzer, Role des Nutzer = roleName in der web.xml Franck Borel – [email protected] 19 Autorisierung mit JDBC <resolver:DataConnector xsi:type="dc:RelationalDatabase" xmlns="urn:mace:shibboleth:2.0:resolver:dc" id="MyDatabase”> <ApplicationManagedConnection jdbcDriver="org.hsqldb.jdbcDriver" jdbcURL="jdbc:hsqldb:res:/data/database/shibdb" jdbcUserName="sa" /> <QueryTemplate> <![CDATA[ SELECT * FROM PEOPLE WHERE netid='${principal}' ]]> </QueryTemplate> </resolver:DataConnector> VZG AYribute‐ resolver.xml Franck Borel – [email protected] 20 Eigene Anbindung VZG • Wann reichen die Standardanbindungen nicht aus? – Weitere Parameter notwendig, z.B. IP‐Adresse, OrganisaRons‐Name – IdM kommt mit den Standardprotokollen (SQL, LDAP) nicht klar, z.B. SOAP‐SchniYstelle – AuthenRfizierungs‐ und Autorisierungsanfragen können nicht mit einer Abfrage beantwortet werden (Beispiel MyLogin) – Sie wollen die Nutzer über JDBC authenRfizieren aber auch die neuen Features verwenden. Franck Borel – [email protected] 21 Eigene Anbindung • Was tun, wenn keine der Standardanbindungen ausreicht? VZG – Eigene Anbindung für die AuthenRfizierung schreiben: • Über RemoteUser: unterstützt nicht forced re‐ authenBcaBon, und passiv authenBcaBon) • Eigenen AuthenRcaRonHandler schreiben. • Eigene JAAS‐AuthenRfzierung schreiben (nicht klar, ob beliebige Parameter durchgereicht werden können!) Franck Borel – [email protected] 22 Eigene Anbindung • Was tun mit der Autorisierung? – Bewährtes Verfahren: • AuthenRfizierung und Autorisierung gleichzeiRg ausführen und das Ergebnis zwischenspeichern (z.B. Datenbank) • AYribute werden über die JDBC‐SchniYstelle abgefragt • Eigenen Resolver schreiben: Verlangt gute Kenntnisse in Spring und XML‐Schema! VZG • Beispiele: – Flex – MyLogin Franck Borel – [email protected] 23 Flex IdP (1) (2) login.jsp Flex AuthNHandler (3) AA Service‐ Provider (6) login.php (4) VZG (5) Resolver db Franck Borel – [email protected] IdM 24 MyLogin Filter (1) preselecRon.jsp login.jsp AuthenRfizierung (2) IdP login.php RZ SSO (5) KRZ AA (4) (3) SP VZG Resolver db UB (2) IP AYribute db Franck Borel – [email protected] 25 MyLogin VZG • Demo Franck Borel – [email protected] 26 ArpViewer (uApprove) • Wozu? VZG – DatenschutzbesRmmungen: Der Nutzer willigt ein, dass besRmmte Daten an den Anbieter weitergegeben werden. – InformaRonen sammeln: Welche AYribute wurden an welchen Anbieter weitergegeben? – Transparenz: Nutzer weiß, welche AYribute an den Anbieter weitergegeben werden. • FunkRonsweise: Filter (Pfad /*) + Datenbank oder Datei. • Wird für 2.2 aus Datenschutzgründen notwendig sein. Franck Borel – [email protected] 27 ArpViewer (uApprove) Ablauf Hat der Nutzer die Richtlinien noch nie akzepRert? Oder wurden die Richtlinien zwischenzeitlich geändert Nein Jep! Hat der Nutzer eingewilligt, dass alle AYribute an jeden SP weitergeben werden dürfen. VZG Nein Weiter (FilterChain) Nein Jep! Jep! Zeige Richtlinien an Franck Borel – [email protected] Nein Hat der Nutzer eingewilligt, dass die AYribute an diesen SP weitergeben werden dürfen. Haben sich die Regeln in der ARP geändert, so dass AYribute weitergegeben werden, dem der Nutzer noch nicht zugesRmmt hat? Jep! 28 ArpViewer (uApprove) VZG • Demo Franck Borel – [email protected] 29 VZG Ausblick 2.2 • IP‐AuthenRfizierung und REMOTE_USER soll ebenfalls über JAAS laufen • X.509‐AuthenRfizierung • Service‐Provider kann AYribute, die er benöRgt in die Metadaten eintragen lassen. Ein Filter wie ArpViewer (uApprove) soll dafür sorgen, dass der Nutzer die Übertragung der AYribute akzepReren oder verweigern kann. Franck Borel – [email protected] 30 Finale Danke, dass Sie zugehört haben! VZG Franck Borel ‐ [email protected] Anzutreffen auf: hYp://www.gbv.de hYp://aar.ub.uni‐freiburg.de hYp://www.aai.dfn.de Franck Borel – [email protected] 31 AuthenRfizierung mit JAAS Context e.i.m.shibboleth.idp.session.IdPSessionFilter VZG e.i.m.shibboleth.idp.authn.provider.UsernamePasswordLoginServlet Franck Borel – [email protected] 32