Para una descripción completa sobre todas las opciones que ofrece Spring Security Database Schema podéis ir a su reference guide.
Si lo que queréis es autenticar y autorizar a vuestros usuarios usando una base de datos los pasos son estos:
1) Crear Tablas para usuarios y roles de usuarios:
USERS (MySQL)
ROLES (MySQL)
Scripts:
| CREATE TABLE `users` (
`USER_ID` INT(10) UNSIGNED NOT NULL, `USERNAME` VARCHAR(45) NOT NULL, `PASSWORD` VARCHAR(45) NOT NULL, `ENABLED` tinyint(1) NOT NULL, PRIMARY KEY (`USER_ID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `user_roles` ( `USER_ROLE_ID` INT(10) UNSIGNED NOT NULL, `USER_ID` INT(10) UNSIGNED NOT NULL, `AUTHORITY` VARCHAR(45) NOT NULL, PRIMARY KEY (`USER_ROLE_ID`), KEY `FK_user_roles` (`USER_ID`), CONSTRAINT `FK_user_roles` FOREIGN KEY (`USER_ID`) REFERENCES `users` (`USER_ID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; |
2) Introduzco unos cuantos usuarios en mis tablas:
| INSERT INTO users (USER_ID, USERNAME,PASSWORD, ENABLED) VALUES (100, ‘user’, ‘123456’, TRUE);
INSERT INTO users (USER_ID, USERNAME,PASSWORD, ENABLED)VALUES (200, ‘admin’, ‘123456’, TRUE); |
3) Asigno roles a mis usuarios
| INSERT INTO user_roles (USER_ROLE_ID, USER_ID,AUTHORITY) VALUES (1, 100, ‘ROLE_USER’);
INSERT INTO user_roles (USER_ROLE_ID, USER_ID,AUTHORITY) VALUES (1, 200, ‘ROLE_ADMIN’); |
4) En mi configuración Spring creo un DataSource con la configuración para mi base de datos de Seguridad
| <bean id="dataSource4Security"
class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/security" /> <property name="username" value="root" /> <property name="password" value="password" /> </bean> |
NOTA: Recordad que en entornos productivos no debe usarse el DriverManagerDataSource
5) En la configuración Spring de Spring Security configuro mi AuthenticationManager:
| <authentication-manager>
<authentication-provider> <jdbc-user-service data-source-ref="dataSource" users-by-username-query=" select username,password, enabled from users where username=?" authorities-by-username-query=" select u.username, ur.authority from users u, user_roles ur where u.user_id = ur.user_id and u.username =? " /> </authentication-provider> </authentication-manager> |
Fijaos en las queries que se usan:
Para autenticar: select username,password, enabled from users where username=?
Para autorizar: select u.username, ur.authority from users u, user_roles ur where u.user_id = ur.user_id and u.username =?
6) En la configuración Spring de Spring Security configuro la seguridad sobre mi aplicación Web:
7) Ya puedo ejecutar mi aplicación web:







Replica a Oscar LG Cancelar la respuesta