Click here to load reader
View
224
Download
0
Embed Size (px)
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 Frhjahr hier
Interesse seitens
Teilnehmer bekundet
Shibboleth LDAP Backend
Wolff / Kurth | IT Center der RWTH Aachen University 5
Implementierung
Interface Storage.java jeweils fr 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 mglich
kein StartTLS
Angabe mehrerer LDAP-Server mglich,
aber nur failover-Szenario
Konfiguration des LDAP-Zweiges noch nicht mglich
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
Verffentlichung des nchsten uApprove Release
mit LDAP Backend von SWITCH vorgesehen
Weiterfhrung, solange uApprove sinnvoll genutzt werden kann
Shibboleth LDAP Backend
Wolff / Kurth | IT Center der RWTH Aachen University 9
uApprove und IdPv3
ursprnglich 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 verfgbar,
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 untersttzt,
gegenwrtig noch nicht sicher, ob LDAP Untersttzung ausreichend
SWITCH plant Migrationsskripte (mindestens fr 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
ACLs 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
Organization:
O=AttrRelCon
Organization:
O=ToU
Account:
uid=
Account:
uid=
Device:
cn=
serialNumber=
Description=
organisationalUnit:
ou=
device:
serialNumber=
description=
LDAP Zweig fr 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
auf die neuen Properties
und LDAPStorage Klassen umstellen
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 = ldap.username = ldap.password = ldap.base =
LDAPS:// fr 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 fr 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
Organization:
O=ssoTargetedID
Account:
uid=
organisationalUnit:
ou=users
LDAP Zweig fr 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
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 befllen
# persistentID.getID('uid', 'entityID_des_SP')
eduPersonTargetedID.getValues().add(persitentID.getID(uid.getValues().get(0),
requestContext.getPeerEntityId()));
]]>
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 mglich
nicht kontrollierbare Querverbindungen
Idee:
gemeinsame PersonenID fr 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:
Interdisziplinre 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 Fderation prft und signiert
Shibboleth LDAP Backend
Wolff / Kurth | IT Center der RWTH Aachen University 20
Herzlichen Dank
an
Lukas Hmmerle / SWITCH
und
fr 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 fr MySQL DB via TLS/SSL
https://www.switch.ch/aai/downloads/uApprove-manual/
4.9. MySQL connection via TLS/SSL
Mailingliste Shib / RWTH