Код ошибки аутентификации LDAP в AD

У меня есть один вопрос, я пытаюсь аутентифицироваться в AD через LDAP, и когда я ввожу неверные учетные данные, я получаю сообщение об исключении, подобное этому: LDAPException(resultCode=49 (invalid credentials), errorMessage='80090308: LdapErr: DSID-0C0903A9, comment: AcceptSecurityContext error, data 52e, v1db0, и это нормально, но более точная причина этого исключения заключается в части "данных 52e ", а мне пишет "недействительные учетные данные". Когда учетные данные в порядке, но, например, «срок действия пароля истек» в сообщении об исключении, я получу «данные 532». Эта часть сообщения может иметь разные значения в зависимости от причины исключения (533-аккаунт отключен, 701-аккаунт просрочен и т. д.). Моя проблема в том, как поймать только эту часть сообщения об исключении. Я хочу обработать исключение в соответствии с этим кодом ошибки. Например:

switch(err_code){
case 52e:
System.out.println("invalid credentials");
break;
case "530,":
System.out.println("not permitted to logon at this time");
break;
}

Но я не хочу использовать регулярные выражения для сопоставления кода ошибки. Любые идеи?


person user2764353    schedule 10.09.2013    source источник
comment
Проверьте содержимое диагностического сообщения с помощью LDAPException#getDiagnosticMessage().   -  person Terry Gardner    schedule 04.10.2013


Ответы (1)


Эти коды, вероятно, специфичны для реализации Active Directory. Посмотрите объяснение к похожему вопросу.

person Maksim Sorokin    schedule 10.09.2013