Как получить конкретные ошибки при использовании ppolicy в LDAP из Java с использованием JNDI - PullRequest
3 голосов
/ 02 марта 2010

Я использую JNDI для аутентификации в веб-приложении. На стороне OpenLDAP я использую ppolicy, чтобы (например) заблокировать учетную запись пользователя после трех неудачных попыток входа в систему.

Моя проблема в том, что мне нужны конкретные сообщения об ошибках (например, «Учетная запись заблокирована»), чтобы пользователь знал, в чем заключалась конкретная проблема, но сейчас я просто получаю исключение при выполнении:

InitialLdapContext ctx = new InitialLdapContext(env, null);

И сообщение в исключении просто [LDAP: error code 49 - Invalid Credentials].

Я нашел связанный пост , который показывает пример того, как это сделать; тем не менее, это просто сбивает меня с толку, так как я нигде не смог найти классы, такие как PasswordExpiringResponseControl, плюс я получаю исключение сразу, чтобы я не смог выполнить respControls = ctx.getResponseControls().

Ответы [ 3 ]

3 голосов
/ 05 мая 2011

Я не занимался java в течение нескольких лет, и, надеюсь, мне не придется возвращаться, но у меня была эта закладка на случай, если это когда-нибудь случится.

http://forums.oracle.com/forums/thread.jspa?messageID=9238232

Я думаю, это именно то, что вы ищете.

3 голосов
/ 02 марта 2010

Это может быть более болезненным, чем стоит, но если вы используете Spring-LDAP , он автоматически преобразует эти коды ошибок в приятные исключения. В любом случае, библиотека действительно хороша и, вероятно, сделает ваш код чище и более удобным для обслуживания в долгосрочной перспективе.

Если вы не знакомы с Spring, то здесь может быть что-то вроде кривой обучения; однако, если вы хотите пойти по этому пути, это хорошая статья , в том числе о том, как настроить его с помощью JNDI и т. д.

0 голосов
/ 02 марта 2010

Я еще не пробовал, но это также может быть полезно: http://www.ibm.com/developerworks/tivoli/library/t-ldap-controls/

...