Hier gibt es ein Beispiel aus der Federsicherheit: ldap-xml , die einen ldap-Server ausführt und eine LDIF-Datei zum Testen importiert:
%Vor% %Vor%Ich muss dieses Arbeitsbeispiel ändern, in dem das Benutzersuchkriterium auf sAMAccountName statt auf uid basiert. Ich modifiziere die users.ldif wie folgt:
%Vor%aber apacheds zeigt eine Warnung beim Importieren von users.ldif:
%Vor%Es scheint, dass ich dieses neue Attribut, sAMAccountName, hinzufügen muss, indem ich das LDAP-Schema modifiziere. Wie geht das im Beispiel ldap-xml?
In diesem gist-Beispiel ändern sie das Schema mit "changetype: add". Wenn Sie dies jedoch in users.ldif hinzufügen, wird der Fehler We cannot have entries when reading a file which already contains changes
angezeigt. Im gist-Beispiel erwähnen sie das Aktualisieren des Schemas, in dem der Befehl ldifde
ausgeführt wird. Wie sollte ich das Projekt ldap-xml ändern, um dies zu tun?
Wie muss ich das Projekt ldap-xml ändern, so dass meine users.ldif ein Attribut sAMAccountName enthalten kann?
Fügen Sie Folgendes hinzu (es ist das minimale Fragment des Microsoft-Schemas, das sAMAccountName enthält) am Anfang der Datei users.ldif:
%Vor%Fügen Sie nun neue Objektklasse zu Personeneinträgen hinzu:
%Vor%Es reicht nicht, neue Einträge zu haben. Die ApacheDS-Konfiguration in Spring Security hat deaktivierten Schema Interceptor , so dass neue Schemaeinträge nicht standardmäßig erstellt werden. Wir können es einschalten, indem wir BeanPostProcessor erstellen, der das behebt:
%Vor%Wir müssen Bean im Anwendungskontext registrieren und konfigurieren:
%Vor%Es sollte jetzt funktionieren.
Ich hatte auch das selbe Problem und probierte die Lösung von @Karol, aber es funktionierte nicht für mich.
Ich habe das von Spring Framework bereitgestellte LdapTemplate
für den Zugriff auf den Ldap Server verwendet.
Das Problem war, dass der eingebettete ldap Server (in meinem Fall ApacheDS ) bestimmte Attribute nicht unterstützt wie sAMAccountName
. Als Testlösung habe ich diese Attributnamen in meinem Code aus der Eigenschaftendatei konfiguriert und die Attributnamen durch die Namen ersetzt, die im eingebetteten ApacheDS-Server in der Eigenschaftendatei der Testumgebung verfügbar sind. Und es hat wie ein Zauber funktioniert.
Beispielsweise basiert die Suche in LdapTemplate in der tatsächlichen Umgebung auf sAMAccountName
attribute, aber in der Testumgebung erfolgt die Suche mit uid
attribute.
Tags und Links spring-security spring-security-ldap