是否有更简洁的方法来分析错误代码的AuthenticationException?

时间:2010-08-06 07:00:45

标签: java active-directory ldap

是否有更简洁的方法来检查javax.naming.AuthenticationException(或弹簧)是否存在主要故障原因? LDAP Wiki (Binding Errors)中描述了不同的错误。

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 个答案:

答案 0 :(得分:5)

不幸的是,这是我看到它处理的唯一方法,因为我遇到的LDAP服务(Active Directory)产生的失败代码总是对消息中的失败代码进行编码。即使不是一种很好的做事方式,也不要觉得太糟糕。

答案 1 :(得分:1)

据我所知,没有更好的实施方案。您可以尝试在外部文件中为ldap错误代码提供完整的翻译,并使用它们进行翻译。