Spring Security LDAP
25/05/2012 18:27
0
Boa tarde galera!

Estou com alguns problemas para a configuração correta do plugin LDAP.

Configurei a conexão com o servidor em meu config.groovy, da forma descrita abaixo. Está conectando corretamente no server (acompanhando os logs do servidor Ldap).
//*********** config.groovy ****************************************************
grails.plugins.springsecurity.ldap.authenticator.useBind = true
grails.plugins.springsecurity.ldap.context.managerDn = 'MEU MANAGER'
grails.plugins.springsecurity.ldap.context.managerPassword = 'MINHA SENHA'
grails.plugins.springsecurity.ldap.context.server = 'ldaps://XXX'
grails.plugins.springsecurity.ldap.search.base = 'GRUPO DE BUSCA'
grails.plugins.springsecurity.ldap.authorities.retrieveDatabaseRoles = true
grails.plugins.springsecurity.ldap.authorities.retrieveGroupRoles = false
grails.plugins.springsecurity.password.algorithm = 'SHA-256'
grails.plugins.springsecurity.ldap.useRememberMe = false
grails.plugins.springsecurity.ldap.search.filter = 'uid={0}'
grails.plugins.springsecurity.ldap.search.attributesToReturn = ['uid', 'cn', 'mail', 'userPassword']
grails.plugins.springsecurity.ldap.authenticator.attributesToReturn = null //null retorna todos

Minha classe Usuario:
//******************** USUARIO ***************************************************
class Usuario {
transient springSecurityService

String username
String nickName
String email
String password
boolean enabled
boolean accountExpired
boolean accountLocked
boolean passwordExpired

Usuario(username, nickName, email, password, enabled, accountExpired, accountLocked, passwordExpired){
this.username = username
this.nickName = nickName
this.email = email
this.password = password

this.enabled = enabled
this.accountExpired = accountExpired
this.accountLocked = accountLocked
this.passwordExpired = passwordExpired
}
...
}

Meu spring/resources.grooy:
//************************ RESOURCES SPRING ***************************************
beans = {
ldapUserDetailsMapper(MyUserDetailsContextMapper) {
// bean attributes
}
}

E a classe MyUserDetailsContextMapper:
//**************** CONTEXT MAPPER ************************************************
class MyUserDetailsContextMapper implements UserDetailsContextMapper {

UserDetails mapUserFromContext(DirContextOperations ctx, String username, Collection authorities) {

String name = ctx.originalAttrs.attrs['uid'].values[0].toString()
String nickName = ctx.originalAttrs.attrs['cn'].values[0]
String email = ctx.originalAttrs.attrs['mail'].values[0].toString().toLowerCase()
String password = ctx.originalAttrs.attrs['userPassword'].values[0].toString()


def userDetails = new Usuario(name, nickName, email, password, true, false, false, false)
return userDetails
}

void mapUserToContext(UserDetails user, DirContextAdapter ctx) {
throw new IllegalStateException("Only retrieving data from LDAP is currently supported")
}

}


Segui o modelo sugerido na documentação do plugin, com exceção que não criei uma classe MyUserDetails... uma vez que inseri os atributos na classe Usuario mesmo.

A autenticação está funcionando sem o LDAP, com a classe Usuário, e as regras armazenadas em uma classe Regras, ambas geradas pelo S2-quickstart do spring. Porém quando configuro o LDAP ele da erro de autenticação, devido a alguma falha de configuração minha.
Quero que o usuário valide-se no LDAP, caso não esteja em minha base de dados na tabela Usuario, o mesmo deve ser adicionado. As regras serão fornecidas pela minha base de dados, e não pelo LDAP.

Alguém sabe me dizer se estou fazendo algo de errado??

abrass
Tags: Spring Security Ldap


Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto