Moin,
ich möchte eine LDAP-Autorisierung mit Java prüfen. Dabei verbinde ich mich mit JNDI zum LDAP und gucke einfach nur, ob keine Exception fliegt (dann hat die Verbindung wohl geklappt und Username/Passwort sind korrekt).
Mein Problem ist nun folgendes: das ganze funktioniert nur, wenn ich als username den konkreten Pfad als DN angebe, also z.b. username = "cn=username,cn=Users,dc=bla,dc=blub". Es liegen jedoch nicht alle User an der gleichen Stelle im LDAP. Eine Kombination aus DN und Filter funktioniert leider auch nicht (username = "dc=bla,dc=blub?cn=username").
Hat jemand eine Idee, wie ich mit mit dem LDAP verbinden kann, ohne dabei den konkreten Pfad zum Userobjekt angeben zu müssen?
Eine andere Möglichkeit wäre ja, wenn man sich mit einem festen User anmeldet und dann eine Suche startet nach dem eigentlichen User. Das Problem daran ist nur, dass das Attribut userPassword nicht sichtbar ist. Ich kann also das Passwort nicht abrufen um zu überprüfen, ob es richtig ist.
Vielleicht kann ja auch jemand ein gutes LDAP-Framework für Java empfehlen?
TIA byto
ich möchte eine LDAP-Autorisierung mit Java prüfen. Dabei verbinde ich mich mit JNDI zum LDAP und gucke einfach nur, ob keine Exception fliegt (dann hat die Verbindung wohl geklappt und Username/Passwort sind korrekt).
Code:
Hashtable<Object, String> env = new Hashtable<Object, String>();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://host:port");
env.put(Context.REFERRAL, "follow");
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, username);
env.put(Context.SECURITY_CREDENTIALS, password);
try {
DirContext ctx = new InitialDirContext(env);
ctx.close();
return true;
}
catch (Exception e) {
return false;
}
Mein Problem ist nun folgendes: das ganze funktioniert nur, wenn ich als username den konkreten Pfad als DN angebe, also z.b. username = "cn=username,cn=Users,dc=bla,dc=blub". Es liegen jedoch nicht alle User an der gleichen Stelle im LDAP. Eine Kombination aus DN und Filter funktioniert leider auch nicht (username = "dc=bla,dc=blub?cn=username").
Hat jemand eine Idee, wie ich mit mit dem LDAP verbinden kann, ohne dabei den konkreten Pfad zum Userobjekt angeben zu müssen?
Eine andere Möglichkeit wäre ja, wenn man sich mit einem festen User anmeldet und dann eine Suche startet nach dem eigentlichen User. Das Problem daran ist nur, dass das Attribut userPassword nicht sichtbar ist. Ich kann also das Passwort nicht abrufen um zu überprüfen, ob es richtig ist.
Vielleicht kann ja auch jemand ein gutes LDAP-Framework für Java empfehlen?
TIA byto