У меня действительно есть веб-приложение, где пользователи должны войти в систему. Пароль хранится в сервере LDAP. Вся информация о сервере LDAP хранится в сервере приложений (glassfish) как внешний jndi ресурс. Таким образом, мое приложение делает не знают что-либо о сервере LDAP, и только получает LdapContext как это:
@Resource(name = "ldap/users")
private LdapContext ctx;
С этим контекстом легко изменить или считать информацию, хранившую для пользователей, но как я проверяю их пароли? Обычно я просто сделал бы новое соединение для проверки пользовательского пароля. Как это:
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://localhost:389/o=JNDITutorial");
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, "cn=S. User, ou=NewHires, o=JNDITutorial");
env.put(Context.SECURITY_CREDENTIALS, "mysecret");
DirContext ctx = new InitialDirContext(env);
Но так как я не знаю это параметры, я не могу сделать этого. Таким образом, как я проверяю, является ли пароль пользователя правильным с моим LdapContext? Пароли хранятся зашифрованные (ssha), таким образом, я не могу только сравнить атрибуты.
Спасибо Raffael