spring acegi against with database

hi dude,

here I given acegi configuration with database. 

add applicationContext-acegi-security.xml into your web-inf folder.

<?xml version=“1.0″ encoding=“UTF-8″?>

<!DOCTYPE beans PUBLIC “-//SPRING//DTD BEAN//EN” “http://www.springframework.org/dtd/spring-beans.dtd”>

<beans>

 

<!– ======================== FILTER CHAIN ======================= –>

 

<bean id=“filterChainProxy”

class=“org.acegisecurity.util.FilterChainProxy”>

 

<property name=“filterInvocationDefinitionSource”>

 

<value>

CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON

 

PATTERN_TYPE_APACHE_ANT

 

 

/j_acegi_security_check*=httpSessionContextIntegrationFilter,authenticationProcessingFilter

 

 

/**/*=httpSessionContextIntegrationFilter,logoutFilter,authenticationProcessingFilter,securityContextHolderAwareRequestFilter,anonymousProcessingFilter,exceptionTranslationFilter,filterInvocationInterceptor

 

 

</value>

 

</property>

 

</bean>

 

<!– ======================== AUTHENTICATION ======================= –>

 

<bean id=“httpSessionContextIntegrationFilter”

class=“org.acegisecurity.context.HttpSessionContextIntegrationFilter”>

 

</bean>

 

<bean id=“logoutFilter”

class=“org.acegisecurity.ui.logout.LogoutFilter”>

 

<constructor-arg value=“/index.jsp” />

 

<!– URL redirected to after logout –>

 

<constructor-arg>

 

<list>

 

<bean

class=“org.acegisecurity.ui.logout.SecurityContextLogoutHandler” />

 

</list>

 

</constructor-arg>

 

</bean>

 

<bean id=“authenticationProcessingFilter”

class=“org.acegisecurity.ui.webapp.AuthenticationProcessingFilter”>

 

<property name=“authenticationManager”>

 

<ref bean=“authenticationManager” />

 

</property>

 

<property name=“authenticationFailureUrl”>

 

<value>/login.jsp?login_error=1</value>

 

</property>

 

<property name=“defaultTargetUrl”>

 

<value>/</value>

 

</property>

 

<property name=“filterProcessesUrl”>

 

<value>/j_acegi_security_check</value>

 

</property>

 

</bean>

 

<bean id=“securityContextHolderAwareRequestFilter”

class=“org.acegisecurity.wrapper.SecurityContextHolderAwareRequestFilter” />

 

<bean id=“anonymousProcessingFilter”

class=“org.acegisecurity.providers.anonymous.AnonymousProcessingFilter”>

 

<property name=“key”>

 

<value>foobar</value>

 

</property>

 

<property name=“userAttribute”>

 

<value>anonymousUser,ROLE_ANONYMOUS</value>

 

</property>

 

</bean>

 

<bean id=“exceptionTranslationFilter”

class=“org.acegisecurity.ui.ExceptionTranslationFilter”>

 

<property name=“authenticationEntryPoint”>

 

<ref local=“authenticationProcessingFilterEntryPoint” />

 

</property>

 

<property name=“accessDeniedHandler”>

 

<bean class=“org.acegisecurity.ui.AccessDeniedHandlerImpl”>

 

<property name=“errorPage” value=“/accessDenied.jsp” />

 

</bean>

 

</property>

 

</bean>

 

 

<!– Note the order that entries are placed against the objectDefinitionSource is critical.

The FilterSecurityInterceptor will work from the top of the list down to the FIRST pattern that matches the request URL.

 

Accordingly, you should place MOST SPECIFIC (ie a/b/c/d.*) expressions first, with LEAST SPECIFIC (ie a/.*) expressions last –>

 

 

 

<bean id=“filterInvocationInterceptor”

class=“org.acegisecurity.intercept.web.FilterSecurityInterceptor”>

 

<property name=“authenticationManager”>

 

<ref bean=“authenticationManager” />

 

</property>

 

<property name=“accessDecisionManager”>

 

<ref local=“httpRequestAccessDecisionManager” />

 

</property>

 

<property name=“objectDefinitionSource”>

 

<value>

PATTERN_TYPE_APACHE_ANT

 

/index.jsp=ROLE_ADMIN,ROLE_TECHNICIAN

 

/order/createOrder.jsp=ROLE_TECHNICIAN

 

/order/authorizeOrder.jsp=ROLE_ADMIN

 

/login.jsp=ROLE_ANONYMOUS,ROLE_TECHNICIAN,ROLE_ADMIN

 

 

</value>

 

</property>

 

</bean>

 

 

<!– =================Custom filterInvocationInterceptor implementation starts here ==================–>

 

<!–bean id=”filterInvocationInterceptor”

class=”org.acegisecurity.intercept.web.FilterSecurityInterceptor”>

 

<property name=”authenticationManager”>

 

<ref bean=”authenticationManager” />

 

</property>

 

<property name=”accessDecisionManager”>

 

<ref local=”httpRequestAccessDecisionManager” />

 

</property>

 

<property name=”objectDefinitionSource”>

 

<ref local=”dbdrivenFilterInvocationDefinitionSource” />

 

</property>

 

</bean>

 

 

<bean id=”dbdrivenFilterInvocationDefinitionSource”

 

class=”com.abc.security.authorization.DatabaseDrivenFilterInvocationDefinitionSource”>

 

