Как использовать плагин LDAP на Grails?
Я начинаю новый проект на Groovy и Grails. Сейчас я работаю над частью аутентификации, и, поскольку у нас есть сервер LDAP, я хочу работать с аутентификацией с использованием LDAP. Я начал настраивать свою среду, я использую SpringSource Tool Suite и Grails 1.3.5. Когда я начал работать с частью аутентификации, я установил два плагина:
- springSecurityCore - 1.0.1
- springSecurityLdap - 1.0.1
Я также выполнил команду "s2 quickstart" для плагина LDAP.
Все выглядит отлично, я могу использовать LoginController и LogoutController, я могу защитить веб-страницу, чтобы ее можно было увидеть только при входе в систему. Я делаю это, создавая пользователя в BootStrap.groovy
Я также настроил все параметры LDAP и Spring Security Core в Config.groovy с соответствующими значениями нашего сервера LDAP:
grails.plugins.springsecurity.ldap.context.managerDn
grails.plugins.springsecurity.ldap.context.managerPassword
grails.plugins.springsecurity.ldap.context.server
grails.plugins.springsecurity.ldap.authorities.groupSearchBase
grails.plugins.springsecurity.ldap.search.base
grails.plugins.springsecurity.userLookup.userDomainClassName
grails.plugins.springsecurity.userLookup.authorityJoinClassName
grails.plugins.springsecurity.authority.className
Однако я не знаю, как проверить, что аутентификация выполняется с сервером LDAP. Я уверен, что это не сделано с LDAP, потому что, когда я захожу в окно входа в систему, когда приложение работает, и я пытаюсь пройти аутентификацию с моим именем пользователя и паролем, которые я обычно использую для сервера LDAP, он говорит, что не может найти это пользователь. Если я пытаюсь пройти аутентификацию с пользователем, которого я создал на BootStrap.groovy, я могу войти в систему, но я предполагаю, что пользователь создается только локально, и это временно.
- Как я могу установить в качестве поставщика аутентификации сервер LDAP?
- Что еще мне нужно сделать после установки ядра безопасности и плагинов ldap после запуска "s2 quickstart"?
Эта вещь Groovy и Grails делает так много вещей на заднем плане, что в начале трудно понять, где все настроить.
Заранее спасибо за помощь
РЕДАКТИРОВАТЬ: Я искал информацию о том, как использовать эти плагины, но я не нашел ничего, что хорошо документировано, я нашел информацию об Acegi, но этот плагин больше не поддерживается, поэтому я спрашиваю здесь
РЕДАКТИРОВАТЬ: Чтение этого (я посмотрю, если можно использовать LDAP): http://blog.springsource.com/2010/08/11/simplified-spring-security-with-grails/
2 ответа
1.Как я могу установить провайдер аутентификации как сервер LDAP?
Я вполне уверен, что это запись Config.groovy, которая активирует аутентификацию LDAP.
grails.plugins.springsecurity.providerNames = ['ldapAuthProvider',
'anonymousAuthenticationProvider',
'rememberMeAuthenticationProvider']
2. Что еще мне нужно сделать после установки ядра безопасности и плагинов ldap после запуска "s2 quickstart"?
Я нашел это обсуждение очень полезным: CustomUserDetailsService. Результатом стал этот метод в расширении UserDetailsContextMapper:
UserDetails mapUserFromContext(org.springframework.ldap.core.DirContextOperations ctx,
java.lang.String username,
java.util.Collection<GrantedAuthority> authority) {
User.withTransaction { status ->
def user = getUser(ctx) // Creates and saves a MyUser domain class instance
def userDetails = new MyUserDetails(
username,
authority ?: NO_ROLES,
user.id,
user.name,
user.mail)
userDetails.fullname = user.name
userDetails.email = user.mail
return userDetails
}
}
И я думаю, что это resources.groovy запись была необходима:
beans = {
ldapUserDetailsMapper(MyUserDetailsContextMapper) {
}
Оба плагина имеют довольно обширную документацию в следующих местах:
http://burtbeckwith.github.com/grails-spring-security-core/docs/manual/index.html http://burtbeckwith.github.com/grails-spring-security-ldap/docs/manual/index.html