正常情况LDAP返回的错误信息一般是下面这个样子的:
“The exception is [ LDAP: error code 49 - 80090308: LdapErr: DSID-0Cxxxxxx , comment: AcceptSecurityContext error, data xxx , vece ].”
或者是这个样子的:
“errorMessage:80090308:ldaperr:DSID-0Cxxxxxx , comment: AcceptSecurityContext error, data xxx , vece ].”
只要LDAP返回了上面的错误信息,就表示LDAP认证被拒绝了,接下来我们就需要根据上面的错误信息分析认证失败原因。
首先了解一下AD的错误信息代码结构,AD指令错误代码是一段在"data"之后并在"vece"或者"v893"这样文字之前的一段字符。并且这些错误代码伴随着BIND绑定过程返回,所以上面抓包的错误码就是“531”。
常见的错误代码解释如下:
525—用户不存在
52e—密码或凭据无效
530—此时不允许登录
531—在此工作站上不允许登录
532—密码过期
533—账户禁用
701—账户过期
773—用户必须重置密码
775—用户账户锁定
LDAP抓包返回如下错误
80090308: LdapErr: DSID-0C09030B, comment: AcceptSecurityContext error, data 525 , v893,
在上面错误信息里面,错误码是525,该数值是十六进制,表示用户不存在 ,对应的十进制是1317,微软活动目录给出的解释:ERROR_NO_SUCH_USER (指定的账户不存在.) 当用户名无效时返回此错误;
解决办法:检查帐号在AD上是否存在,如果使用EIA认证,EIA会直接提示“LDAP上没有该用户”;
LDAP抓包返回如下错误
80090308: LdapErr: DSID-0C09030B, comment: AcceptSecurityContext error, data 52e, v893 ;从报错语句看到错误代码是十六进制: 0x52e ,表示无效的凭证;对应的十进制是1326,表示ERROR_LOGON_FAILURE (登录失败,未知的用户名或者密码错误.) ,一般当用户名有效但是密码或者凭证无效的时候返回。
解决办法:确认域帐号密码是否正确;
LDAP抓包返回如下错误
80090308: LdapErr: DSID-0C09030B, comment: AcceptSecurityContext error, data 530, v893 ;错误代码对应的十六进制:是 0x530 ,表示该时间点禁止登录;对应的十进制数值是1328,微软解释:ERROR_INVALID_LOGON_HOURS (登录失败,登录时间违规.) 。仅当输入了正确的用户名和密码或凭证时才返回此值,说明用户被禁止登录了。
解决办法:检查AD侧配置的登录时间或者取消登录时间限制;
LDAP抓包返回如下错误
80090308: LdapErr: DSID-0C09030B, comment: AcceptSecurityContext error, data 531, v893 ;错误代码对应的十六进制是0x531,表示此用户禁止在当前工作站登录,对应的十进制是1329,微软解释: ERROR_INVALID_WORKSTATION (登录失败,在此计算机上该用户不允许登录.) LDAP[userWorkstations: ] ,仅当输入了正确的用户名和密码或凭证时才返回此值。出现此问题一般是用户限定了登录的计算机,可以查看AD是否配置了下图的登录工作站选项。
解决办法:取消登录工作站限制;如果是采用EIA认证,EIA对这种错误会采取放行处理,即即使AD返回了531错误,EIA也会给接入设备返回Code 2号认证通过报文;
LDAP抓包返回如下错误
80090308: LdapErr: DSID-0C09030B, comment: AcceptSecurityContext error, data 532, v893;错误码对应的十六进制: 0x532 – 表示密码过期
十进制: 1330 - ERROR_PASSWORD_EXPIRED (登录失败,指定的账户密码过期.)
LDAP[userAccountControl: <bitmask=0x00800000>] - PASSWORDEXPIRED 仅当输入了正确的用户名和密码或凭证时才返回此值。
解决办法:重置域帐号密码;如果是采用EIA认证,EIA对这种错误会采取放行处理,即即使AD返回了532错误,EIA也会给接入设备返回Code 2号认证通过报文;
LDAP抓包返回如下错误
80090308: LdapErr: DSID-0C09030B, comment: AcceptSecurityContext error, data 533, v893 ;错误码对应的十六进制: 0x533 - 账户被禁用
十进制: 1331 - ERROR_ACCOUNT_DISABLED (登录失败,账户当前被禁用了.) ;LDAP[userAccountControl: <bitmask=0x00000002>] - ACCOUNTDISABLE ,当输入了正确的用户名和密码或凭证时才返回此值。
解决办法:取消禁用帐号选项;
LDAP抓包返回如下错误
80090308: LdapErr: DSID-0C09030B, comment: AcceptSecurityContext error, data 701, v893;错误码对应的十六进制: 0x701 - 账户已过期
对应的十进制: 1793 - ERROR_ACCOUNT_EXPIRED (用户账户已过期.) LDAP[accountExpires: <value of -1, 0, or extemely large value indicates account will not expire>] - ACCOUNTEXPIRED ,当输入了正确的用户名和密码或凭证时才返回此值。
解决办法:调整帐号的失效时间;
LDAP抓包返回如下错误
80090308: LdapErr: DSID-0C09030B, comment: AcceptSecurityContext error, data 773, v893;对应的十六进制: 0x773 - 账户密码必须被重置
十进制: 1907 - ERROR_PASSWORD_MUST_CHANGE (用户密码在第一次登录之前必须修改.);LDAP[pwdLastSet: <value of 0 indicates admin-required password change>] - MUST_CHANGE_PASSWD ,只有输入了正确的用户名和密码或凭证时才返回此值。
解决办法:在AD侧修改帐号密码;如果是采用EIA认证,EIA对这种错误会采取放行处理,即即使AD返回了773错误,EIA也会给接入设备返回Code 2号认证通过报文;
LDAP抓包返回如下错误
80090308: LdapErr: DSID-0C09030B, comment: AcceptSecurityContext error, data 775, v893
十六进制: 0x775 ,表示账户被锁定
十进制: 1909 - ERROR_ACCOUNT_LOCKED_OUT (账户当前已被锁定,不允许登录The referenced account is currently locked out and may not be logged on to.) LDAP[userAccountControl: <bitmask=0x00000010>] - LOCKOUT ,需要注意的是即便是输入了错误的密码也可能返回此值。
解决办法:确认帐号是否被锁定或者密码是否错误。
最近一个项目需要调用AD域来进行用户名登陆的验证.第一次接触AD域,什么都不懂,就百度.搜索到了几篇优质资源,现在分享出来.旨在方便开发小白解决问题(如有侵权还请联系删除)
按顺序贴的.先是理论,然后是解决办法.如果只想解决问题,那么可以直接跳到最后.如果想学习,可以按顺序浏览.
域服务器的简单介绍:
https://blog.csdn.net/qq_37
49
7275/article/details/101554114
认证 –
LDAP
:
错误
代码
49
–
80090308
:
Ldap
Err:DSID-0C0
本文出处:http://blog.csdn.net/chaijunkun/article/details/23695001,转载请注明。由于本人不定期会整理相关博文,会对相应内容作出完善。因此强烈建议在原始出处查看此文。
本篇文章节选翻译自:http://www-01.ibm.com/support/docview.wss?uid=swg21290631
接下来显示的认证
错误
类似于...
=========================================================================
javax.naming.AuthenticationException: [
LDAP
:
error
code
49
-
80090308
:
Ldap
Err: DSID-0C090334, comment: AcceptSecurityContext
error
, data 52e, vece
原因:用户名或密码
错误
(可能账户的
ldap
访问AD域的的
错误
一般会如下格式:
Ldap
load
error
: [
LDAP
:
error
code
49
-
80090308
:
Ldap
Err: DSID-0C090334, comment: AcceptSecurityContext
error
, data525, vece]
其中红字部分的意思如下(这些
错误
码跟语言无关):
525 - 用户没有找到
52e - 证书
javax.naming.AuthenticationException: [
LDAP
:
error
code
49
- Invalid Credentials]
at com.sun.jndi.
ldap
.
Ldap
Ctx.map
Error
Code
(
Ldap
Ctx.java:3154)
at com.sun.jndi.
ldap
.
Ldap
Ctx.processReturn
Code
(
Ldap
Ctx....
用
ldap
方式访问AD域的的
错误
一般会如下格式:
LDAP
:
error
code
49
-
80090308
:
Ldap
Err: DSID-0C090334, comment: AcceptSecurityContext
error
, data
52e, vece
其中红字部分的意思如下:
525...
ldap
访问AD域的的
错误
一般会如下格式:
Ldap
load
error
: [
LDAP
:
error
code
49
-
80090308
:
Ldap
Err: DSID-0C090334, comment: AcceptSecurityContext
error
, data 525, vece]
其中红字部分的意思如下(这些
错误
码跟语言无关):
525 - 用户...
LDAP
帐号常见异常信息列表
Here is a list of Active Directory
error
s:
525 - user not found 用户不存在
52e - invalid credentials 用户验证密码
错误
530 - not permitted to logon at this time