我试图使用Spring框架和Spring Security 3.0再次验证用户AD LDS \ ADAM的身份。我不断收到以下错误,希望这里的人可以解释问题所在。

[LDAP: error code 32 - 0000208D: NameErr: DSID-0315258B, problem 2001 (NO_OBJECT), data 0, best match of: 'CN=Users,DC=Domain,DC=local' ]; nested exception is javax.naming.NameNotFoundException: [LDAP: error code 32 - 0000208D: NameErr: DSID-0315258B, problem 2001 (NO_OBJECT), data 0, best match of: 'CN=Users,DC=Domain,DC=local' ]; remaining name 'cn=Mo Logan,cn=Users,dc=Domain,dc=local'


谁能解释一下与剩余名字位的最佳匹配是什么意思-这真的让我感到困惑吗?这种搜索区分大小写吗?服务器和客户端之间的时间差异等问题是否会有所作为?

根据我的在线阅读错误代码32表示找不到对象-非常有用,我相信您会同意的。这是我正在使用的配置信息:

<authentication-manager alias="ldapAuthenicationManager">
    <ldap-authentication-provider
        user-search-base="cn=Users,dc=Domain,dc=local"
        user-search-filter="(uid={0})"
        role-prefix="Users"
    />
</authentication-manager>

<ldap-server url="ldap://server:50006/" manager-dn="CN=Admin,CN=Users,DC=Domain,DC=local" manager-password="Password101" />


我正在通过uid(LDS中没有SAMAccountName)搜索,当我在服务器上使用ldap.exe通过相同的条件搜索时,我可以正确找到用户,例如:

ldap_search_s(ld, "CN=Users,DC=Domain,DC=local", 2, "(uid=mologan)", attrList,  0, &msg)

***Searching...

ldap_search_s(ld, "CN=Users,DC=Domain,DC=local", 2, "(uid=mologan)", attrList,  0, &msg)

Getting 1 entries:

Dn: CN=Mo Logan,CN=Users,DC=Domain,DC=local

badPasswordTime: 9/20/2011 1:19:51 PM GMT Standard Time;

badPwdCount: 0;

cn: Mo Logan;

distinguishedName: CN=Mo Logan,CN=Users,DC=Domain,DC=local;

dSCorePropagationData: 0x0 = (  );

instanceType: 0x4 = ( WRITE );

lastLogonTimestamp: 9/20/2011 9:10:32 AM GMT Standard Time;

lockoutTime: 0;

memberOf (2): CN=DMSUsers,CN=Users,DC=Domain,DC=local; CN=Users,CN=Roles,CN=Users,DC=Domain,DC=local;

msDS-UserAccountDisabled: FALSE;

name: Mo Logan;

objectCategory: CN=Person,CN=Schema,CN=Configuration,CN={BD500A33-CE7C-492F-9007-BF1B17F972EE};

objectClass (4): top; person; organizationalPerson; user;

objectGUID: 40f74ed4-6cf3-495e-a28c-6aa080a0333b;

objectSid: S-1-514506224-2209559093-2723712157-1234827279-3369888698-2052446679;

pwdLastSet: 9/20/2011 8:19:06 AM GMT Standard Time;

uid: mologan;

uSNChanged: 13994;

uSNCreated: 13985;

whenChanged: 9/20/2011 9:10:32 AM GMT Standard Time;

whenCreated: 9/20/2011 8:16:54 AM GMT Standard Time;


我将作为管理员帐户绑定到AD LDS,该帐户属于角色下的读取器组。该用户与我要验证的用户名位于同一级别。

您可能会告诉我,我对出现此错误的原因一无所知,并希望有人能够帮助我或指出正确的方向,

预先加油并感谢

最佳答案

我想我终于找到了答案,希望这对其他人有帮助。以下是我的安全性配置:

<authentication-manager alias="ldapAuthenicationManager">
    <ldap-authentication-provider
            user-search-filter="(uid={0})"
            group-search-filter="(member=userGroup)"
        >
    </ldap-authentication-provider>
</authentication-manager>

<ldap-server url="ldap://server:50006/CN=Users,CN=Domain,CN=local" manager-dn="Cn=Admin,CN=Domain,CN=local" manager-password="Password101" />


我必须在LDS中创建一个名为admin的用户,并将其分配给LDS中的读者角色(如果没有,请从为LDS提供的ldf文件中导入)。现在创建一个用户,然后创建一个组,将该用户添加到AD中创建的组中

这时我遇到了Ldap错误32。在通过Spring安全代码进行调试并查看了服务器的事件日志后,我猜测问题出在AD LDS的设置方式上。经过大量的摆弄和猜测工作后,我偶然发现了这个问题。

为了解决这个问题,我最终将要登录的用户(不是manager-dn)添加到阅读器组,以允许成功绑定。这样做解决了问题。

希望这是有用的?

10-04 20:16