<property name=”authorizationService”>

 

<ref local=”authorizationService” />

 

</property>

 

</bean>

 

 

<bean id=”authorizationService”

 

class=”com.abc.security.authorization.service.AuthorizationServiceImpl”>

 

<property name=”authDAO”>

 

<ref local=”authDAO” />

 

</property>

 

</bean>

 

<bean id=”authDAO”

 

class=”com.abc.security.authorization.dao.AuthorizationDAOImpl” /–>

 

 

 

<!– ==================Custom filterInvocationInterceptor implementation ends here ==================–>

 

 

<bean id=“authenticationManager”

class=“org.acegisecurity.providers.ProviderManager”>

 

<property name=“providers”>

 

<list>

 

<ref local=“daoAuthenticationProvider” />

 

<ref local=“anonymousAuthenticationProvider” />

 

</list>

 

</property>

 

</bean>

 

<bean id=“daoAuthenticationProvider”

class=“org.acegisecurity.providers.dao.DaoAuthenticationProvider”>

 

<property name=“userDetailsService” ref=“jdbcDaoImpl” />

 

<!– <property name=”userCache”>

<bean

 

class=”org.acegisecurity.providers.dao.cache.EhCacheBasedUserCache”>

 

<property name=”cache”>

 

<bean

 

class=”org.springframework.cache.ehcache.EhCacheFactoryBean”>

 

<property name=”cacheManager”>

 

<bean

 

class=”org.springframework.cache.ehcache.EhCacheManagerFactoryBean” />

 

</property>

 

<property name=”cacheName” value=”userCache” />

 

</bean>

 

</property>

 

</bean>

 

</property> –>

 

 

</bean>

 

<!– ==================Custom AuthenticationProvider implementation begins here ==================–>

 

<!–bean id=”daoAuthenticationProvider”

class=”com.abc.security.authentication.ABCSecurityAuthenticationProvider”>

 

<property name=”authenticationService”>

 

<ref local=”userAuthenticationService” />

 

</property>

 

</bean>

 

 

<bean id=”userAuthenticationService”

 

class=”com.abc.security.authentication.service.UserAuthenticationServiceImpl”>

 

<property name=”authenticationDAO”>

 

<ref local=”userAuthenticationDAO” />

 

</property>

 

</bean>

 

 

<bean id=”userAuthenticationDAO”

 

class=”com.abc.security.authentication.dao.UserAuthenticationDAOImpl” /–>

 

 

<!– ==================Custom AuthenticationProvider implementation ends here ==================–>

 

 

<bean id=“userDetailsService”

class=“org.acegisecurity.userdetails.memory.InMemoryDaoImpl”>

 

<property name=“userProperties”>

 

<bean

class=“org.springframework.beans.factory.config.PropertiesFactoryBean”>

 

<property name=“location” value=“/WEB-INF/users.properties” />

 

</bean>

 

</property>

 

</bean>

 

<bean id=“anonymousAuthenticationProvider”

class=“org.acegisecurity.providers.anonymous.AnonymousAuthenticationProvider”>

 

<property name=“key”>

 

<value>foobar</value>

 

</property>

 

</bean>

 

<!– Automatically receives AuthenticationEvent messages –>

 

<bean id=“loggerListener”

class=“org.acegisecurity.event.authentication.LoggerListener” />

 

<!– ===================== HTTP REQUEST SECURITY ==================== –>

 

<bean id=“authenticationProcessingFilterEntryPoint”

class=“org.acegisecurity.ui.webapp.AuthenticationProcessingFilterEntryPoint”>

 

<property name=“loginFormUrl”>

 

<value>/login.jsp</value>

 

</property>

 

<property name=“forceHttps”>

 

<value>false</value>

 

</property>

 

</bean>

 

<bean id=“httpRequestAccessDecisionManager”

class=“org.acegisecurity.vote.AffirmativeBased”>

 

<property name=“allowIfAllAbstainDecisions”>

 

<value>false</value>

 

</property>

 

<property name=“decisionVoters”>

 

<list>

 

<ref bean=“roleVoter” />

 

</list>

 

</property>

 

</bean>

 

<bean id=“roleVoter” class=“org.acegisecurity.vote.RoleVoter” />

 

 

 

 

<!– datasource configuration begins here –>

 

 

<bean id=“dataSource”

class=“org.springframework.jdbc.datasource.DriverManagerDataSource”>

 

<property name=“driverClassName”>

 

<value>sun.jdbc.odbc.JdbcOdbcDriver</value>

 

</property>

 

<property name=“url”>

 

<value>jdbc:odbc:sqlserver</value>

 

</property>

 

<property name=“username”>

 

<value>sa</value>

 

</property>

 

<property name=“password”>

 

<value>sa</value>

 

</property>

 

</bean>

 

 

 

 

<bean id=“jdbcDaoImpl”

class=“org.acegisecurity.userdetails.jdbc.JdbcDaoImpl”>

<property name=“dataSource”>

<ref bean=“dataSource” />

</property>

<property name=“usersByUsernameQuery”>

<value>

select username,password, 1 as enabled from users where

username=?

</value>

</property>

<property name=“authoritiesByUsernameQuery”>

<value>

select username,rolename from users where username=?

</value>

</property>

</bean>

 

<!– datasource configuration end here –>

</beans>

Leave a Reply