Spring Security - Conexão com usuário do banco de dados

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!