#java #grails #groovy #ldap #spring-security
#java #grails #отличный #ldap #spring-безопасность
Вопрос:
Я пытаюсь заставить плагин LDAP работать. Мне нужна только аутентификация LDAP в Active Directory, но, похоже, я чего-то не понимаю.
Конфигурация
grails {
plugins {
springsecurity {
userLookup.userDomainClassName = 'de.ac.dmf.security.User'
userLookup.authorityJoinClassName = 'de.ac.dmf.security.UserRole'
authority.className = 'de.ac.dmf.security.Role'
ldap {
context.managerDn = 'CN=dmf Systemuser,CN=Users,DC=dmf,DC=local'
context.managerPassword = 'Password1'
context.server = 'ldap://192.168.100.133:389/'
authorities{
groupSearchBase ='OU=Groups'
groupSearchFilter = '(member={0})'
retrieveGroupRoles = false
retrieveDatabaseRoles = false
defaultRole = 'USER'
ignorePartialResultException = true
}
search{
base = 'CN=Users,DC=dmf,DC=local'
filter = '(sAMAccountName={0})'
searchSubtree = true
}
// mapper.userDetailsClass = 'user'
// auth.hideUserNotFoundExceptions = false
useRememberMe = false
}
}
}
}
При каждом входе в систему я просто получаю это исключение
2011-04-29 08:49:09,129 [http-8080-1] DEBUG springsecurity.RequestHolderAuthenticationFilter - Authentication request failed: org.springframework.security.authentication.AuthenticationServiceException: [LDAP: error code 32 - 0000208D: NameErr: DSID-031001E4, problem 2001 (NO_OBJECT), data 0, best match of:
'CN=Users,DC=dmf,DC=local'; remaining name 'CN=Users,DC=dmf,DC=local'
Не имеет значения, какого пользователя из моего AD я пытаюсь аутентифицировать. Моя конфигурация неправильная?
Я использую
- Grails 1.3.7
- spring-security-core 1.1.2
- spring-security-ldap 1.04
Комментарии:
1. Моей проблемой был второй шаблон LDAP, который был инициализирован. После удаления этого моя проблема с входом в систему была решена.
Ответ №1:
вы уверены в своей базовой конфигурации? Похоже, OU=Users
могло бы сработать вместо CN=Users
. Самый простой способ разобраться в этом — использовать такой инструмент, как ad explorer (http://technet.microsoft.com/de-de/sysinternals/bb963907 ), подключитесь к своему AD, перейдите к пользователю и посмотрите на путь к пользователю…
Комментарии:
1. Привет, Ральф, я уже подтвердил путь к моему пользователю. Это всего лишь базовая машина, на которой не выполняется настройка, и в моем тестовом примере база верна.
2. В AD по умолчанию используется CN = Users, что довольно удивительно при первом знакомстве.
Ответ №2:
Попробуйте использовать:
filter = '(amp;(sAMAccountName={0})(objectclass=user))'
Это работает в нашей рекламе.
Комментарии:
1. Добавлять objectclass не должно быть необходимости, поскольку мы знаем, что sAMAccountName глобально уникален в домене AD).
2. Это не решило мою проблему. Я все еще не могу пройти аутентификацию в домене AD.
Ответ №3:
Вам не хватает списка имен поставщиков.
grails.plugins.springsecurity.providerNames = ['ldapAuthProvider',
'anonymousAuthenticationProvider',
'rememberMeAuthenticationProvider']