Spring Security & Active Directory LDAP Ошибка 32, проблема 2001 (NO_OBJECT) - PullRequest
4 голосов
/ 20 сентября 2011

Я пытаюсь снова аутентифицировать пользователя AD LDS \ ADAM, используя среду Spring и Spring Security 3.0.Я продолжаю получать следующую ошибку, и, надеюсь, кто-то из вас может объяснить, в чем проблема.

[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 (без SAMAccountName в LDS), и когда я ищу по серверу 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 как учетная запись администратора, которая принадлежит группе читателей по ролям.Этот пользователь находится на том же уровне, что и имя пользователя, которое я пытаюсь подтвердить.

Как вы, вероятно, можете сказать, у меня нет четких идей относительно того, почему я получаю эту ошибку, и, надеюсь, кто-то сможет мне помочьили направьте меня в правильном направлении,

Приветствия и заранее спасибо

Ответы [ 2 ]

3 голосов
/ 27 сентября 2011

Я думаю, что наконец-то дошел до сути, надеюсь, это поможет кому-то еще.Ниже приведена конфигурация для моей безопасности:

<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 (если у вас его нет, импортируйте его из предоставленных файлов ldf).для СПД).Теперь создайте пользователя, а затем группу, добавив пользователя в группу, созданную в AD

. В этот момент я получил ошибку Ldap 32. После отладки с помощью весеннего кода безопасности и просмотра журналов событийСервер Я догадался, что проблема была в том, как был настроен AD LDS.После долгих размышлений и догадок я наткнулся на проблему.

Чтобы решить эту проблему, я добавил пользователя, с которым хотел войти (не manager-dn), в группу читателей, чтобы обеспечить успешное выполнение.привязывать.Это решило проблему.

Надеюсь, это пригодится?

0 голосов
/ 21 сентября 2011

Я заметил странную вещь в вашем вопросе. Вы делаете поиск:

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

с (uid=mologan) в качестве фильтра и возвращением результата uid: chweeks это просто опечатка / прошлое из результата другого поиска?

еще одна вещь, о которой вы написали LDAP.EXE вы имеете в виду LDP.EXE

---- EDITED ------

Можете ли вы попробовать такую ​​конфигурацию

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

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