Есть ли более точный способ проверки 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);