Click here to load reader

Shibboleth LDAP Backend

  • View
    224

  • Download
    0

Embed Size (px)

Text of Shibboleth LDAP Backend

  • 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

Search related