shibboleth ldap backend
TRANSCRIPT
IT Center der RWTH Aachen University
Shibboleth
LDAP Backend uApprove, eduPersonTargetedID
und „spGroupID“ im LDAP ablegen
Wolff / Kurth
Shibboleth LDAP Backend
Wolff / Kurth | IT Center der RWTH Aachen University 2
uApprove LDAP Backend
Implementierung LDAP Backend uApprove
Deployment und Konfiguration
eduPersonTargetedID & LDAP
Implementierung eduPersonTargetedID / storedID / computedID
mit LDAP Backend
„spGroupID“
Bedarf
Fragen
Übersicht
Shibboleth LDAP Backend
Wolff / Kurth | IT Center der RWTH Aachen University 3
uApprove LDAP Backend
Shibboleth LDAP Backend
Wolff / Kurth | IT Center der RWTH Aachen University 4
uApprove LDAP Backend
Erweiterung des User Consent Modules „uApprove“
um einen LDAP Connector
neben datenbankbasierter und nicht-persistenter Datenhaltung
nun auch mittels LDAP
Hintergrund: Shibboleth Backend komplett auf LDAP umstellen
Infrastruktur redundant
vorhanden
weitere Komponente
vermeiden
Im Frühjahr hier
Interesse seitens
Teilnehmer bekundet
Shibboleth LDAP Backend
Wolff / Kurth | IT Center der RWTH Aachen University 5
Implementierung
Interface Storage.java jeweils für
Attribute Release und Terms of Use
Bisher:
JDBCStorage.java
NOPStorage.java
Neu implementiert:
LDAPStorage.java
LDAP Anbindung mittels
Java JNDI realisiert
Verbindung zum LDAP wird
aus den Properties gelesen
Shibboleth LDAP Backend
Wolff / Kurth | IT Center der RWTH Aachen University 6
Features
gleicher Funktionsumfang wie bei Datenbank-Backend
dank Abstraktion durch Interface
SSL mittels ldaps-Protokoll möglich
kein StartTLS
Angabe mehrerer LDAP-Server möglich,
aber nur failover-Szenario
Konfiguration des LDAP-Zweiges noch nicht möglich
Shibboleth LDAP Backend
Wolff / Kurth | IT Center der RWTH Aachen University 7
Lasttest
Lasttest mit 5.000 Neuanmeldungen in 2,5 Minuten
IdP (Langeweile :)
1 VM mit 1 CPU / 2 Core, 8 GB RAM
Ubuntu 12.04 LTS, openjdk-headless7, tomcat7
LDAP (Spitzenauslastung um 50%)
1 VM mit 1 CPU / 1 Core, 4 GB RAM
Ubuntu 12.04 LTS, openLDAP
Erster Betatester: Frank Schreiterer, Uni Bamberg
Keine Performance-Unterschiede
StartTLS funktioniert nicht
Anfrage nach Konfiguration mehrerer LDAP-Server
Shibboleth LDAP Backend
Wolff / Kurth | IT Center der RWTH Aachen University 8
Roadmap
Konfigurierbarkeit LDAP Baumstruktur
November 2014
Veröffentlichung des nächsten uApprove Release
mit LDAP Backend von SWITCH vorgesehen
Weiterführung, solange uApprove sinnvoll genutzt werden kann
Shibboleth LDAP Backend
Wolff / Kurth | IT Center der RWTH Aachen University 9
uApprove und IdPv3
ursprünglich geplant:
Integration von uApprove in Shibboleth IdPv3 ohne Änderungen
aktueller Stand:
Änderungen im login workflow in v3 machen Portierung von
uApprove schwierig, Entwickler arbeiten an Neuimplementierung
Neues ToU/Consent Modul noch nicht im Alpha2 verfügbar,
aber erster Code dazu in SVN Trunk
IdP consent Daten sollen über Standard Storage API geschrieben werden
LDAP wird teilweise in v3 Standard Storage API unterstützt,
gegenwärtig noch nicht sicher, ob LDAP Unterstützung ausreichend
SWITCH plant Migrationsskripte (mindestens für DB-basierte Installationen)
und wirkt auf Beibehaltung des Funktionsumfangs hin
Shibboleth LDAP Backend
Wolff / Kurth | IT Center der RWTH Aachen University 10
Deployment: Vorbereitung
LDAP
eigenen Zweig anlegen, keine
Schemaerweiterung erforderlich
ACL‘s definieren (r/w)
Deployment
uApprove lib in lib-Verzeichnis
(…/shibboleth-idp-2/lib)
legen und IdP deployen
SSL Zertifikat des LDAP
im LDAP konfigurieren
mit keytool in den Truststore der
JVM importieren
<base>
Organization:
O=AttrRelCon
Organization:
O=ToU
Account:
uid=<userID>
Account:
uid=<userID>
Device:
cn=<version>
serialNumber=<conDate>
Description=<fingerprint>
organisationalUnit:
ou=<relPartyID>
device:
serialNumber=<conDate>
description=<valHash>
LDAP Zweig für uApprove Daten
Shibboleth LDAP Backend
Wolff / Kurth | IT Center der RWTH Aachen University 11
Deployment: Konfiguration
…/Shibboleth-idp-2/conf/uApprove.xml
Bean zum Einlesen der Properties erstellen
<property name="storage"> auf die neuen Properties
und LDAPStorage Klassen umstellen
<bean id="uApprove.ldapConnection"
class="ch.SWITCH.aai.uApprove.LDAPConnectionDetails"
p:url="${ldap.url}"
p:username="${ldap.username}"
p:password="${ldap.password}"
p:base="${ldap.base}"
p:contextFactory="com.sun.jndi.ldap.LdapCtxFactory"
p:authentification="simple"
/>
Shibboleth LDAP Backend
Wolff / Kurth | IT Center der RWTH Aachen University 12
Deployment: Konfiguration
…/Shibboleth-idp-2/conf/uApprove.properties # Konfiguration der LDAP Backend Verbindung ldap.url = <URL zum LDAP> ldap.username = <LDAP-Benutzer mit dem die Aktionen ausgefuehrt werden> ldap.password = <Benutzerpasswort> ldap.base = <LDAP-Zweig, ab dem die uApprove Eintraege vorgenommen werden duerfen>
LDAPS:// für SSL-Verbindungen verwenden
mehrere URLs mit Leerzeichen getrennt (failover)
Shibboleth LDAP Backend
Wolff / Kurth | IT Center der RWTH Aachen University 13
eduPersonTargetedID
& LDAP
Shibboleth LDAP Backend
Wolff / Kurth | IT Center der RWTH Aachen University 14
eduPersonTargetedID
& LDAP
eigene lib für diverse Attribute (ShibbolethAttributeScripts.jar)
scriptbasiertes Attribut
eigener LDAP Zweig (r/w)
ID wird im LDAP nachgesehen
wenn vorhanden, ausliefern,
sonst: erzeugen
uid und EntityID vom SP
werden übergeben
aktuell ca. 280.000 IDs
<base>
Organization:
O=ssoTargetedID
Account:
uid=<userID>
organisationalUnit:
ou=users
LDAP Zweig für eduPersonTargetedIDs
Shibboleth LDAP Backend
Wolff / Kurth | IT Center der RWTH Aachen University 15
Implementierung
getID(uid, spID) personDN = getPerson(uid)
search from ldapBase, get DN, where uid=uid
return dn
createPerson(uid)
dn = constructDN(uid)
Return "uid=XX, userOU, ldapBase"
targetedID = getTargetedID(personDN, spID)
search from personDN, get eduPerson where eduID=spID;*
return getIDFromTargetedIDTupel(targetID) [split at ; and take second]
createTargetedID( personDN, spID)
targetedID= constructTargetedID( spID)
return "spID;randomGenerated64ID"
Return getIDFromTargetedIDTupel(targetedID) [split at ; and take second]
add targetedID to ldap at personDN
dn found dn not found
create new ldap entry for uid at dn
return dn
eduID found
eduID not found
return targetedID
Shibboleth LDAP Backend
Wolff / Kurth | IT Center der RWTH Aachen University 16
Einbindung im attribute resolver
…/Shibboleth-idp-2/conf/attribute-resolver.xml <resolver:AttributeDefinition
xsi:type="Script" xmlns="urn:mace:shibboleth:2.0:resolver:ad" id="eduPersonTargetedID"
nameIdFormat="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent">
<resolver:Dependency ref="myLDAP" />
<resolver:Dependency ref="uid" />
<Script><![CDATA[ importPackage(Packages.edu.internet2.middleware.shibboleth.common.attribute.provider);
importPackage(Packages.edu.internet2.middleware.shibboleth.common.profile.provider);
importPackage(Packages.de.rwth.rz.idm.sso);
# Attribute erzeugen
eduPersonTargetedID = new BasicAttribute(„eduPersonTargetedID");
persitentID = new LdapauthStoredID();
# Attribut mit Hilfe des eigenen Codes befüllen
# persistentID.getID('uid', 'entityID_des_SP')
eduPersonTargetedID.getValues().add(persitentID.getID(uid.getValues().get(0),
requestContext.getPeerEntityId()));
]]></Script>
</resolver:AttributeDefinition>
…
Shibboleth LDAP Backend
Wolff / Kurth | IT Center der RWTH Aachen University 17
„spGroupID“
Shibboleth LDAP Backend
Wolff / Kurth | IT Center der RWTH Aachen University 18
Bedarf
ePPN aus Datenschutzsicht problematisch
Aggregation von Daten möglich
nicht kontrollierbare Querverbindungen
Idee:
gemeinsame PersonenID für eine Gruppe von Service Providern
Warum:
IT Center betreibt mehrere Kundenplattformen,
in denen eine Person als dieselbe zu identifizieren sein soll
auch in der DFN-AAI denkbar:
Interdisziplinäre Projekte mit mehreren Plattformen o. Ä.,
in der eine Person als dieselbe erkannt werden soll
Shibboleth LDAP Backend
Wolff / Kurth | IT Center der RWTH Aachen University 19
Fragen
Geeignetes Attribut?
eduPersonTargetedID verwenden
neues / eigenes Attribut definieren
Pflege der SP Gruppen?
in der Konfiguration (ShibbolethAttributeScripts.jar)
Nutzung der „Entity Attributes“ Extension
der SP definiert, in welchen Gruppen er ist
der Verwalter der Metadaten der Föderation prüft und signiert
Shibboleth LDAP Backend
Wolff / Kurth | IT Center der RWTH Aachen University 20
Herzlichen Dank
an
Lukas Hämmerle / SWITCH
und
für Ihr Interesse
Shibboleth LDAP Backend
Wolff / Kurth | IT Center der RWTH Aachen University 21
Infolinks
Offizielle uApprove Site
https://www.switch.ch/de/aai/support/tools/uApprove.html
Entity Attributes
https://www.aai.dfn.de/der-dienst/entity-attribute/
Anleitung für MySQL DB via TLS/SSL
https://www.switch.ch/aai/downloads/uApprove-manual/
4.9. MySQL connection via TLS/SSL
Mailingliste Shib / RWTH
https://mailman.rwth-aachen.de/mailman/listinfo/shib-dev