2010-08-06 15 views
5

¿Hay alguna manera más clara de verificar el javax.naming.AuthenticationException (o primavera) por el motivo principal de falla? Los diferentes errores se describen en LDAP Wiki (Binding Errors).¿Hay alguna manera más clara de analizar AuthenticationException para el código de error?

La AuthenticationException no proporciona suficiente API para determinar fácilmente el código de error. El único contenido es el mensaje de excepción.

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

El bloque identifing es los "datos 773" - de pie para el error ERROR_PASSWORD_MUST_CHANGE. ¡Pero me parece muy extraño comprobar message.contains("data 773")! ¿Hay alguna forma mejor de verificar el código de error?


El fragmento que arroja el AuthenticationException se escribe con el org.springframework.security.ldap.DefaultSpringSecurityContextSource.

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

Respuesta

5

Lamentablemente esta es la única forma en que lo he visto manejado porque los códigos de falla producidos por el servicio LDAP con el que tengo experiencia (Active Directory) siempre codifican el código de falla en el mensaje. No te sientas mal aunque no sea una buena forma de hacer las cosas.

1

Por lo que sé, no hay una mejor implementación para esto. Podría tratar de proporcionar una traducción completa de los códigos de error ldap en un archivo externo y usarlos para traducir.

Cuestiones relacionadas