Ich habe eine Abfrage, die etwa wie folgt aussieht:LDAP-Suche nicht für bestimmte Zeichen auf einige Attribute
(|(mail=andrew*)(cn=andrew*)(sn=andrew*)(telephoneNumber=andrew*))
also einen Suchbegriff aus einer UI nimmt und sucht nach einem Spiel gegen Begriff * über ein Bündel von Attribute.
Der Benutzer gibt in diesem Fall andrew und die App fügt den Platzhalter hinzu. Wenn der Benutzer andrew (rückwärtiges Häkchen) eingibt, sucht die App nach andrew *.
Ich habe festgestellt, dass, wenn Telefonnumber in den gesuchten Attributen enthalten ist, die Abfrage mit einer javax.naming.InvalidAttributeValueException fehlschlägt, wenn sie ausgeschlossen wird, funktioniert die Abfrage ohne Fehler.
Ich interessiere mich nicht besonders für das Backtick allein, aber da es kein besonderes Zeichen in LDAP-Suchen ist, frage ich mich, warum ich dieses Verhalten bekomme und ob andere Charaktere ähnliche Ergebnisse erzielen. Wird es etwas im Schema geben, das dies erklärt, wenn ich herausfinden kann, wie ich es abfragen soll, oder wird es etwas anderes sein?
Wenn es darauf ankommt, Zugriff über eine Spring-Bibliothek in einer Java-App.
Danke, das sieht genau richtig aus. Die veraltete API scheint die verwendete zu sein, was erklären könnte, warum dies nicht bereits behandelt wird? – rich
In diesem speziellen Fall müssen Sie auf jeden Fall vorsichtig sein, da das Zurück-Häkchen überhaupt nicht gültig ist, wenn es mit phoneNumber übereinstimmt. Dies wird ** nicht ** von der Bibliothek gehandhabt, da das Beste, was wir ohnehin tun könnten, wäre, eine ähnliche Ausnahme auszulösen, wenn die Attributsyntax verletzt wird. Die Bibliothek behandelt nur das Entfernen von unsicheren Zeichen. Für diese Art von Attributen müssen Sie die Eingabe trotzdem bereinigen, was im Allgemeinen sehr schmerzhaft sein wird, aber für Telefonnummern könnten Sie einfach alle nicht numerischen Zeichen durch Leerzeichen ersetzen und WhitespaceWildcardsFilter verwenden. – marthursson