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 %code% angezeigt. Im gist-Beispiel erwähnen sie das Aktualisieren des Schemas, in dem der Befehl %code% 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?
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 %code% 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 %code% . 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 %code% attribute, aber in der Testumgebung erfolgt die Suche mit %code% attribute.
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.