
0

0
01/11/2011 19:47
Oi Igor, neste caso, se não me engano, a fonte de cadastros de usuários teria de ser outra além do seu sistema, não?
Ou então, no seu caso, apenas parte dos dados dos usuários ficaram neste, e o restante, referente a autenticação, ficaria no LDAP. Estou indo mais ou menos pelo caminho certo pra te ajudar?
Henrique Lobo Weissmann (Kico)
Pontos: 1485

0

0
03/11/2011 10:25
Olá Henrique,
No meu caso, a fonte de cadastro seria somente o LDAP, basicamente ele teria usuário e senha para a aplicação do grails autenticar(na aplicação do grails não teria nenhuma informação do usuário).
Mas com o plugin acegi e usando o tutorial que coloquei no link acima, a fonte de dados tem que estar no GRAILS e no LDAP.
No grails é cadastrado somente o usuário e no LDAP usuário e senha.
A aplicação do grails autentica somente se você tiver o usuário cadastrado nela, acho que ela verifica o usuário informado no login em sua base e depois verifica o usuário e senha no LDAP e ele autentica corretamente.
Mas o que eu gostaria é que toda a fonte de dados(usuário e senha) ficassem somente no LDAP e nenhuma informação no GRAILS.
Como que eu faço isso?
Se precisar de mais informação eu te falo
Obrigado
Igor
Igor
Pontos: 74

0

0
03/11/2011 11:33
Oi Igor, entendi.
Não tenho muito conhecimento do plugin Grails, mas algum do Acegi. O que você poderia fazer neste caso é seguir um dos caminhos abaixo:
[list=1]
Implementar o seu próprio fazendo toda a autenticação via LDAP mesmo
[/list]
Neste caso, você vai ter de alterar o arquivo de configuração do Spring adicionando o seu authentication manager customizado e voilá, vai funcionar perfeito. Já fiz algo similar (não era LDAP, mas uma criatura bem mais cabulosa) com este plugin e funcionou perfeitamente.
Henrique Lobo Weissmann (Kico)
Pontos: 1485

0

0
03/11/2011 11:50
Henrique,
Como sou novato em grails, você poderia por favor ajudar a como fazer essa customização?
No arquivo SecurityConfig.groovy, tenho as configurações do LDAP:
useLdap = true
ldapRetrieveDatabaseRoles = false
ldapRetrieveGroupRoles = true
ldapServer = 'ldap://127.0.0.1:389'
ldapManagerDn = 'cn=manager,dc=empresa,dc=com,dc=br'
ldapManagerPassword = 'tux'
ldapSearchBase = 'dc=empresa,dc=com,dc=br'
ldapSearchFilter = '(uid={0})'
ldapGroupSearchBase = 'ou=grupos,dc=empresa,dc=com,dc=br'
ldapGroupSearchFilter = 'uniquemember={0}'
Aonde eu aponto esse authentication manager customizado e como que eu customizo para autenticar no LDAP com usuário e senha?
Muito obrigado,
Igor
Igor
Pontos: 74

0

0
03/11/2011 13:58
Oi Igor,
no caso, não sei se só por configurações você resolveria o problema não. Eu me lembro que no meu caso eu tive de implementar em Java mesmo (poderia ser em Grails sem problema) o authentication manager para a minha situação.
Ai, basta você incluir o jar (ou código fonte) no seu projeto e, no arquivo de configuração do Spring, adicionar este authentication manager que você criou.
Henrique Lobo Weissmann (Kico)
Pontos: 1485

0

0
03/11/2011 14:18
Henrique,
Olhando o site http://grails.org/AcegiSecurity+Plugin+-+Custom+UserDetailsService
Seria isso que eu teria que fazer?
Eu criei a classe MyUserDetailsService dentro de scr/groovy:
package bookstore;
import org.springframework.security.userdetails.UserDetails;
import org.springframework.security.userdetails.UserDetailsService;
public class MyUserDetailsService implements UserDetailsService {
public UserDetails loadUserByUsername(final String username)
throws UsernameNotFoundException, DataAccessException {
// lookup user and data
return new MyUserDetails(username, password, enabled,
accountNonExpired, credentialsNonExpired,
accountNonLocked, authorities, id, fullName);
}
}
e coloquei no conf/stpring/resources.groovy:
beans = {
userDetailsService(bookstore.MyUserDetailsService)
}
Mas ao carregar o projeto, dá o seguinte erro:
[groovyc] org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
[groovyc] /home/igordami/ldap_teste/bookstore/src/groovy/MyUserDetailsService.groovy: 10: unable to resolve class UsernameNotFoundException
[groovyc] @ line 10, column 4.
[groovyc] public UserDetails loadUserByUsername(final String username)
[groovyc] ^
[groovyc]
[groovyc] /home/igordami/ldap_teste/bookstore/src/groovy/MyUserDetailsService.groovy: 10: unable to resolve class DataAccessException
[groovyc] @ line 10, column 4.
[groovyc] public UserDetails loadUserByUsername(final String username)
[groovyc] ^
[groovyc]
[groovyc] /home/igordami/ldap_teste/bookstore/src/groovy/MyUserDetailsService.groovy: 15: unable to resolve class MyUserDetails
[groovyc] @ line 15, column 14.
[groovyc] return new MyUserDetails(username, password, enabled,
[groovyc] ^
[groovyc]
[groovyc] 3 errors
Compilation error: Compilation Failed
Desculpe minha ignorância, mas com base no site http://grails.org/AcegiSecurity+Plugin+-+Custom+UserDetailsService você poderia ajudar a implementar as classes?
Obrigado
Igor
Pontos: 74