Active Directory Virtualisierung mit Penrose
Bei einem Projekt hatte ich die Problemstellung, dass Useraccounts aus zwei Active Directories in ein (javabasiertes) Shop-Produkt importiert werden sollen. Dieses Shop-Produkt wird zwar mit einer LDAP-Anbindung ausgeliefert, allerdings kann es nur Useraccounts aus genau einem Active Directory oder LDAP importieren.
Die Lösung: Ein LDAP-Proxy, der die beiden Active Directories zu einem virtuellen LDAP zusammenführt, und gleichzeitig LDAP-Binds erlaubt, um Single Sign On mit den Windows Credentials zu ermöglichen. Das (ebenfalls javabasierte) Open Source Produkt Penrose erfüllt genau diese Aufgabe.
Beispiel:
Active Directory 1 speichert die Kundenaccounts und besitzt folgenden Wurzelknoten:
dc=customer,dc=company,dc=com
Active Directory 2 speichert die Mitarbeiteraccounts und besitzt folgenden Wurzelknoten:
dc=employees,dc=company,dc=com
Im Penrose werden diese beiden Active Directory as LDAP Proxy Partitions importiert und die beiden Wurzelknoten in das Root DSE attribut eingetragen. Penrose simuliert keinen Active Directory, sondern lediglich einen “puren” LDAP. (Active Directory hat ein paar Spezialitäten, beispielsweise einen Bind mit der user@domain Notation). Dennoch werden Active Directory-spezifische Attribute wie memberOf übernommen. Man bekommt also einen LDAP mit Active Directory Schema.
Eine (wichtige) Kleinigkeit: Der Session Timeout in Penrose kann über die /conf/server.xml angepasst werden:
<session>
<parameter>
<param-name>maxIdleTime</param-name>
<param-value>10080</param-value><!-- time out von 7 tagen -->
</parameter>
</session>
November 20th, 2008 at 8:58 am
Hallo Heiko.
Habe ein ähnliches Problem und mich würde interessieren, wie Du die einzelnen Partitionen in das RootDSE eingetragen hast?! Beschäftige mich erst seit einer Woche mit Penrose, Dein Tipp würde mich aber um Tage nach vorne bringen
Danke,
Ukyo.
November 20th, 2008 at 10:06 pm
Hallo Ukyo.
Das geht am einfachsten mit dem Penrose Studio. Beim Anlegen einer LDAP Proxy Partition macht er das für dich automatisch. Hier die Schritt für Schrittanleitung:
Customer Partition
* New LDAP Proxy Partition (Partition > New LDAP Proxy Partition…) name: customer.ads
* Map Active Directory Schema –> yes (Active Directory Format)
* Map Root DSE –> no
* Protocoll: ldap
* Host: customer.ads
* Base DN = (empty) –> fetch
* Pricipal (Bind DN) = technicalUser
* Credentials = ****************
Employee Partition
* New LDAP Proxy Partition (name: employee.ads)
* Map Active Directory Schema –> yes (Active Directory Format)
* Map Root DSE –> no
* Protocol: ldap
* Host: employee.ads
* Base DN = (empty) –> fetch
* Pricipal (Bind DN)= technicalUser
* Credentials = ****************
November 28th, 2008 at 1:15 pm
Hallo Heiko,
vielen Dank für die detaillierten Informationen!! Werde es die Tage mal ausprobieren.
Danke und schönen Gruss,
Ukyo.