| die letzten Änderungen * Seitenstruktur * Stichwortsuche :


logo_puschin.jpg

Startseite

Knowledge base



Kontakt

Impressum

Knowledge base - IPlanet Directory Server

Knowledge base

3 Benutzer online Druckversion




zurück



IPlanet Directory Server
Plugin für den IPlanet Directory Server - Windows

Das hat mich ungefähr 2 Stunden meiner Zeit gekostet, aber es hat sich gelohnt.

Die Aufgabenstellung war folgende :
Der IPlanet Directory Server gibt bei einem Bind mit einem DN und einem leeren Kennwort immer den LDAP Return-Code "Success" zurück, weil er von einem Anonymous Bind ausgeht.
Wenn jetzt eine Applikation, die auf den LDAP Server zugreift, ein leeres Kennwort zulässt, dann hat die Authentifizierung funktioniert, wenn der Benutzer kein Kennwort übergibt.

Wie kann man das lösen ?
Man schreibt ein Plugin für den IPlanet Directory Server.

Ich habe das erstmal unter Windows 2000 getestet und werde es später auch auf
andere Plattformen übertragen.

Vorgehensweise :

Um den Umgang mit Plugins zu testen, schaut man zuerst in das Verzeichnis
SERVER_ROOT\plugins\slapd\slapi\examples und sucht dort nach dem
Beispiel-Plugin hello.c.
Dieses Skript macht nichts anderes, als im error-Log des LDAP Servers eine
Meldung beim Starten auszugeben.
Jetzt muss man dieses Programm hello.c als *.dll Datei kompilieren. Dazu öffnet man diese Datei mit Microsoft Visual C++ und erstellt ein neues Projekt.

Vor dem eigentlichen Kompilieren muss man jetzt noch unter dem Menüpunkt Projekt/Einstellungen/Linker die Objekt-/Bibliothek-Module anpassen :
kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib ..\lib\libslapd.lib ..\lib\libnspr4.lib

Danach muss man noch in die Zeile Projekt-Optionen den Schalter /dll
hinzufügen.

Jetzt kann die *.dll Datei mit Erstellen/hello.dll erstellen kompiliert
werden. Das Ergebnis liegt im examples - Verzeichnis und dann im Ordner
Debug.

Jetzt muss man dieses kompilierte Plugin noch dem IPlanet Directory Server
bekannt machen. Dazu verwendet man am einfachsten eine LDIF Datei mit folgendem
Inhalt und dem Namen plugin.ldif :

dn: cn=Hello World,cn=plugins,cn=config
objectClass: top
objectClass: nsSlapdPlugin
objectClass: extensibleObject
cn: Hello World
nsslapd-pluginPath: z:/mps/plugins/slapd/slapi/examples/hello.dll
nsslapd-pluginInitfunc: hello_init
nsslapd-pluginType: object
nsslapd-pluginId: Hello, World
nsslapd-pluginEnabled: on
nsslapd-pluginVersion: 5.2
nsslapd-pluginVendor: Sun Microsystems, Inc.
nsslapd-pluginDescription: My first plug-in

Mit der folgenden Befehlszeile lässt sich das ganze in den LDAP Server
importieren :
ldapmodify -a -D "cn=Directory Manager" -w [KENNWORT] < plugin.ldif

Um jetzt einen Effekt zu sehen, muss man noch das Logging für die Plugins
aktivieren, das kann man entweder über die Directory Manager Konsole oder
direkt mit ldapmodify erledigen :
$ ldapmodify -p port -D "cn=Directory Manager" -w [KENNWORT]
dn: cn=config
changetype: modify
replace: nsslapd-infolog-area
nsslapd-infolog-area: 65536
^D

Jetzt stoppt man den LDAP Server und startet ihn danach neu.

Es sollte eine Ausgabe im errors-Log kommen -> Hello World etc. etc.

Wenn das kommt, dann hat das schonmal funktioniert. Wir können uns jetzt dem
nächsten Plugin zuwenden, nämlich dem testbind.c Plugin.

testbind.c Plugin

Im examples Verzeichnis liegt die Datei testbind.c, diese wird wie schon oben beschrieben mit den besonderen Schaltern kompiliert. Der Code muss eigentlich nicht verändert werden, da diese Plugin genau die von uns gewünschte Funktionalität bietet, d.h. ein Bind mit einem DN und einem leeren Kennwort wird zurückgewiesen.

Wieder erstellen wir eine plugin.ldif Datei mit folgendem Inhalt :

dn: cn=Test Bind, cn=plugins, cn=config
nsslapd-pluginPath: z:/mps/plugins/slapd/slapi/examples/Debug/testbind.dll
nsslapd-pluginVendor: Sun Microsystems, Inc.
nsslapd-pluginDescription: Sample bind pre-operation plug-in
nsslapd-pluginEnabled: on
nsslapd-pluginVersion: 5.2
nsslapd-pluginId: test-bind
objectClass: top
objectClass: nsSlapdPlugin
objectClass: extensibleObject
ds-pluginSignatureState: no signature
cn: Test Bind
nsslapd-pluginType: preoperation
nsslapd-pluginInitfunc: testbind_init

Und schreiben wie schon oben durchgeführt das Plugin in den LDAP Server :
ldapmodify -a -D "cn=Directory Manager" -w [KENNWORT] < plugin.ldif

Danach einfach den LDAP Server neu starten und bei einem Bind mit DN aber
keinem Kennwort sollte ein "INVALID CREDENTIALS" mit dem Return-Code 49 vom
LDAP Server kommen.


zurück



Knowledge base wurde zuletzt bearbeitet am 12.07.13 durch Frank

www.puschin.de
login

<body bgcolor='#FFFFFF' link='#000000' vlink='#000000' alink='#000000' text='#000000'><font face='Verdana' size='2'><strong>www.puschin.de</strong><br>Die Webseite http://www.puschin.de bietet eine interessante Webseite zu vielen Themen aus dem Bereich Linux und Windows. Man findet hier Tipps und Tricks zu cms php apache postfix openxchange tomcat windows linux firewall <br><br><font face='Verdana' size='2'><li><a href='cms.php?print=&aktion=thema_anzeigen&menue_id=191'>Startseite</a><font face='Verdana' size='2'><li><a href='cms.php?print=&aktion=thema_anzeigen&menue_id=63'>Knowledge base</a><font face='Verdana' size='2'><li><a href='cms.php?print=&aktion=thema_anzeigen&menue_id=57'>Kontakt</a><font face='Verdana' size='2'><li><a href='cms.php?print=&aktion=thema_anzeigen&menue_id=9'>Impressum</a></body>