I am new to both Spring and Shiro so please bear with me if I fail to word my problem correctly. I am developing a restful web service in Spring MVC and it is necessary to secure the system against unauthorised usage and my project manager wants to use Shiro as the solution. At the moment our primary concern is just a basic authentication system when a user performs an action upon a resource. I have been through multiple examples of setting up Shiro and none of them seem to work for my implementation and was wondering if it would be possible to recieve some guidance as to where I might be going wrong.
My current web.xml implementation: / <?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <filter> <filter-name>ShiroFilter</filter-name> <filter-class>org.apache.shiro.web.servlet.IniShiroFilter</filter-class> <init-param> <param-name>config</param-name> <param-value> # The IniShiroFilter configuration is very powerful and flexible, while still remaining succinct. # Please read the org.apache.shiro.web.servlet.IniShiroFilter JavaDoc for information. # Quick Tip: Instead of having this configuration here in web.xml, you can instead # move all of this to a 'shiro.ini' file at the root of the classpath and remove # the 'config' init-param. Or you can specify the 'configPath' init-param and specify the # path to a resource at any location (url, file or classpath). This may be desired if the # config gets long and you want to keep web.xml clean. [users] # format: username = password, role1, role2, ..., roleN root = secret,admin guest = guest,guest presidentskroob = 12345,president,admin darkhelmet = ludicrousspeed,darklord,schwartz lonestarr = vespa,goodguy,schwartz [roles] # format; roleName = permission1, permission2, ..., permissionN admin = * schwartz = lightsaber:* goodguy = winnebago:drive:eagle5 [urls] /ipf/** = authcBasic </param-value> </init-param> </filter> <filter-mapping> <filter-name>ShiroFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <servlet> <servlet-name>ServletAdaptor</servlet-name> <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>ServletAdaptor</servlet-name> <url-pattern>/rest/*</url-pattern> </servlet-mapping> <session-config> <session-timeout> 30 </session-timeout> </session-config> </web-app>/ ---------------------------------------------- And my application context so you can getter a better understanding of the services general implementation: ----------------------------------------------- / <?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:tx="http://www.springframework.org/schema/tx" 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/tx http://www.springframework.org/schema/tx/spring-tx.xsd "> <context:annotation-config /> <tx:annotation-driven /> <bean id="farmDAO" class="com.ipf.persistance.JpaFarmDAO" /> <bean id="farmerDAO" class="com.ipf.persistance.JpaFarmerDAO" /> <bean id="farmeradvisorDAO" class="com.ipf.persistance.JpaFarmerAdvisorDAO" /> <bean id="timingDAO" class="com.ipf.persistance.JpaTimingDAO" /> <bean id="varietyDAO" class="com.ipf.persistance.JpaVarietyDAO" /> <bean id="cropDAO" class="com.ipf.persistance.JpaCropDAO" /> <bean id="farmercropDAO" class="com.ipf.persistance.JpaFarmerCropDAO" /> <bean id="zoneDAO" class="com.ipf.persistance.JpaZoneDAO" /> <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> <property name="entityManagerFactory" ref="entityManagerFactory"/> <property name="dataSource" ref="dataSource"/> </bean> <bean id="persistenceAnnotation" class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" /> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="${db.driverClass}" /> <property name="url" value="${db.connectionURL}" /> <property name="username" value="${db.username}" /> <property name="password" value="${db.password}" /> </bean> <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="jpaVendorAdapter" ref="jpaVendorAdapter" /> </bean> <bean id="jpaVendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> <property name="database" value="POSTGRESQL" /> <property name="showSql" value="true"/> <property name="generateDdl" value="false"/> <property name="databasePlatform" value="org.hibernate.dialect.PostgreSQLDialect" /> </bean> </beans> / ------------------------------------------------------- The problem I am currently facing is that the resources are still available no matter what configuration option I use. I should also mention I have tried the method of including the ini data in a file and setting up Shiro through beans however the result remained the same. There are no compilation errors to indicate a problem but the login page I would expect is not available and resources are returned normally. I am curious as to whether I am totally barking up the wrong tree or if I am relatively close in how I am trying to progress. Thankyou for your time! :) -- View this message in context: http://shiro-user.582556.n2.nabble.com/Setting-up-Shiro-to-work-with-spring-and-Jersey-Jackson-tp6948893p6948893.html Sent from the Shiro User mailing list archive at Nabble.com.
