In continuation of my earlier blog on spring-test-mvc junit testing Spring Security layer with InMemoryDaoImpl, in this blog I will discuss how to use Spring Security’s JdbcDaoImpl class.
In this blog, we will be discussing same usecase and same code base as in this blog, the only difference being for testing this feature you need to run different testcase as below,
mvn clean test -Dtest=com.example.springsecurity.web.controllers.Video3JdbcUserServiceControllerTest
The database schema for user authorization is as below,
create table calendar_users ( id bigint identity, email varchar(256) not null unique, password varchar(256) not null, first_name varchar(256) not null, last_name varchar(256) not null ); create table calendar_user_authorities ( id bigint identity, calendar_user bigint not null, authority varchar(256) not null, );
Below is the JDBC configuration to identify the user and his role/authorization to access.
<authentication-manager> <authentication-provider> <jdbc-user-service id="userDetailsService" data-source-ref="dataSource" users-by-username-query="select email,password,true from calendar_users where email = ?" authorities-by-username-query="select cua.id, cua.authority from calendar_users cu, calendar_user_authorities cua where cu.email = ? and cu.id = cua.calendar_user"/> </authentication-provider> </authentication-manager>
I hope this blog helped you. In my next blog, I will demo how to use LDAP for Securing an application.
REFERENCE
Spring Security 3.1 by Robert Winch and Peter Mularien