-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Initial commit for my Jersey + Spring Security test app.
- Loading branch information
0 parents
commit a5b604c
Showing
9 changed files
with
409 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
target/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,174 @@ | ||
|
||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||
<modelVersion>4.0.0</modelVersion> | ||
|
||
<groupId>org.losohome</groupId> | ||
<artifactId>jersey-spring-security</artifactId> | ||
<version>1.0-SNAPSHOT</version> | ||
<packaging>war</packaging> | ||
|
||
<name>jersey-spring-security Web App</name> | ||
|
||
<properties> | ||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> | ||
</properties> | ||
|
||
<dependencies> | ||
<dependency> | ||
<groupId>org.springframework</groupId> | ||
<artifactId>spring-context</artifactId> | ||
<version>3.0.5.RELEASE</version> | ||
</dependency> | ||
|
||
<dependency> | ||
<groupId>org.springframework.security</groupId> | ||
<artifactId>spring-security-core</artifactId> | ||
<version>3.0.5.RELEASE</version> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.springframework.security</groupId> | ||
<artifactId>spring-security-config</artifactId> | ||
<version>3.0.5.RELEASE</version> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.springframework.security</groupId> | ||
<artifactId>spring-security-web</artifactId> | ||
<version>3.0.5.RELEASE</version> | ||
</dependency> | ||
|
||
<dependency> | ||
<groupId>cglib</groupId> | ||
<artifactId>cglib</artifactId> | ||
<version>2.2</version> | ||
</dependency> | ||
|
||
<dependency> | ||
<groupId>com.sun.jersey</groupId> | ||
<artifactId>jersey-server</artifactId> | ||
<version>1.6</version> | ||
</dependency> | ||
<dependency> | ||
<groupId>com.sun.jersey</groupId> | ||
<artifactId>jersey-client</artifactId> | ||
<version>1.6</version> | ||
</dependency> | ||
<dependency> | ||
<groupId>com.sun.jersey.contribs</groupId> | ||
<artifactId>jersey-spring</artifactId> | ||
<version>1.6</version> | ||
<exclusions> | ||
<exclusion> | ||
<groupId>org.springframework</groupId> | ||
<artifactId>spring</artifactId> | ||
</exclusion> | ||
<exclusion> | ||
<groupId>org.springframework</groupId> | ||
<artifactId>spring-beans</artifactId> | ||
</exclusion> | ||
<exclusion> | ||
<groupId>org.springframework</groupId> | ||
<artifactId>spring-core</artifactId> | ||
</exclusion> | ||
<exclusion> | ||
<groupId>org.springframework</groupId> | ||
<artifactId>spring-context</artifactId> | ||
</exclusion> | ||
<exclusion> | ||
<groupId>org.springframework</groupId> | ||
<artifactId>spring-web</artifactId> | ||
</exclusion> | ||
<exclusion> | ||
<groupId>org.springframework</groupId> | ||
<artifactId>spring-aop</artifactId> | ||
</exclusion> | ||
<exclusion> | ||
<groupId>com.sun.jersey</groupId> | ||
<artifactId>jersey-grizzly2</artifactId> | ||
</exclusion> | ||
</exclusions> | ||
</dependency> | ||
|
||
<dependency> | ||
<groupId>org.eclipse.jetty</groupId> | ||
<artifactId>jetty-servlet</artifactId> | ||
<version>7.4.0.v20110414</version> | ||
</dependency> | ||
|
||
<dependency> | ||
<groupId>junit</groupId> | ||
<artifactId>junit</artifactId> | ||
<version>4.8.1</version> | ||
<scope>test</scope> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.springframework</groupId> | ||
<artifactId>spring-test</artifactId> | ||
<version>3.0.5.RELEASE</version> | ||
<scope>test</scope> | ||
</dependency> | ||
</dependencies> | ||
|
||
<build> | ||
<plugins> | ||
<plugin> | ||
<groupId>org.mortbay.jetty</groupId> | ||
<artifactId>jetty-maven-plugin</artifactId> | ||
<version>7.4.0.v20110414</version> | ||
</plugin> | ||
<plugin> | ||
<groupId>org.apache.maven.plugins</groupId> | ||
<artifactId>maven-compiler-plugin</artifactId> | ||
<version>2.3.2</version> | ||
<configuration> | ||
<source>1.6</source> | ||
<target>1.6</target> | ||
</configuration> | ||
</plugin> | ||
<plugin> | ||
<groupId>org.apache.maven.plugins</groupId> | ||
<artifactId>maven-war-plugin</artifactId> | ||
<version>2.1</version> | ||
<configuration> | ||
<failOnMissingWebXml>false</failOnMissingWebXml> | ||
</configuration> | ||
</plugin> | ||
<plugin> | ||
<groupId>org.apache.maven.plugins</groupId> | ||
<artifactId>maven-dependency-plugin</artifactId> | ||
<version>2.1</version> | ||
<executions> | ||
<execution> | ||
<phase>validate</phase> | ||
<goals> | ||
<goal>copy</goal> | ||
</goals> | ||
<configuration> | ||
<outputDirectory>${endorsed.dir}</outputDirectory> | ||
<silent>true</silent> | ||
<artifactItems> | ||
<artifactItem> | ||
<groupId>javax</groupId> | ||
<artifactId>javaee-endorsed-api</artifactId> | ||
<version>6.0</version> | ||
<type>jar</type> | ||
</artifactItem> | ||
</artifactItems> | ||
</configuration> | ||
</execution> | ||
</executions> | ||
</plugin> | ||
</plugins> | ||
<finalName>jersey-spring-security</finalName> | ||
</build> | ||
|
||
<repositories> | ||
<repository> | ||
<id>maven2-repository.java.net</id> | ||
<name>Java.net Repository for Maven</name> | ||
<url>http://download.java.net/maven/2/</url> | ||
<layout>default</layout> | ||
</repository> | ||
</repositories> | ||
|
||
</project> |
13 changes: 13 additions & 0 deletions
13
src/main/java/org/losohome/jerseyspringsecurity/AbstractResource.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
package org.losohome.jerseyspringsecurity; | ||
|
||
/** | ||
* | ||
* @author Loïc Frering <[email protected]> | ||
*/ | ||
class AbstractResource { | ||
|
||
public String sayHello(String name) { | ||
return "Hello " + name + "!"; | ||
} | ||
|
||
} |
20 changes: 20 additions & 0 deletions
20
src/main/java/org/losohome/jerseyspringsecurity/AccessDeniedMapper.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
package org.losohome.jerseyspringsecurity; | ||
|
||
import javax.ws.rs.core.Response; | ||
import javax.ws.rs.ext.ExceptionMapper; | ||
import javax.ws.rs.ext.Provider; | ||
import org.springframework.security.access.AccessDeniedException; | ||
|
||
/** | ||
* | ||
* @author Loïc Frering <[email protected]> | ||
*/ | ||
@Provider | ||
public class AccessDeniedMapper implements ExceptionMapper<AccessDeniedException> { | ||
|
||
@Override | ||
public Response toResponse(AccessDeniedException e) { | ||
return Response.status(401).entity(e.getMessage()).type("text/plain").build(); | ||
} | ||
|
||
} |
30 changes: 30 additions & 0 deletions
30
src/main/java/org/losohome/jerseyspringsecurity/HelloPermissionEvaluator.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
/* | ||
* To change this template, choose Tools | Templates | ||
* and open the template in the editor. | ||
*/ | ||
package org.losohome.jerseyspringsecurity; | ||
|
||
import java.io.Serializable; | ||
import org.springframework.security.access.PermissionEvaluator; | ||
import org.springframework.security.core.Authentication; | ||
|
||
/** | ||
* | ||
* @author Loïc Frering <[email protected]> | ||
*/ | ||
public class HelloPermissionEvaluator implements PermissionEvaluator { | ||
|
||
@Override | ||
public boolean hasPermission(Authentication authentication, Object targetDomainObject, Object permission) { | ||
if (targetDomainObject.toString().equals("Loïc")) { | ||
return true; | ||
} | ||
return false; | ||
} | ||
|
||
@Override | ||
public boolean hasPermission(Authentication a, Serializable srlzbl, String string, Object o) { | ||
throw new UnsupportedOperationException("Not supported yet."); | ||
} | ||
|
||
} |
25 changes: 25 additions & 0 deletions
25
src/main/java/org/losohome/jerseyspringsecurity/HelloResource.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
package org.losohome.jerseyspringsecurity; | ||
|
||
import javax.ws.rs.GET; | ||
import javax.ws.rs.Path; | ||
import javax.ws.rs.Produces; | ||
import javax.ws.rs.QueryParam; | ||
import org.springframework.security.access.prepost.PreAuthorize; | ||
import org.springframework.transaction.annotation.Transactional; | ||
|
||
/** | ||
* | ||
* @author Loïc Frering <[email protected]> | ||
*/ | ||
@Path("/hello") | ||
@Transactional | ||
public class HelloResource extends AbstractResource { | ||
|
||
@GET | ||
@Produces("text/plain") | ||
@PreAuthorize("hasPermission(#name, 'hello')") | ||
public String say(@QueryParam("name") String name) { | ||
return sayHello(name); | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
<?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" | ||
xmlns:security="http://www.springframework.org/schema/security" | ||
xsi:schemaLocation="http://www.springframework.org/schema/beans | ||
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd | ||
http://www.springframework.org/schema/context | ||
http://www.springframework.org/schema/context/spring-context-3.0.xsd | ||
http://www.springframework.org/schema/tx | ||
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd | ||
http://www.springframework.org/schema/security | ||
http://www.springframework.org/schema/security/spring-security-3.0.xsd"> | ||
|
||
<context:annotation-config /> | ||
<context:component-scan base-package="org.losohome.jerseyspringsecurity"> | ||
<context:include-filter type="annotation" expression="javax.ws.rs.Path" /> | ||
<context:include-filter type="annotation" expression="javax.ws.rs.ext.Provider" /> | ||
</context:component-scan> | ||
|
||
<security:http entry-point-ref="http403ForbiddenEntryPoint"> | ||
<security:anonymous enabled="true" /> | ||
</security:http> | ||
|
||
<security:global-method-security pre-post-annotations="enabled"> | ||
<security:expression-handler ref="expressionHandler"/> | ||
</security:global-method-security> | ||
|
||
<security:authentication-manager /> | ||
|
||
<bean id="expressionHandler" class="org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler"> | ||
<property name="permissionEvaluator" ref="helloPermissionEvaluator"/> | ||
</bean> | ||
|
||
<bean name="helloPermissionEvaluator" class="org.losohome.jerseyspringsecurity.HelloPermissionEvaluator" /> | ||
|
||
<bean name="http403ForbiddenEntryPoint" class="org.springframework.security.web.authentication.Http403ForbiddenEntryPoint" /> | ||
|
||
</beans> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<web-app 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" | ||
version="3.0"> | ||
|
||
<context-param> | ||
<param-name>contextConfigLocation</param-name> | ||
<param-value>classpath:applicationContext.xml</param-value> | ||
</context-param> | ||
|
||
<listener> | ||
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> | ||
</listener> | ||
|
||
<filter> | ||
<filter-name>springSecurityFilterChain</filter-name> | ||
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> | ||
</filter> | ||
<filter-mapping> | ||
<filter-name>springSecurityFilterChain</filter-name> | ||
<url-pattern>/*</url-pattern> | ||
</filter-mapping> | ||
|
||
<servlet> | ||
<servlet-name>Jersey Spring Web Application</servlet-name> | ||
<servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class> | ||
</servlet> | ||
<servlet-mapping> | ||
<servlet-name>Jersey Spring Web Application</servlet-name> | ||
<url-pattern>/*</url-pattern> | ||
</servlet-mapping> | ||
|
||
</web-app> |
Oops, something went wrong.