【发布时间】:2014-04-23 03:34:10
【问题描述】:
我有一个问题,我正在尝试通过 LDAP 向 AD 进行身份验证,当我输入无效凭据时,我收到如下异常消息:
LDAPException(resultCode=49 (invalid credentials), errorMessage='80090308: LdapErr: DSID-0C0903A9, comment: AcceptSecurityContext error, data 52e, v1db0,这没关系,但此异常的更确切原因部分是“数据 52e”,它告诉我“凭据无效”。当凭据良好但例如异常消息中的“密码已过期”时,我将获得“数据 532”。这部分消息可以有不同的值,具体取决于异常原因(533 帐户已禁用、701 帐户已过期等)。我的问题是如何只捕获这部分异常消息。我想根据这个错误代码处理异常。例如:
switch(err_code){
case 52e:
System.out.println("invalid credentials");
break;
case "530,":
System.out.println("not permitted to logon at this time");
break;
}
但我不想使用正则表达式来匹配错误代码。有什么想法吗?
【问题讨论】:
-
使用 LDAPException#getDiagnosticMessage() 检查诊断消息的内容
标签: java authentication active-directory unboundid-ldap-sdk