javax.security.auth.login异常
代码正在尝试对LDAP服务器进行身份验证。当用户的密码或帐户过期时,它必须抛出一个错误 当我尝试使用过期密码/帐户登录时,会引发javax.security.auth.login异常,java,authentication,ldap,Java,Authentication,Ldap,代码正在尝试对LDAP服务器进行身份验证。当用户的密码或帐户过期时,它必须抛出一个错误 当我尝试使用过期密码/帐户登录时,会引发FailedLoginException: FailedLoginException! Password Incorrect/Password Required. 如文档所述,它应该抛出AccountExpiredException或CredentialExpiredException 如何查找密码或帐户是否已过期 下面是我的代码(简化) 目录服务器可能会在绑定响应中
FailedLoginException
:
FailedLoginException! Password Incorrect/Password Required.
如文档所述,它应该抛出AccountExpiredException
或CredentialExpiredException
如何查找密码或帐户是否已过期
下面是我的代码(简化)
目录服务器可能会在绑定响应中返回密码过期或密码过期响应控件。LDAP客户端应始终检查LDAP响应中的响应控件,不支持控件操作的API不应用于非平凡代码。另见“”
//Create login context
LoginContext lc = null;
try {
lc = new LoginContext("applicationPolicyName", new UsernamePasswordHandler(username, password));
} catch(LoginException le) {
log.info("LoginContext cannot be created. "+ le.getMessage());
} catch(SecurityException se) {
log.info("LoginContext cannot be created. "+ se.getMessage());
}
try {
lc.login();
} catch (AccountExpiredException e) {
log.info("AccountExpiredException!. "+ e.getMessage());
} catch (CredentialExpiredException e) {
log.info("CredentialExpiredException!. "+ e.getMessage());
} catch (FailedLoginException e) {
log.info("FailedLoginException!. "+ e.getMessage());
} catch(LoginException le) {
log.info("Authentication failed. " + le.getMessage());
}