是否有更简洁的方法来检查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);
答案 0 :(得分:5)
不幸的是,这是我看到它处理的唯一方法,因为我遇到的LDAP服务(Active Directory)产生的失败代码总是对消息中的失败代码进行编码。即使不是一种很好的做事方式,也不要觉得太糟糕。
答案 1 :(得分:1)
据我所知,没有更好的实施方案。您可以尝试在外部文件中为ldap错误代码提供完整的翻译,并使用它们进行翻译。