Я пытаюсь аутентифицировать пользователей в экземпляре Active Directory с использованием Spring Security, я получаю исключение частичных результатов.Я иду по кругу, пытаясь понять это.Ниже моя конфигурация.
security-app-context
<authentication-manager erase-credentials="true">
<authentication-provider>
<user-service>
<user name="admin@damien.com" authorities="ROLE_ADMINISTRATOR" password="123admin123" />
</user-service>
</authentication-provider>
<authentication-provider ref="ldapActiveDirectoryAuthProvider"/>
</authentication-manager>
<bean id="ldapActiveDirectoryAuthProvider"
class="org.springframework.security.ldap.authentication.ad.ActiveDirectoryLdapAuthenticationProvider">
<constructor-arg value="myDomain.com" />
<constructor-arg value="ldap://ldapurl:389/" />
<property name="convertSubErrorCodesToExceptions" value="true"/>
</bean>
Ошибка, которую я получаю
org.springframework.dao.IncorrectResultSizeDataAccessException: Incorrect result size: expected 1, actual 0 org.springframework.security.ldap.SpringSecurityLdapTemplate.searchForSingleEntryInternal(SpringSecurityLdapTemplate.java:239)
Я изо всех сил пытаюсь найти примеры, и документация указывает, что яработает в правильном направлении.
Это из журналов
SpringSecurityLdapTemplate.java 213 - Searching for entry under DN '', base = 'dc=myDomain,dc=com', filter = '(&(objectClass=user)(userPrincipalName={0}))'
, и это то, что я ожидаю, чтобы это выглядело при успешной попытке некоторых скриптов, которые работают
Searching for entry under DN 'OU=Users and Groups,DC=one,DC=two,DC=myDomain,DC=com', base = 'OU=Users and Groups,DC=one,DC=two,DC=myDomain,DC=com', filter = '(&(objectClass=user)(userPrincipalName={0}))'
DoМне нужно, чтобы заполнить DN?Как?Я просмотрел свойства ActiveDirectoryLdapAuthenticationProvider и не вижу пути?Также база отключена, но myDomain.com является правильным доменом для пользователей, например, john.doe@myDomain.com.Кто-нибудь сталкивался с подобной проблемой?