Есть ли более аккуратный способ анализа AuthenticationException для кода ошибки? - PullRequest
5 голосов
/ 06 августа 2010

Есть ли более точный способ проверки javax.naming.AuthenticationException (или пружины) по основной причине отказа? Различные ошибки описаны в LDAP Wiki (Ошибки привязки) .

AuthenticationException не предоставляет достаточного API для легкого определения кода ошибки. Единственным контентом является сообщение об исключении.

[LDAP: error code 49 - 80090308: 
 LdapErr: DSID-0C090334, 
 comment: AcceptSecurityContext error, data 773, vece]

Идентификационным блоком является «данные 773», обозначающие ошибку ERROR_PASSWORD_MUST_CHANGE. Но мне очень странно проверять наличие message.contains("data 773")! Есть ли лучший способ проверить код ошибки?


Фрагмент, который выбрасывает AuthenticationException, написан с org.springframework.security.ldap.DefaultSpringSecurityContextSource.

InitialLdapContext context = (InitialLdapContext) contextFactory
                     .getReadWriteContext(principal, password);

Ответы [ 2 ]

5 голосов
/ 06 августа 2010

К сожалению, это единственный способ, которым я видел, как он обрабатывается, потому что коды ошибок, генерируемые службой LDAP, с которой у меня есть опыт (Active Directory), всегда кодируют код ошибки в сообщении. Не чувствуйте себя слишком плохо, хотя это не очень хороший способ сделать что-либо.

1 голос
/ 06 августа 2010

Насколько я знаю, лучшей реализации для этого нет.Вы можете попытаться предоставить полный перевод для кодов ошибок ldap во внешнем файле и использовать их для перевода.

...