Boa tarde!!!
Estou iniciando um projeto e pretendo utilizar o Spring Security na parte de segurança.
Logo de inicio surgiu uma dúvida com relação ao Login: pela literatura que consultei, é necessário criar uma tabela no banco de dados com usuário, senha e role e, ao logar no Sistema, devemos pré-configurar um usuário e senha padrão para conexão com o banco de dados. A minha dúvida é se tem como logar diretamente com um usuário criado no banco de dados, ou seja, sem fixar um usuário e senha no arquivo xml, isso é possível?
Obrigado!
Atte.
Carlos.
[quote=cttahara]Boa tarde!!!
Estou iniciando um projeto e pretendo utilizar o Spring Security na parte de segurança.
Logo de inicio surgiu uma dúvida com relação ao Login: pela literatura que consultei, é necessário criar uma tabela no banco de dados com usuário, senha e role e, ao logar no Sistema, devemos pré-configurar um usuário e senha padrão para conexão com o banco de dados. A minha dúvida é se tem como logar diretamente com um usuário criado no banco de dados, ou seja, sem fixar um usuário e senha no arquivo xml, isso é possível?
Obrigado!
Atte.
Carlos.[/quote]
Sim, perfeitamente possível. O spring-security funciona com um arquivo xml. No XML você vai fixar as regras que definem a fonte de dados (no seu caso, os SQL’S que retornam o usuário, senha e roles (e também se está ativo ou não).)
Aqui você encontra como criar os esquemas do banco. http://static.springsource.org/spring-security/site/docs/3.0.x/reference/appendix-schema.html
No xml você deve informar que o provedor será JDBC.
<authentication-provider>
<jdbc-user-service data-source-ref="dataSource"/>
</authentication-provider>
Informe também o dataSource.
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.hsqldb.jdbcDriver"/>
<property name="url" value="jdbc:hsqldb:hsql://localhost:9001"/>
<property name="username" value="sa"/>
<property name="password" value=""/>
</bean>
Os sqls para “realizar o serviço de autenticação”.
<jdbc-user-service data-source-ref="dataSource"
authorities-by-username-query="select username,authority from users where username=?"/>
Links
http://www.mularien.com/blog/2008/07/07/5-minute-guide-to-spring-security/
http://www.guj.com.br/java/110361-spring-security---jdbc-authentication
Bom dia e obrigado pela resposta!
Não sei de entendi direito, porém, na realidade o que gostaria é de não setar no arquivo XML o usuário e senha, e sim passar ele como parâmetro em tempo de execução.
Fazendo uma comparação com o Hibernate, no Hibernate posso inserir os comandos abaixo na classe responsável pela conexão com o banco de dados, não setando, dessa forma, no arquivo .xml do Hibernate. Seria isso que gostaria de fazer com o Spring Security, ou seja, tenho uma tela JSF de Login e Senha, esse mesmo Login e Senha serão utilizados para conexão com o banco de dados, é possível?
Properties properties = new Properties();
properties.put("hibernate.connection.username","User");
properties.put("hibernate.connection.password","Password");
Configuration conf = new Configuration("hibernate.cfg.xml");
conf.setProperties(properties);
conf.configure();
Obrigado novamente!