Here are the basic configurations needed to integrate Spring, Spring Data, RestEasy, Apache Shiro and LDAP authentication.
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
<!-- LogBack Configuration File -->
<context-param>
<param-name>logbackConfigLocation</param-name>
<param-value>/WEB-INF/logback.xml</param-value>
</context-param>
<!-- Define the spring context locations -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/test-service-config.xml</param-value>
</context-param>
<!--
Filters
-->
<filter>
<filter-name>jpaFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
<init-param>
<param-name>targetBean</param-name>
<param-value>jpaFilter</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>jpaFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>shiroFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
<init-param>
<param-name>targetBean</param-name>
<param-value>shiroFilter</param-value>
</init-param>
<init-param>
<param-name>targetFilterLifecycle</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>shiroFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
<dispatcher>ERROR</dispatcher>
</filter-mapping>
<!--
Listeners
-->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<listener>
<listener-class>
ch.qos.logback.ext.spring.web.LogbackConfigListener
</listener-class>
</listener>
<!--
Servlet
-->
<servlet>
<servlet-name>testServlet</servlet-name>
<display-name>Test Servlet</display-name>
<description>
A Test Servlet
</description>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/test-web-config.xml
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>testServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
test-service-config.xml
<?xml version="1.0" encoding="utf-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xmlns:jpa="http://www.springframework.org/schema/data/jpa"
xmlns:repository="http://www.springframework.org/schema/data/repository"
xmlns:security="http://www.springframework.org/schema/security"
xsi:schemaLocation=
"http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/jdbc
http://www.springframework.org/schema/jdbc/spring-jdbc.xsd
http://www.springframework.org/schema/data/jpa
http://www.springframework.org/schema/data/jpa/spring-jpa.xsd
http://www.springframework.org/schema/data/repository
http://www.springframework.org/schema/data/repository/spring-repository.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security.xsd">
<context:annotation-config/>
<context:component-scan base-package="org.suresh.api.rest.v1"/>
<context:component-scan base-package="org.suresh.service"/>
<context:component-scan base-package="org.suresh.controllers"/>
<jpa:repositories base-package="org.suresh.repo"/>
<jdbc:embedded-database id="testDb" type="HSQL"/>
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="testDb"/>
<property name="persistenceUnitName" value="test"/>
<property name="packagesToScan">
<list>
<value>org.suresh.model</value>
</list>
</property>
<property name="jpaVendorAdapter">
<bean
class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="generateDdl" value="true"/>
<property name="database" value="HSQL"/>
</bean>
</property>
</bean>
<bean id="transactionManager"
class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory"/>
<property name="dataSource" ref="testDb"/>
</bean>
<!-- Security -->
<security:ldap-server
root="dc=suresh,dc=org"
ldif="classpath:resources/test-users.ldif" port="33389"/>
<bean id="shiroSecurityManager"
class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
<property name="realm" ref="ldapRealm"/>
</bean>
<bean id="ldapRealm" class="org.apache.shiro.realm.ldap.JndiLdapRealm">
<property name="userDnTemplate"
value="uid={0},ou=people,dc=suresh,dc=org"/>
<property name="contextFactory" ref="ldapContextFactory"/>
</bean>
<bean id="ldapContextFactory"
class="org.apache.shiro.realm.ldap.JndiLdapContextFactory">
<property name="url"
value="ldap://localhost:33389/dc=suresh,dc=org"/>
</bean>
<bean id="shiroFilter"
class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
<property name="securityManager" ref="shiroSecurityManager"/>
<property name="loginUrl" value="/views/login.jsp"/>
<property name="successUrl" value="/views/home.jsp"/>
<property name="filterChainDefinitions">
<value>
/api/** = authc
/views/** = authc
</value>
</property>
</bean>
<!-- enable shiro annotations -->
<bean id="lifecycleBeanPostProcessor"
class="org.apache.shiro.spring.LifecycleBeanPostProcessor"/>
<bean
class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" depends-on="lifecycleBeanPostProcessor"/>
<bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor">
<property name="securityManager" ref="shiroSecurityManager"/>
</bean>
<!-- Filters -->
<bean id="jpaFilter"
class="org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter"/>
</beans>
test-web-config.xml
<?xml version="1.0" encoding="utf-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation=
"http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<import resource="classpath:springmvc-resteasy.xml"/>
<context:annotation-config/>
<context:component-scan base-package="org.suresh.api.rest.v1"/>
<mvc:annotation-driven/>
<mvc:resources mapping="/images/**" location="/public/images/" order="-1"/>
<mvc:resources mapping="/stylesheets/**"
location="/public/stylesheets/" order="-1"/>
<mvc:resources mapping="/javascripts/**"
location="/public/javascripts/" order="-1"/>
<mvc:default-servlet-handler/>
<!-- RESTEasy prefix -->
<bean id="resteasy.handlerMapping" parent="abstract.resteasy.handlerMapping">
<property name="prefix" value="/api" />
</bean>
</beans>
0 comments:
Post a Comment