Compare commits
174 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 11a61dc8cc | |||
| 2288d50f0e | |||
| d0c7fd92de | |||
| 7f246e1c0e | |||
| 53ccda1549 | |||
| 5413251132 | |||
| 0896d22995 | |||
| 6d30da2e1f | |||
| 55a25fa213 | |||
| cdc485d121 | |||
| 5e19ac5e7e | |||
| bab3c8fa33 | |||
| 9e56424567 | |||
| f75ebb22d8 | |||
| 980edebefa | |||
| 07848a1060 | |||
| 8207a29e52 | |||
| 1c22ec19e6 | |||
| 56e41df964 | |||
| f232f5ef05 | |||
| d467146e49 | |||
| c64b80564e | |||
| 90f230cbfa | |||
| 4cc2ffaa2d | |||
| a24065c361 | |||
| 789d29b26b | |||
| 29632ee9ea | |||
| 37aacc5e02 | |||
| 0284845289 | |||
| e6231584c8 | |||
| 23de257508 | |||
| 12ed990aa2 | |||
| d7d4ac9dc1 | |||
| 7c62164392 | |||
| eceb6a3587 | |||
| c4a1f1b4a8 | |||
| 7ecee8e733 | |||
| 63a334317b | |||
| 704b114842 | |||
| fcc9a34356 | |||
| 00042ff70b | |||
| fc1450f72c | |||
| a6cd1b6066 | |||
| 567b0ed030 | |||
| 4e6b12f8b4 | |||
| ae772294cb | |||
| c01f2d8501 | |||
| 28c6e9a8af | |||
| 13cb51c15f | |||
| b0ad8173b0 | |||
| ea27cb6593 | |||
| fe82c8ab4c | |||
| cf66f2f39e | |||
| 050407564c | |||
| 1374898cd8 | |||
| d5ed97eba6 | |||
| 8f29c2cc36 | |||
| 99d503f0a9 | |||
| 6c185f649b | |||
| 58be282f70 | |||
| 2df05ee2c3 | |||
| 72bc6bf539 | |||
| 1b26d03479 | |||
| dfaebfa63b | |||
| f794272bac | |||
| aa0a5b96ab | |||
| 27c7cd150b | |||
| b3d108fa44 | |||
| 975e4ec019 | |||
| 74f8534b17 | |||
| 478a9650aa | |||
| b79ba12502 | |||
| 72de17d79a | |||
| e27200a255 | |||
| c3f72f7b79 | |||
| b42cb9e3e1 | |||
| b40088b73d | |||
| 4116596a6c | |||
| 9de369c25f | |||
| bf2d2d4597 | |||
| c05f27af6c | |||
| cdac4d990b | |||
| db66843e0b | |||
| c36cc88ac4 | |||
| 7d82349b1e | |||
| b6ab9c85e9 | |||
| 29a8da4aa6 | |||
| b71989ecde | |||
| eeef91498a | |||
| 91bf099b01 | |||
| 137589325d | |||
| 0a184a8d79 | |||
| 2cb99f0791 | |||
| d85a0a20bc | |||
| 0a45d3170c | |||
| 89c5c56849 | |||
| 47acf17323 | |||
| 52c585aef1 | |||
| 89d80ed5c9 | |||
| 85a37bdc02 | |||
| fb1f2dc888 | |||
| d5842f949b | |||
| 3e3d819526 | |||
| 143c513f5c | |||
| 8eb89e3f12 | |||
| bdde468e7d | |||
| f574f2a2ac | |||
| 439a15b108 | |||
| 44fbf678bb | |||
| 9c94ef358d | |||
| 655ad90813 | |||
| a0ee80bc61 | |||
| 6b977d9b4b | |||
| 7ea79bacbc | |||
| fa177a22b1 | |||
| b9fbc568fb | |||
| 293e3e97ae | |||
| 08ec5797db | |||
| b20438562d | |||
| d4e26864d9 | |||
| 519d85877c | |||
| f31a5c5411 | |||
| 77b9209640 | |||
| ae39a4dcdd | |||
| f37e414442 | |||
| be687d6a84 | |||
| d6b81abcf2 | |||
| bf918df7a3 | |||
| dc7a3b30ea | |||
| 3be2f375f6 | |||
| 9146345673 | |||
| fb2cf96fa4 | |||
| 9a27f9f778 | |||
| e0b4945fad | |||
| d6f540fdee | |||
| 3f24210a2a | |||
| 13c5750f5d | |||
| 414289d466 | |||
| 5e88ebef2e | |||
| c074493f24 | |||
| 1337f99843 | |||
| cf721afc29 | |||
| 9133491da9 | |||
| 3632564972 | |||
| 7ea0d3d42f | |||
| d9e87d8222 | |||
| 3954e0b2c1 | |||
| 79fa1c70eb | |||
| fd6f9da184 | |||
| ea0466d666 | |||
| 2cc0d94481 | |||
| 32c767a30d | |||
| a11746a8d1 | |||
| a18265a163 | |||
| d7a2c0a98c | |||
| 9057fbe0ed | |||
| 537d8f974f | |||
| 783af4012b | |||
| 5f5b8052d8 | |||
| 7dbb8e777e | |||
| bb563967cc | |||
| 974105ed19 | |||
| 2cad2f401b | |||
| 3048e2c6e7 | |||
| 561f284718 | |||
| afc6a6ee0d | |||
| fa05e9c590 | |||
| 818be86d46 | |||
| 60704eb50e | |||
| f02b77794f | |||
| 1172d44397 | |||
| 49738e4588 | |||
| 3b13c1fdf4 | |||
| 8f6450ede1 |
+1
-2
@@ -18,5 +18,4 @@ build/
|
|||||||
*.ipr
|
*.ipr
|
||||||
*.iws
|
*.iws
|
||||||
.gradle/
|
.gradle/
|
||||||
atlassian-ide-plugin.xml
|
atlassian-ide-plugin.xml
|
||||||
/samples
|
|
||||||
+2
-2
@@ -16,7 +16,7 @@ Is there already an issue that addresses your concern? Do a bit of searching in
|
|||||||
If you're considering anything more than correcting a typo or fixing a minor bug , please discuss it on the [Spring Security forums](http://forum.springsource.org/forumdisplay.php?33-Security) before submitting a pull request. We're happy to provide guidance but please spend an hour or two researching the subject on your own including searching the forums for prior discussions.
|
If you're considering anything more than correcting a typo or fixing a minor bug , please discuss it on the [Spring Security forums](http://forum.springsource.org/forumdisplay.php?33-Security) before submitting a pull request. We're happy to provide guidance but please spend an hour or two researching the subject on your own including searching the forums for prior discussions.
|
||||||
|
|
||||||
# Sign the Contributor License Agreement
|
# Sign the Contributor License Agreement
|
||||||
If you have not previously done so, please fill out and submit the SpringSource CLA form. You'll receive a token when this process is complete. Keep track of this, you may be asked for it later!
|
If you have not previously done so, please fill out and submit the [SpringSource CLA form](https://support.springsource.com/spring_committer_signup). You'll receive a token when this process is complete. Keep track of this, you may be asked for it later!
|
||||||
|
|
||||||
* For **Project** select _Spring Security_
|
* For **Project** select _Spring Security_
|
||||||
* For **Project Lead** enter _Rob Winch_
|
* For **Project Lead** enter _Rob Winch_
|
||||||
@@ -64,7 +64,7 @@ Whitespace management tips
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
+58
@@ -0,0 +1,58 @@
|
|||||||
|
= Spring Security
|
||||||
|
|
||||||
|
Spring Security provides security services for the http://docs.spring.io[Spring IO Platform]. Spring Security 3.1 requires Spring 3.0.3 as
|
||||||
|
a minimum and also requires Java 5.
|
||||||
|
|
||||||
|
For a detailed list of features and access to the latest release, please visit http://spring.io/projects[Spring projects].
|
||||||
|
|
||||||
|
== Downloading Artifacts
|
||||||
|
See https://github.com/spring-projects/spring-framework/wiki/Downloading-Spring-artifacts[downloading Spring artifacts] for Maven repository information.
|
||||||
|
|
||||||
|
== Documentation
|
||||||
|
Be sure to read the http://docs.spring.io/spring-security/site/docs/current/reference/htmlsingle/[Spring Security Reference].
|
||||||
|
Extensive JavaDoc for the Spring Security code is also available in the http://docs.spring.io/spring-security/site/docs/current/apidocs/[Spring Security API Documentation].
|
||||||
|
|
||||||
|
== Quick Start
|
||||||
|
We recommend you visit http://docs.spring.io/spring-security/site/docs/current/reference/htmlsingle/[Spring Security Reference] and read the "Getting Started" page.
|
||||||
|
|
||||||
|
== Building from Source
|
||||||
|
Spring Security uses a http://gradle.org[Gradle]-based build system.
|
||||||
|
In the instructions below, http://vimeo.com/34436402[`./gradlew`] is invoked from the root of the source tree and serves as
|
||||||
|
a cross-platform, self-contained bootstrap mechanism for the build.
|
||||||
|
|
||||||
|
=== Prerequisites
|
||||||
|
http://help.github.com/set-up-git-redirect[Git] and the http://www.oracle.com/technetwork/java/javase/downloads[JDK7 build].
|
||||||
|
|
||||||
|
Be sure that your `JAVA_HOME` environment variable points to the `jdk1.7.0` folder extracted from the JDK download.
|
||||||
|
|
||||||
|
=== Check out sources
|
||||||
|
[indent=0]
|
||||||
|
----
|
||||||
|
git clone git@github.com:spring-projects/spring-security.git
|
||||||
|
----
|
||||||
|
|
||||||
|
=== Install all spring-\* jars into your local Maven cache
|
||||||
|
[indent=0]
|
||||||
|
----
|
||||||
|
./gradlew install
|
||||||
|
----
|
||||||
|
|
||||||
|
=== Compile and test; build all jars, distribution zips, and docs
|
||||||
|
[indent=0]
|
||||||
|
----
|
||||||
|
./gradlew build
|
||||||
|
----
|
||||||
|
|
||||||
|
Discover more commands with `./gradlew tasks`.
|
||||||
|
See also the https://github.com/spring-projects/spring-framework/wiki/Gradle-build-and-release-FAQ[Gradle build and release FAQ].
|
||||||
|
|
||||||
|
== Getting Support
|
||||||
|
Check out the http://stackoverflow.com/questions/tagged/spring-security[Spring Security tags on Stack Overflow].
|
||||||
|
http://spring.io/services[Commercial support] is available too.
|
||||||
|
|
||||||
|
== Contributing
|
||||||
|
http://help.github.com/send-pull-requests[Pull requests] are welcome; see the https://github.com/spring-projects/spring-security/blob/master/CONTRIBUTING.md[contributor guidelines] for details.
|
||||||
|
|
||||||
|
== License
|
||||||
|
Spring Security is Open Source software released under the
|
||||||
|
https://www.apache.org/licenses/LICENSE-2.0.html[Apache 2.0 license].
|
||||||
+2
-1
@@ -2,13 +2,14 @@
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
compile project(':spring-security-core'),
|
compile project(':spring-security-core'),
|
||||||
|
springCoreDependency,
|
||||||
'aopalliance:aopalliance:1.0',
|
'aopalliance:aopalliance:1.0',
|
||||||
"org.springframework:spring-aop:$springVersion",
|
"org.springframework:spring-aop:$springVersion",
|
||||||
"org.springframework:spring-context:$springVersion",
|
"org.springframework:spring-context:$springVersion",
|
||||||
"org.springframework:spring-tx:$springVersion",
|
"org.springframework:spring-tx:$springVersion",
|
||||||
"org.springframework:spring-jdbc:$springVersion"
|
"org.springframework:spring-jdbc:$springVersion"
|
||||||
|
|
||||||
optional "net.sf.ehcache:ehcache:$ehcacheVersion"
|
optional "net.sf.ehcache:ehcache-core:$ehcacheVersion"
|
||||||
|
|
||||||
testCompile "org.springframework:spring-beans:$springVersion",
|
testCompile "org.springframework:spring-beans:$springVersion",
|
||||||
"org.springframework:spring-context-support:$springVersion",
|
"org.springframework:spring-context-support:$springVersion",
|
||||||
|
|||||||
+29
-36
@@ -1,21 +1,20 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>org.springframework.security</groupId>
|
<groupId>org.springframework.security</groupId>
|
||||||
<artifactId>spring-security-acl</artifactId>
|
<artifactId>spring-security-acl</artifactId>
|
||||||
<version>3.2.1.CI-SNAPSHOT</version>
|
<version>3.2.10.RELEASE</version>
|
||||||
<name>spring-security-acl</name>
|
<name>spring-security-acl</name>
|
||||||
<description>spring-security-acl</description>
|
<description>spring-security-acl</description>
|
||||||
<url>http://spring.io/spring-security</url>
|
<url>https://spring.io/spring-security</url>
|
||||||
<organization>
|
<organization>
|
||||||
<name>spring.io</name>
|
<name>spring.io</name>
|
||||||
<url>http://spring.io/</url>
|
<url>https://spring.io/</url>
|
||||||
</organization>
|
</organization>
|
||||||
<licenses>
|
<licenses>
|
||||||
<license>
|
<license>
|
||||||
<name>The Apache Software License, Version 2.0</name>
|
<name>The Apache Software License, Version 2.0</name>
|
||||||
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
|
<url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
|
||||||
<distribution>repo</distribution>
|
<distribution>repo</distribution>
|
||||||
</license>
|
</license>
|
||||||
</licenses>
|
</licenses>
|
||||||
@@ -31,23 +30,6 @@
|
|||||||
<developerConnection>scm:git:git://github.com/spring-projects/spring-security</developerConnection>
|
<developerConnection>scm:git:git://github.com/spring-projects/spring-security</developerConnection>
|
||||||
<url>https://github.com/spring-projects/spring-security</url>
|
<url>https://github.com/spring-projects/spring-security</url>
|
||||||
</scm>
|
</scm>
|
||||||
<build>
|
|
||||||
<plugins>
|
|
||||||
<plugin>
|
|
||||||
<artifactId>maven-compiler-plugin</artifactId>
|
|
||||||
<configuration>
|
|
||||||
<source>1.7</source>
|
|
||||||
<target>1.7</target>
|
|
||||||
</configuration>
|
|
||||||
</plugin>
|
|
||||||
</plugins>
|
|
||||||
</build>
|
|
||||||
<repositories>
|
|
||||||
<repository>
|
|
||||||
<id>spring-snasphot</id>
|
|
||||||
<url>https://repo.spring.io/snapshot</url>
|
|
||||||
</repository>
|
|
||||||
</repositories>
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>aopalliance</groupId>
|
<groupId>aopalliance</groupId>
|
||||||
@@ -58,25 +40,25 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.security</groupId>
|
<groupId>org.springframework.security</groupId>
|
||||||
<artifactId>spring-security-core</artifactId>
|
<artifactId>spring-security-core</artifactId>
|
||||||
<version>3.2.1.CI-SNAPSHOT</version>
|
<version>3.2.10.RELEASE</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework</groupId>
|
<groupId>org.springframework</groupId>
|
||||||
<artifactId>spring-aop</artifactId>
|
<artifactId>spring-aop</artifactId>
|
||||||
<version>3.2.8.RELEASE</version>
|
<version>3.2.18.RELEASE</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework</groupId>
|
<groupId>org.springframework</groupId>
|
||||||
<artifactId>spring-context</artifactId>
|
<artifactId>spring-context</artifactId>
|
||||||
<version>3.2.8.RELEASE</version>
|
<version>3.2.18.RELEASE</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework</groupId>
|
<groupId>org.springframework</groupId>
|
||||||
<artifactId>spring-core</artifactId>
|
<artifactId>spring-core</artifactId>
|
||||||
<version>3.2.8.RELEASE</version>
|
<version>3.2.18.RELEASE</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
<exclusions>
|
<exclusions>
|
||||||
<exclusion>
|
<exclusion>
|
||||||
@@ -88,13 +70,13 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework</groupId>
|
<groupId>org.springframework</groupId>
|
||||||
<artifactId>spring-jdbc</artifactId>
|
<artifactId>spring-jdbc</artifactId>
|
||||||
<version>3.2.8.RELEASE</version>
|
<version>3.2.18.RELEASE</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework</groupId>
|
<groupId>org.springframework</groupId>
|
||||||
<artifactId>spring-tx</artifactId>
|
<artifactId>spring-tx</artifactId>
|
||||||
<version>3.2.8.RELEASE</version>
|
<version>3.2.18.RELEASE</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
@@ -106,8 +88,8 @@
|
|||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>net.sf.ehcache</groupId>
|
<groupId>net.sf.ehcache</groupId>
|
||||||
<artifactId>ehcache</artifactId>
|
<artifactId>ehcache-core</artifactId>
|
||||||
<version>1.6.2</version>
|
<version>1.7.2</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
<optional>true</optional>
|
<optional>true</optional>
|
||||||
</dependency>
|
</dependency>
|
||||||
@@ -120,7 +102,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>junit</groupId>
|
<groupId>junit</groupId>
|
||||||
<artifactId>junit</artifactId>
|
<artifactId>junit</artifactId>
|
||||||
<version>4.10</version>
|
<version>4.11</version>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
@@ -138,7 +120,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.mockito</groupId>
|
<groupId>org.mockito</groupId>
|
||||||
<artifactId>mockito-core</artifactId>
|
<artifactId>mockito-core</artifactId>
|
||||||
<version>1.9.5</version>
|
<version>1.10.19</version>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
@@ -150,20 +132,31 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework</groupId>
|
<groupId>org.springframework</groupId>
|
||||||
<artifactId>spring-beans</artifactId>
|
<artifactId>spring-beans</artifactId>
|
||||||
<version>3.2.8.RELEASE</version>
|
<version>3.2.18.RELEASE</version>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework</groupId>
|
<groupId>org.springframework</groupId>
|
||||||
<artifactId>spring-context-support</artifactId>
|
<artifactId>spring-context-support</artifactId>
|
||||||
<version>3.2.8.RELEASE</version>
|
<version>3.2.18.RELEASE</version>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework</groupId>
|
<groupId>org.springframework</groupId>
|
||||||
<artifactId>spring-test</artifactId>
|
<artifactId>spring-test</artifactId>
|
||||||
<version>3.2.8.RELEASE</version>
|
<version>3.2.18.RELEASE</version>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<source>1.7</source>
|
||||||
|
<target>1.7</target>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
</project>
|
</project>
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package org.springframework.security.acls;
|
|||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
|
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
@@ -121,8 +122,9 @@ public class AclPermissionEvaluator implements PermissionEvaluator {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
p = permissionFactory.buildFromName(permString);
|
p = permissionFactory.buildFromName(permString);
|
||||||
} catch(IllegalArgumentException notfound) {
|
}
|
||||||
p = permissionFactory.buildFromName(permString.toUpperCase());
|
catch (IllegalArgumentException notfound) {
|
||||||
|
p = permissionFactory.buildFromName(permString.toUpperCase(Locale.ENGLISH));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (p != null) {
|
if (p != null) {
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
+1
-1
@@ -5,7 +5,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
@@ -5,12 +5,12 @@
|
|||||||
-- drop table acl_class;
|
-- drop table acl_class;
|
||||||
-- drop table acl_sid;
|
-- drop table acl_sid;
|
||||||
|
|
||||||
|
|
||||||
create table acl_sid(
|
create table acl_sid(
|
||||||
id bigint generated by default as identity(start with 100) not null primary key,
|
id bigint generated by default as identity(start with 100) not null primary key,
|
||||||
principal boolean not null,
|
principal boolean not null,
|
||||||
sid varchar_ignorecase(100) not null,
|
sid varchar_ignorecase(100) not null,
|
||||||
constraint unique_uk_1 unique(sid,principal));
|
constraint unique_uk_1 unique(sid,principal)
|
||||||
|
);
|
||||||
|
|
||||||
create table acl_class(
|
create table acl_class(
|
||||||
id bigint generated by default as identity(start with 100) not null primary key,
|
id bigint generated by default as identity(start with 100) not null primary key,
|
||||||
|
|||||||
@@ -0,0 +1,46 @@
|
|||||||
|
-- ACL Schema SQL for MySQL 5.5+ / MariaDB equivalent
|
||||||
|
|
||||||
|
-- drop table acl_entry;
|
||||||
|
-- drop table acl_object_identity;
|
||||||
|
-- drop table acl_class;
|
||||||
|
-- drop table acl_sid;
|
||||||
|
|
||||||
|
CREATE TABLE acl_sid (
|
||||||
|
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
principal BOOLEAN NOT NULL,
|
||||||
|
sid VARCHAR(100) NOT NULL,
|
||||||
|
UNIQUE KEY unique_acl_sid (sid, principal)
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
CREATE TABLE acl_class (
|
||||||
|
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
class VARCHAR(100) NOT NULL,
|
||||||
|
UNIQUE KEY uk_acl_class (class)
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
CREATE TABLE acl_object_identity (
|
||||||
|
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
object_id_class BIGINT UNSIGNED NOT NULL,
|
||||||
|
object_id_identity BIGINT NOT NULL,
|
||||||
|
parent_object BIGINT UNSIGNED,
|
||||||
|
owner_sid BIGINT UNSIGNED,
|
||||||
|
entries_inheriting BOOLEAN NOT NULL,
|
||||||
|
UNIQUE KEY uk_acl_object_identity (object_id_class, object_id_identity),
|
||||||
|
CONSTRAINT fk_acl_object_identity_parent FOREIGN KEY (parent_object) REFERENCES acl_object_identity (id),
|
||||||
|
CONSTRAINT fk_acl_object_identity_class FOREIGN KEY (object_id_class) REFERENCES acl_class (id),
|
||||||
|
CONSTRAINT fk_acl_object_identity_owner FOREIGN KEY (owner_sid) REFERENCES acl_sid (id)
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
CREATE TABLE acl_entry (
|
||||||
|
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
acl_object_identity BIGINT UNSIGNED NOT NULL,
|
||||||
|
ace_order INTEGER NOT NULL,
|
||||||
|
sid BIGINT UNSIGNED NOT NULL,
|
||||||
|
mask INTEGER UNSIGNED NOT NULL,
|
||||||
|
granting BOOLEAN NOT NULL,
|
||||||
|
audit_success BOOLEAN NOT NULL,
|
||||||
|
audit_failure BOOLEAN NOT NULL,
|
||||||
|
UNIQUE KEY unique_acl_entry (acl_object_identity, ace_order),
|
||||||
|
CONSTRAINT fk_acl_entry_object FOREIGN KEY (acl_object_identity) REFERENCES acl_object_identity (id),
|
||||||
|
CONSTRAINT fk_acl_entry_acl FOREIGN KEY (sid) REFERENCES acl_sid (id)
|
||||||
|
) ENGINE=InnoDB;
|
||||||
@@ -0,0 +1,82 @@
|
|||||||
|
-- ACL Schema SQL for Oracle Database 10g+
|
||||||
|
|
||||||
|
-- drop trigger acl_sid_id_trigger;
|
||||||
|
-- drop trigger acl_class_id_trigger;
|
||||||
|
-- drop trigger acl_object_identity_id_trigger;
|
||||||
|
-- drop trigger acl_entry_id_trigger;
|
||||||
|
-- drop sequence acl_sid_sequence;
|
||||||
|
-- drop sequence acl_class_sequence;
|
||||||
|
-- drop sequence acl_object_identity_sequence;
|
||||||
|
-- drop sequence acl_entry_sequence;
|
||||||
|
-- drop table acl_entry;
|
||||||
|
-- drop table acl_object_identity;
|
||||||
|
-- drop table acl_class;
|
||||||
|
-- drop table acl_sid;
|
||||||
|
|
||||||
|
CREATE TABLE acl_sid (
|
||||||
|
id NUMBER(38) NOT NULL PRIMARY KEY,
|
||||||
|
principal NUMBER(1) NOT NULL CHECK (principal in (0, 1)),
|
||||||
|
sid NVARCHAR2(100) NOT NULL,
|
||||||
|
CONSTRAINT unique_acl_sid UNIQUE (sid, principal)
|
||||||
|
);
|
||||||
|
CREATE SEQUENCE acl_sid_sequence START WITH 1 INCREMENT BY 1 NOMAXVALUE;
|
||||||
|
CREATE OR REPLACE TRIGGER acl_sid_id_trigger
|
||||||
|
BEFORE INSERT ON acl_sid
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
SELECT acl_sid_sequence.nextval INTO :new.id FROM dual;
|
||||||
|
END;
|
||||||
|
|
||||||
|
CREATE TABLE acl_class (
|
||||||
|
id NUMBER(38) NOT NULL PRIMARY KEY,
|
||||||
|
class NVARCHAR2(100) NOT NULL,
|
||||||
|
CONSTRAINT uk_acl_class UNIQUE (class)
|
||||||
|
);
|
||||||
|
CREATE SEQUENCE acl_class_sequence START WITH 1 INCREMENT BY 1 NOMAXVALUE;
|
||||||
|
CREATE OR REPLACE TRIGGER acl_class_id_trigger
|
||||||
|
BEFORE INSERT ON acl_class
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
SELECT acl_class_sequence.nextval INTO :new.id FROM dual;
|
||||||
|
END;
|
||||||
|
|
||||||
|
CREATE TABLE acl_object_identity (
|
||||||
|
id NUMBER(38) NOT NULL PRIMARY KEY,
|
||||||
|
object_id_class NUMBER(38) NOT NULL,
|
||||||
|
object_id_identity NUMBER(38) NOT NULL,
|
||||||
|
parent_object NUMBER(38),
|
||||||
|
owner_sid NUMBER(38),
|
||||||
|
entries_inheriting NUMBER(1) NOT NULL CHECK (entries_inheriting in (0, 1)),
|
||||||
|
CONSTRAINT uk_acl_object_identity UNIQUE (object_id_class, object_id_identity),
|
||||||
|
CONSTRAINT fk_acl_object_identity_parent FOREIGN KEY (parent_object) REFERENCES acl_object_identity (id),
|
||||||
|
CONSTRAINT fk_acl_object_identity_class FOREIGN KEY (object_id_class) REFERENCES acl_class (id),
|
||||||
|
CONSTRAINT fk_acl_object_identity_owner FOREIGN KEY (owner_sid) REFERENCES acl_sid (id)
|
||||||
|
);
|
||||||
|
CREATE SEQUENCE acl_object_identity_sequence START WITH 1 INCREMENT BY 1 NOMAXVALUE;
|
||||||
|
CREATE OR REPLACE TRIGGER acl_object_identity_id_trigger
|
||||||
|
BEFORE INSERT ON acl_object_identity
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
SELECT acl_object_identity_sequence.nextval INTO :new.id FROM dual;
|
||||||
|
END;
|
||||||
|
|
||||||
|
CREATE TABLE acl_entry (
|
||||||
|
id NUMBER(38) NOT NULL PRIMARY KEY,
|
||||||
|
acl_object_identity NUMBER(38) NOT NULL,
|
||||||
|
ace_order INTEGER NOT NULL,
|
||||||
|
sid NUMBER(38) NOT NULL,
|
||||||
|
mask INTEGER NOT NULL,
|
||||||
|
granting NUMBER(1) NOT NULL CHECK (granting in (0, 1)),
|
||||||
|
audit_success NUMBER(1) NOT NULL CHECK (audit_success in (0, 1)),
|
||||||
|
audit_failure NUMBER(1) NOT NULL CHECK (audit_failure in (0, 1)),
|
||||||
|
CONSTRAINT unique_acl_entry UNIQUE (acl_object_identity, ace_order),
|
||||||
|
CONSTRAINT fk_acl_entry_object FOREIGN KEY (acl_object_identity) REFERENCES acl_object_identity (id),
|
||||||
|
CONSTRAINT fk_acl_entry_acl FOREIGN KEY (sid) REFERENCES acl_sid (id)
|
||||||
|
);
|
||||||
|
CREATE SEQUENCE acl_entry_sequence START WITH 1 INCREMENT BY 1 NOMAXVALUE;
|
||||||
|
CREATE OR REPLACE TRIGGER acl_entry_id_trigger
|
||||||
|
BEFORE INSERT ON acl_entry
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
SELECT acl_entry_sequence.nextval INTO :new.id FROM dual;
|
||||||
|
END;
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
-- ACL Schema SQL for Microsoft SQL Server 2008+
|
||||||
|
|
||||||
|
-- drop table acl_entry;
|
||||||
|
-- drop table acl_object_identity;
|
||||||
|
-- drop table acl_class;
|
||||||
|
-- drop table acl_sid;
|
||||||
|
|
||||||
|
CREATE TABLE acl_sid (
|
||||||
|
id BIGINT NOT NULL IDENTITY PRIMARY KEY,
|
||||||
|
principal BIT NOT NULL,
|
||||||
|
sid VARCHAR(100) NOT NULL,
|
||||||
|
CONSTRAINT unique_acl_sid UNIQUE (sid, principal)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE acl_class (
|
||||||
|
id BIGINT NOT NULL IDENTITY PRIMARY KEY,
|
||||||
|
class VARCHAR(100) NOT NULL,
|
||||||
|
CONSTRAINT uk_acl_class UNIQUE (class)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE acl_object_identity (
|
||||||
|
id BIGINT NOT NULL IDENTITY PRIMARY KEY,
|
||||||
|
object_id_class BIGINT NOT NULL,
|
||||||
|
object_id_identity BIGINT NOT NULL,
|
||||||
|
parent_object BIGINT,
|
||||||
|
owner_sid BIGINT,
|
||||||
|
entries_inheriting BIT NOT NULL,
|
||||||
|
CONSTRAINT uk_acl_object_identity UNIQUE (object_id_class, object_id_identity),
|
||||||
|
CONSTRAINT fk_acl_object_identity_parent FOREIGN KEY (parent_object) REFERENCES acl_object_identity (id),
|
||||||
|
CONSTRAINT fk_acl_object_identity_class FOREIGN KEY (object_id_class) REFERENCES acl_class (id),
|
||||||
|
CONSTRAINT fk_acl_object_identity_owner FOREIGN KEY (owner_sid) REFERENCES acl_sid (id)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE acl_entry (
|
||||||
|
id BIGINT NOT NULL IDENTITY PRIMARY KEY,
|
||||||
|
acl_object_identity BIGINT NOT NULL,
|
||||||
|
ace_order INTEGER NOT NULL,
|
||||||
|
sid BIGINT NOT NULL,
|
||||||
|
mask INTEGER NOT NULL,
|
||||||
|
granting BIT NOT NULL,
|
||||||
|
audit_success BIT NOT NULL,
|
||||||
|
audit_failure BIT NOT NULL,
|
||||||
|
CONSTRAINT unique_acl_entry UNIQUE (acl_object_identity, ace_order),
|
||||||
|
CONSTRAINT fk_acl_entry_object FOREIGN KEY (acl_object_identity) REFERENCES acl_object_identity (id),
|
||||||
|
CONSTRAINT fk_acl_entry_acl FOREIGN KEY (sid) REFERENCES acl_sid (id)
|
||||||
|
);
|
||||||
@@ -4,6 +4,8 @@ import static org.junit.Assert.assertTrue;
|
|||||||
import static org.mockito.Matchers.*;
|
import static org.mockito.Matchers.*;
|
||||||
import static org.mockito.Mockito.*;
|
import static org.mockito.Mockito.*;
|
||||||
|
|
||||||
|
import java.util.Locale;
|
||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.springframework.security.acls.model.Acl;
|
import org.springframework.security.acls.model.Acl;
|
||||||
import org.springframework.security.acls.model.AclService;
|
import org.springframework.security.acls.model.AclService;
|
||||||
@@ -36,4 +38,26 @@ public class AclPermissionEvaluatorTests {
|
|||||||
|
|
||||||
assertTrue(pe.hasPermission(mock(Authentication.class), new Object(), "READ"));
|
assertTrue(pe.hasPermission(mock(Authentication.class), new Object(), "READ"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void resolvePermissionNonEnglishLocale() {
|
||||||
|
Locale systemLocale = Locale.getDefault();
|
||||||
|
Locale.setDefault(new Locale("tr"));
|
||||||
|
|
||||||
|
AclService service = mock(AclService.class);
|
||||||
|
AclPermissionEvaluator pe = new AclPermissionEvaluator(service);
|
||||||
|
ObjectIdentity oid = mock(ObjectIdentity.class);
|
||||||
|
ObjectIdentityRetrievalStrategy oidStrategy = mock(ObjectIdentityRetrievalStrategy.class);
|
||||||
|
when(oidStrategy.getObjectIdentity(anyObject())).thenReturn(oid);
|
||||||
|
pe.setObjectIdentityRetrievalStrategy(oidStrategy);
|
||||||
|
pe.setSidRetrievalStrategy(mock(SidRetrievalStrategy.class));
|
||||||
|
Acl acl = mock(Acl.class);
|
||||||
|
|
||||||
|
when(service.readAclById(any(ObjectIdentity.class), anyList())).thenReturn(acl);
|
||||||
|
when(acl.isGranted(anyList(), anyList(), eq(false))).thenReturn(true);
|
||||||
|
|
||||||
|
assertTrue(pe.hasPermission(mock(Authentication.class), new Object(), "write"));
|
||||||
|
|
||||||
|
Locale.setDefault(systemLocale);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
+130
-123
@@ -1,11 +1,28 @@
|
|||||||
package org.springframework.security.acls.jdbc;
|
package org.springframework.security.acls.jdbc;
|
||||||
|
|
||||||
|
import static org.mockito.Mockito.*;
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.Assert.*;
|
||||||
|
import static org.fest.assertions.Assertions.*;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.ObjectInputStream;
|
||||||
|
import java.io.ObjectOutputStream;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import net.sf.ehcache.Cache;
|
|
||||||
import net.sf.ehcache.CacheManager;
|
|
||||||
import net.sf.ehcache.Ehcache;
|
import net.sf.ehcache.Ehcache;
|
||||||
import org.junit.*;
|
import net.sf.ehcache.Element;
|
||||||
|
|
||||||
|
import org.junit.After;
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.mockito.ArgumentCaptor;
|
||||||
|
import org.mockito.Captor;
|
||||||
|
import org.mockito.Mock;
|
||||||
|
import org.mockito.runners.MockitoJUnitRunner;
|
||||||
import org.springframework.security.acls.domain.AclAuthorizationStrategy;
|
import org.springframework.security.acls.domain.AclAuthorizationStrategy;
|
||||||
import org.springframework.security.acls.domain.AclAuthorizationStrategyImpl;
|
import org.springframework.security.acls.domain.AclAuthorizationStrategyImpl;
|
||||||
import org.springframework.security.acls.domain.AclImpl;
|
import org.springframework.security.acls.domain.AclImpl;
|
||||||
@@ -19,50 +36,43 @@ import org.springframework.security.core.Authentication;
|
|||||||
import org.springframework.security.core.authority.SimpleGrantedAuthority;
|
import org.springframework.security.core.authority.SimpleGrantedAuthority;
|
||||||
import org.springframework.security.core.context.SecurityContextHolder;
|
import org.springframework.security.core.context.SecurityContextHolder;
|
||||||
import org.springframework.security.util.FieldUtils;
|
import org.springframework.security.util.FieldUtils;
|
||||||
|
import org.springframework.test.util.ReflectionTestUtils;
|
||||||
import java.io.File;
|
|
||||||
import java.io.FileInputStream;
|
|
||||||
import java.io.FileOutputStream;
|
|
||||||
import java.io.ObjectInputStream;
|
|
||||||
import java.io.ObjectOutputStream;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.*;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests {@link EhCacheBasedAclCache}
|
* Tests {@link EhCacheBasedAclCache}
|
||||||
*
|
*
|
||||||
* @author Andrei Stefan
|
* @author Andrei Stefan
|
||||||
*/
|
*/
|
||||||
|
@RunWith(MockitoJUnitRunner.class)
|
||||||
public class EhCacheBasedAclCacheTests {
|
public class EhCacheBasedAclCacheTests {
|
||||||
private static final String TARGET_CLASS = "org.springframework.security.acls.TargetObject";
|
private static final String TARGET_CLASS = "org.springframework.security.acls.TargetObject";
|
||||||
|
|
||||||
private static CacheManager cacheManager;
|
@Mock
|
||||||
|
private Ehcache cache;
|
||||||
|
@Captor
|
||||||
|
private ArgumentCaptor<Element> element;
|
||||||
|
|
||||||
@BeforeClass
|
private EhCacheBasedAclCache myCache;
|
||||||
public static void initCacheManaer() {
|
|
||||||
cacheManager = CacheManager.create();
|
|
||||||
// Use disk caching immediately (to test for serialization issue reported in SEC-527)
|
|
||||||
cacheManager.addCache(new Cache("ehcachebasedacltests", 0, true, false, 600, 300));
|
|
||||||
}
|
|
||||||
|
|
||||||
@AfterClass
|
private MutableAcl acl;
|
||||||
public static void shutdownCacheManager() {
|
|
||||||
cacheManager.removalAll();
|
@Before
|
||||||
cacheManager.shutdown();
|
public void setup() {
|
||||||
|
myCache = new EhCacheBasedAclCache(cache);
|
||||||
|
|
||||||
|
ObjectIdentity identity = new ObjectIdentityImpl(TARGET_CLASS, Long.valueOf(100));
|
||||||
|
AclAuthorizationStrategy aclAuthorizationStrategy = new AclAuthorizationStrategyImpl(
|
||||||
|
new SimpleGrantedAuthority("ROLE_OWNERSHIP"), new SimpleGrantedAuthority("ROLE_AUDITING"),
|
||||||
|
new SimpleGrantedAuthority("ROLE_GENERAL"));
|
||||||
|
|
||||||
|
acl = new AclImpl(identity, Long.valueOf(1), aclAuthorizationStrategy, new ConsoleAuditLogger());
|
||||||
}
|
}
|
||||||
|
|
||||||
@After
|
@After
|
||||||
public void clearContext() {
|
public void cleanup() {
|
||||||
SecurityContextHolder.clearContext();
|
SecurityContextHolder.clearContext();
|
||||||
}
|
}
|
||||||
|
|
||||||
private Ehcache getCache() {
|
|
||||||
Ehcache cache = cacheManager.getCache("ehcachebasedacltests");
|
|
||||||
cache.removeAll();
|
|
||||||
|
|
||||||
return cache;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test(expected=IllegalArgumentException.class)
|
@Test(expected=IllegalArgumentException.class)
|
||||||
public void constructorRejectsNullParameters() throws Exception {
|
public void constructorRejectsNullParameters() throws Exception {
|
||||||
new EhCacheBasedAclCache(null);
|
new EhCacheBasedAclCache(null);
|
||||||
@@ -70,9 +80,6 @@ public class EhCacheBasedAclCacheTests {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void methodsRejectNullParameters() throws Exception {
|
public void methodsRejectNullParameters() throws Exception {
|
||||||
Ehcache cache = new MockEhcache();
|
|
||||||
EhCacheBasedAclCache myCache = new EhCacheBasedAclCache(cache);
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Serializable id = null;
|
Serializable id = null;
|
||||||
myCache.evictFromCache(id);
|
myCache.evictFromCache(id);
|
||||||
@@ -122,12 +129,6 @@ public class EhCacheBasedAclCacheTests {
|
|||||||
// SEC-527
|
// SEC-527
|
||||||
@Test
|
@Test
|
||||||
public void testDiskSerializationOfMutableAclObjectInstance() throws Exception {
|
public void testDiskSerializationOfMutableAclObjectInstance() throws Exception {
|
||||||
ObjectIdentity identity = new ObjectIdentityImpl(TARGET_CLASS, Long.valueOf(100));
|
|
||||||
AclAuthorizationStrategy aclAuthorizationStrategy = new AclAuthorizationStrategyImpl(
|
|
||||||
new SimpleGrantedAuthority("ROLE_OWNERSHIP"), new SimpleGrantedAuthority("ROLE_AUDITING"),
|
|
||||||
new SimpleGrantedAuthority("ROLE_GENERAL"));
|
|
||||||
MutableAcl acl = new AclImpl(identity, Long.valueOf(1), aclAuthorizationStrategy, new ConsoleAuditLogger());
|
|
||||||
|
|
||||||
// Serialization test
|
// Serialization test
|
||||||
File file = File.createTempFile("SEC_TEST", ".object");
|
File file = File.createTempFile("SEC_TEST", ".object");
|
||||||
FileOutputStream fos = new FileOutputStream(file);
|
FileOutputStream fos = new FileOutputStream(file);
|
||||||
@@ -150,111 +151,117 @@ public class EhCacheBasedAclCacheTests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void cacheOperationsAclWithoutParent() throws Exception {
|
public void clearCache() throws Exception {
|
||||||
Ehcache cache = getCache();
|
myCache.clearCache();
|
||||||
EhCacheBasedAclCache myCache = new EhCacheBasedAclCache(cache);
|
|
||||||
|
|
||||||
ObjectIdentity identity = new ObjectIdentityImpl(TARGET_CLASS, Long.valueOf(100));
|
verify(cache).removeAll();
|
||||||
AclAuthorizationStrategy aclAuthorizationStrategy = new AclAuthorizationStrategyImpl(
|
|
||||||
new SimpleGrantedAuthority("ROLE_OWNERSHIP"), new SimpleGrantedAuthority("ROLE_AUDITING"),
|
|
||||||
new SimpleGrantedAuthority("ROLE_GENERAL"));
|
|
||||||
MutableAcl acl = new AclImpl(identity, Long.valueOf(1), aclAuthorizationStrategy, new ConsoleAuditLogger());
|
|
||||||
|
|
||||||
assertEquals(0, cache.getDiskStoreSize());
|
|
||||||
myCache.putInCache(acl);
|
|
||||||
assertEquals(cache.getSize(), 2);
|
|
||||||
assertEquals(2, cache.getDiskStoreSize());
|
|
||||||
assertTrue(cache.isElementOnDisk(acl.getObjectIdentity()));
|
|
||||||
assertFalse(cache.isElementInMemory(acl.getObjectIdentity()));
|
|
||||||
|
|
||||||
// Check we can get from cache the same objects we put in
|
|
||||||
assertEquals(myCache.getFromCache(Long.valueOf(1)), acl);
|
|
||||||
assertEquals(myCache.getFromCache(identity), acl);
|
|
||||||
|
|
||||||
// Put another object in cache
|
|
||||||
ObjectIdentity identity2 = new ObjectIdentityImpl(TARGET_CLASS, Long.valueOf(101));
|
|
||||||
MutableAcl acl2 = new AclImpl(identity2, Long.valueOf(2), aclAuthorizationStrategy, new ConsoleAuditLogger());
|
|
||||||
|
|
||||||
myCache.putInCache(acl2);
|
|
||||||
assertEquals(cache.getSize(), 4);
|
|
||||||
assertEquals(4, cache.getDiskStoreSize());
|
|
||||||
|
|
||||||
// Try to evict an entry that doesn't exist
|
|
||||||
myCache.evictFromCache(Long.valueOf(3));
|
|
||||||
myCache.evictFromCache(new ObjectIdentityImpl(TARGET_CLASS, Long.valueOf(102)));
|
|
||||||
assertEquals(cache.getSize(), 4);
|
|
||||||
assertEquals(4, cache.getDiskStoreSize());
|
|
||||||
|
|
||||||
myCache.evictFromCache(Long.valueOf(1));
|
|
||||||
assertEquals(cache.getSize(), 2);
|
|
||||||
assertEquals(2, cache.getDiskStoreSize());
|
|
||||||
|
|
||||||
// Check the second object inserted
|
|
||||||
assertEquals(myCache.getFromCache(Long.valueOf(2)), acl2);
|
|
||||||
assertEquals(myCache.getFromCache(identity2), acl2);
|
|
||||||
|
|
||||||
myCache.evictFromCache(identity2);
|
|
||||||
assertEquals(cache.getSize(), 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
@Test
|
@Test
|
||||||
public void cacheOperationsAclWithParent() throws Exception {
|
public void putInCache() throws Exception {
|
||||||
Ehcache cache = getCache();
|
myCache.putInCache(acl);
|
||||||
EhCacheBasedAclCache myCache = new EhCacheBasedAclCache(cache);
|
|
||||||
|
|
||||||
|
verify(cache, times(2)).put(element.capture());
|
||||||
|
assertThat(element.getValue().getKey()).isEqualTo(acl.getId());
|
||||||
|
assertThat(element.getValue().getObjectValue()).isEqualTo(acl);
|
||||||
|
assertThat(element.getAllValues().get(0).getKey()).isEqualTo(acl.getObjectIdentity());
|
||||||
|
assertThat(element.getAllValues().get(0).getObjectValue()).isEqualTo(acl);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void putInCacheAclWithParent() throws Exception {
|
||||||
Authentication auth = new TestingAuthenticationToken("user", "password", "ROLE_GENERAL");
|
Authentication auth = new TestingAuthenticationToken("user", "password", "ROLE_GENERAL");
|
||||||
auth.setAuthenticated(true);
|
auth.setAuthenticated(true);
|
||||||
SecurityContextHolder.getContext().setAuthentication(auth);
|
SecurityContextHolder.getContext().setAuthentication(auth);
|
||||||
|
|
||||||
ObjectIdentity identity = new ObjectIdentityImpl(TARGET_CLASS, Long.valueOf(1));
|
|
||||||
ObjectIdentity identityParent = new ObjectIdentityImpl(TARGET_CLASS, Long.valueOf(2));
|
ObjectIdentity identityParent = new ObjectIdentityImpl(TARGET_CLASS, Long.valueOf(2));
|
||||||
AclAuthorizationStrategy aclAuthorizationStrategy = new AclAuthorizationStrategyImpl(
|
AclAuthorizationStrategy aclAuthorizationStrategy = new AclAuthorizationStrategyImpl(
|
||||||
new SimpleGrantedAuthority("ROLE_OWNERSHIP"), new SimpleGrantedAuthority("ROLE_AUDITING"),
|
new SimpleGrantedAuthority("ROLE_OWNERSHIP"), new SimpleGrantedAuthority("ROLE_AUDITING"),
|
||||||
new SimpleGrantedAuthority("ROLE_GENERAL"));
|
new SimpleGrantedAuthority("ROLE_GENERAL"));
|
||||||
MutableAcl acl = new AclImpl(identity, Long.valueOf(1), aclAuthorizationStrategy, new ConsoleAuditLogger());
|
|
||||||
MutableAcl parentAcl = new AclImpl(identityParent, Long.valueOf(2), aclAuthorizationStrategy, new ConsoleAuditLogger());
|
MutableAcl parentAcl = new AclImpl(identityParent, Long.valueOf(2), aclAuthorizationStrategy, new ConsoleAuditLogger());
|
||||||
|
|
||||||
acl.setParent(parentAcl);
|
acl.setParent(parentAcl);
|
||||||
|
|
||||||
assertEquals(0, cache.getDiskStoreSize());
|
|
||||||
myCache.putInCache(acl);
|
myCache.putInCache(acl);
|
||||||
assertEquals(cache.getSize(), 4);
|
|
||||||
assertEquals(4, cache.getDiskStoreSize());
|
|
||||||
assertTrue(cache.isElementOnDisk(acl.getObjectIdentity()));
|
|
||||||
assertTrue(cache.isElementOnDisk(Long.valueOf(1)));
|
|
||||||
assertFalse(cache.isElementInMemory(acl.getObjectIdentity()));
|
|
||||||
assertFalse(cache.isElementInMemory(Long.valueOf(1)));
|
|
||||||
cache.flush();
|
|
||||||
// Wait for the spool to be written to disk (it's asynchronous)
|
|
||||||
Map spool = (Map) FieldUtils.getFieldValue(cache, "diskStore.spool");
|
|
||||||
|
|
||||||
while(spool.size() > 0) {
|
verify(cache, times(4)).put(element.capture());
|
||||||
Thread.sleep(50);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check we can get from cache the same objects we put in
|
List<Element> allValues = element.getAllValues();
|
||||||
AclImpl aclFromCache = (AclImpl) myCache.getFromCache(Long.valueOf(1));
|
|
||||||
// For the checks on transient fields, we need to be sure that the object is being loaded from the cache,
|
assertThat(allValues.get(0).getKey()).isEqualTo(parentAcl.getObjectIdentity());
|
||||||
// not from the ehcache spool or elsewhere...
|
assertThat(allValues.get(0).getObjectValue()).isEqualTo(parentAcl);
|
||||||
assertFalse(acl == aclFromCache);
|
|
||||||
assertEquals(acl, aclFromCache);
|
assertThat(allValues.get(1).getKey()).isEqualTo(parentAcl.getId());
|
||||||
// SEC-951 check transient fields are set on parent
|
assertThat(allValues.get(1).getObjectValue()).isEqualTo(parentAcl);
|
||||||
assertNotNull(FieldUtils.getFieldValue(aclFromCache.getParentAcl(), "aclAuthorizationStrategy"));
|
|
||||||
assertNotNull(FieldUtils.getFieldValue(aclFromCache.getParentAcl(), "permissionGrantingStrategy"));
|
|
||||||
assertEquals(acl, myCache.getFromCache(identity));
|
assertThat(allValues.get(2).getKey()).isEqualTo(acl.getObjectIdentity());
|
||||||
assertNotNull(FieldUtils.getFieldValue(aclFromCache, "aclAuthorizationStrategy"));
|
assertThat(allValues.get(2).getObjectValue()).isEqualTo(acl);
|
||||||
AclImpl parentAclFromCache = (AclImpl) myCache.getFromCache(Long.valueOf(2));
|
|
||||||
assertEquals(parentAcl, parentAclFromCache);
|
assertThat(allValues.get(3).getKey()).isEqualTo(acl.getId());
|
||||||
assertNotNull(FieldUtils.getFieldValue(parentAclFromCache, "aclAuthorizationStrategy"));
|
assertThat(allValues.get(3).getObjectValue()).isEqualTo(acl);
|
||||||
assertEquals(parentAcl, myCache.getFromCache(identityParent));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//~ Inner Classes ==================================================================================================
|
@Test
|
||||||
|
public void getFromCacheSerializable() throws Exception {
|
||||||
|
when(cache.get(acl.getId())).thenReturn(new Element(acl.getId(),acl));
|
||||||
|
|
||||||
private class MockEhcache extends Cache {
|
assertThat(myCache.getFromCache(acl.getId())).isEqualTo(acl);
|
||||||
public MockEhcache() {
|
}
|
||||||
super("cache", 0, true, true, 0, 0);
|
|
||||||
}
|
@Test
|
||||||
|
public void getFromCacheSerializablePopulatesTransient() throws Exception {
|
||||||
|
when(cache.get(acl.getId())).thenReturn(new Element(acl.getId(),acl));
|
||||||
|
|
||||||
|
myCache.putInCache(acl);
|
||||||
|
|
||||||
|
ReflectionTestUtils.setField(acl, "permissionGrantingStrategy", null);
|
||||||
|
ReflectionTestUtils.setField(acl, "aclAuthorizationStrategy", null);
|
||||||
|
|
||||||
|
MutableAcl fromCache = myCache.getFromCache(acl.getId());
|
||||||
|
|
||||||
|
assertThat(ReflectionTestUtils.getField(fromCache, "aclAuthorizationStrategy")).isNotNull();
|
||||||
|
assertThat(ReflectionTestUtils.getField(fromCache, "permissionGrantingStrategy")).isNotNull();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getFromCacheObjectIdentity() throws Exception {
|
||||||
|
when(cache.get(acl.getId())).thenReturn(new Element(acl.getId(),acl));
|
||||||
|
|
||||||
|
assertThat(myCache.getFromCache(acl.getId())).isEqualTo(acl);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getFromCacheObjectIdentityPopulatesTransient() throws Exception {
|
||||||
|
when(cache.get(acl.getObjectIdentity())).thenReturn(new Element(acl.getId(),acl));
|
||||||
|
|
||||||
|
myCache.putInCache(acl);
|
||||||
|
|
||||||
|
ReflectionTestUtils.setField(acl, "permissionGrantingStrategy", null);
|
||||||
|
ReflectionTestUtils.setField(acl, "aclAuthorizationStrategy", null);
|
||||||
|
|
||||||
|
MutableAcl fromCache = myCache.getFromCache(acl.getObjectIdentity());
|
||||||
|
|
||||||
|
assertThat(ReflectionTestUtils.getField(fromCache, "aclAuthorizationStrategy")).isNotNull();
|
||||||
|
assertThat(ReflectionTestUtils.getField(fromCache, "permissionGrantingStrategy")).isNotNull();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void evictCacheSerializable() throws Exception {
|
||||||
|
when(cache.get(acl.getObjectIdentity())).thenReturn(new Element(acl.getId(),acl));
|
||||||
|
|
||||||
|
myCache.evictFromCache(acl.getObjectIdentity());
|
||||||
|
|
||||||
|
verify(cache).remove(acl.getId());
|
||||||
|
verify(cache).remove(acl.getObjectIdentity());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void evictCacheObjectIdentity() throws Exception {
|
||||||
|
when(cache.get(acl.getId())).thenReturn(new Element(acl.getId(),acl));
|
||||||
|
|
||||||
|
myCache.evictFromCache(acl.getId());
|
||||||
|
|
||||||
|
verify(cache).remove(acl.getId());
|
||||||
|
verify(cache).remove(acl.getObjectIdentity());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
compile project(':spring-security-core'),
|
compile project(':spring-security-core'),
|
||||||
|
springCoreDependency,
|
||||||
"org.springframework:spring-beans:$springVersion",
|
"org.springframework:spring-beans:$springVersion",
|
||||||
"org.springframework:spring-context:$springVersion"
|
"org.springframework:spring-context:$springVersion"
|
||||||
|
|
||||||
|
|||||||
+24
-31
@@ -1,21 +1,20 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>org.springframework.security</groupId>
|
<groupId>org.springframework.security</groupId>
|
||||||
<artifactId>spring-security-aspects</artifactId>
|
<artifactId>spring-security-aspects</artifactId>
|
||||||
<version>3.2.1.CI-SNAPSHOT</version>
|
<version>3.2.10.RELEASE</version>
|
||||||
<name>spring-security-aspects</name>
|
<name>spring-security-aspects</name>
|
||||||
<description>spring-security-aspects</description>
|
<description>spring-security-aspects</description>
|
||||||
<url>http://spring.io/spring-security</url>
|
<url>https://spring.io/spring-security</url>
|
||||||
<organization>
|
<organization>
|
||||||
<name>spring.io</name>
|
<name>spring.io</name>
|
||||||
<url>http://spring.io/</url>
|
<url>https://spring.io/</url>
|
||||||
</organization>
|
</organization>
|
||||||
<licenses>
|
<licenses>
|
||||||
<license>
|
<license>
|
||||||
<name>The Apache Software License, Version 2.0</name>
|
<name>The Apache Software License, Version 2.0</name>
|
||||||
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
|
<url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
|
||||||
<distribution>repo</distribution>
|
<distribution>repo</distribution>
|
||||||
</license>
|
</license>
|
||||||
</licenses>
|
</licenses>
|
||||||
@@ -31,46 +30,29 @@
|
|||||||
<developerConnection>scm:git:git://github.com/spring-projects/spring-security</developerConnection>
|
<developerConnection>scm:git:git://github.com/spring-projects/spring-security</developerConnection>
|
||||||
<url>https://github.com/spring-projects/spring-security</url>
|
<url>https://github.com/spring-projects/spring-security</url>
|
||||||
</scm>
|
</scm>
|
||||||
<build>
|
|
||||||
<plugins>
|
|
||||||
<plugin>
|
|
||||||
<artifactId>maven-compiler-plugin</artifactId>
|
|
||||||
<configuration>
|
|
||||||
<source>1.7</source>
|
|
||||||
<target>1.7</target>
|
|
||||||
</configuration>
|
|
||||||
</plugin>
|
|
||||||
</plugins>
|
|
||||||
</build>
|
|
||||||
<repositories>
|
|
||||||
<repository>
|
|
||||||
<id>spring-snasphot</id>
|
|
||||||
<url>https://repo.spring.io/snapshot</url>
|
|
||||||
</repository>
|
|
||||||
</repositories>
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.security</groupId>
|
<groupId>org.springframework.security</groupId>
|
||||||
<artifactId>spring-security-core</artifactId>
|
<artifactId>spring-security-core</artifactId>
|
||||||
<version>3.2.1.CI-SNAPSHOT</version>
|
<version>3.2.10.RELEASE</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework</groupId>
|
<groupId>org.springframework</groupId>
|
||||||
<artifactId>spring-beans</artifactId>
|
<artifactId>spring-beans</artifactId>
|
||||||
<version>3.2.8.RELEASE</version>
|
<version>3.2.18.RELEASE</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework</groupId>
|
<groupId>org.springframework</groupId>
|
||||||
<artifactId>spring-context</artifactId>
|
<artifactId>spring-context</artifactId>
|
||||||
<version>3.2.8.RELEASE</version>
|
<version>3.2.18.RELEASE</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework</groupId>
|
<groupId>org.springframework</groupId>
|
||||||
<artifactId>spring-core</artifactId>
|
<artifactId>spring-core</artifactId>
|
||||||
<version>3.2.8.RELEASE</version>
|
<version>3.2.18.RELEASE</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
<exclusions>
|
<exclusions>
|
||||||
<exclusion>
|
<exclusion>
|
||||||
@@ -108,7 +90,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>junit</groupId>
|
<groupId>junit</groupId>
|
||||||
<artifactId>junit</artifactId>
|
<artifactId>junit</artifactId>
|
||||||
<version>4.10</version>
|
<version>4.11</version>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
@@ -120,7 +102,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.mockito</groupId>
|
<groupId>org.mockito</groupId>
|
||||||
<artifactId>mockito-core</artifactId>
|
<artifactId>mockito-core</artifactId>
|
||||||
<version>1.9.5</version>
|
<version>1.10.19</version>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
@@ -132,14 +114,25 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework</groupId>
|
<groupId>org.springframework</groupId>
|
||||||
<artifactId>spring-aop</artifactId>
|
<artifactId>spring-aop</artifactId>
|
||||||
<version>3.2.8.RELEASE</version>
|
<version>3.2.18.RELEASE</version>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework</groupId>
|
<groupId>org.springframework</groupId>
|
||||||
<artifactId>spring-test</artifactId>
|
<artifactId>spring-test</artifactId>
|
||||||
<version>3.2.8.RELEASE</version>
|
<version>3.2.18.RELEASE</version>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<source>1.7</source>
|
||||||
|
<target>1.7</target>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
</project>
|
</project>
|
||||||
|
|||||||
+15
-42
@@ -2,15 +2,14 @@ import groovy.text.SimpleTemplateEngine
|
|||||||
|
|
||||||
buildscript {
|
buildscript {
|
||||||
repositories {
|
repositories {
|
||||||
maven { url "http://repo.springsource.org/plugins-release" }
|
maven { url "https://repo.spring.io/plugins-release" }
|
||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath("org.springframework.build.gradle:propdeps-plugin:0.0.5")
|
classpath("org.springframework.build.gradle:propdeps-plugin:0.0.7")
|
||||||
classpath("org.springframework.build.gradle:bundlor-plugin:0.1.2")
|
classpath("org.springframework.build.gradle:spring-io-plugin:0.0.3.RELEASE")
|
||||||
classpath("org.gradle.api.plugins:gradle-tomcat-plugin:0.9.8")
|
classpath("org.gradle.api.plugins:gradle-tomcat-plugin:1.2.3")
|
||||||
classpath('me.champeau.gradle:gradle-javadoc-hotfix-plugin:0.1')
|
classpath('me.champeau.gradle:gradle-javadoc-hotfix-plugin:0.1')
|
||||||
classpath('org.asciidoctor:asciidoctor-gradle-plugin:0.7.0')
|
classpath('org.asciidoctor:asciidoctor-gradle-plugin:1.5.1')
|
||||||
classpath('org.asciidoctor:asciidoctor-java-integration:0.1.4.preview.1')
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -25,8 +24,8 @@ allprojects {
|
|||||||
|
|
||||||
ext.releaseBuild = version.endsWith('RELEASE')
|
ext.releaseBuild = version.endsWith('RELEASE')
|
||||||
ext.snapshotBuild = version.endsWith('SNAPSHOT')
|
ext.snapshotBuild = version.endsWith('SNAPSHOT')
|
||||||
ext.springVersion = '3.2.8.RELEASE'
|
ext.springVersion = '3.2.18.RELEASE'
|
||||||
ext.spring4Version = '4.0.2.RELEASE'
|
ext.spring4Version = '4.1.6.RELEASE'
|
||||||
ext.springLdapVersion = '1.3.2.RELEASE'
|
ext.springLdapVersion = '1.3.2.RELEASE'
|
||||||
ext.springLdap2Version = '2.0.1.RELEASE'
|
ext.springLdap2Version = '2.0.1.RELEASE'
|
||||||
|
|
||||||
@@ -36,7 +35,7 @@ allprojects {
|
|||||||
mavenCentral()
|
mavenCentral()
|
||||||
maven { url "https://repo.spring.io/libs-snapshot" }
|
maven { url "https://repo.spring.io/libs-snapshot" }
|
||||||
maven { url "https://repo.spring.io/plugins-release" }
|
maven { url "https://repo.spring.io/plugins-release" }
|
||||||
maven { url "http://repo.terracotta.org/maven2/" }
|
maven { url "https://repo.terracotta.org/maven2/" }
|
||||||
}
|
}
|
||||||
|
|
||||||
eclipse.project.name = "${project.name}-3.2.x"
|
eclipse.project.name = "${project.name}-3.2.x"
|
||||||
@@ -61,7 +60,7 @@ ext.javaProjects = subprojects.findAll { project -> project.name != 'docs' && pr
|
|||||||
ext.sampleProjects = subprojects.findAll { project -> project.name.startsWith('spring-security-samples') }
|
ext.sampleProjects = subprojects.findAll { project -> project.name.startsWith('spring-security-samples') }
|
||||||
ext.itestProjects = subprojects.findAll { project -> project.name.startsWith('itest') }
|
ext.itestProjects = subprojects.findAll { project -> project.name.startsWith('itest') }
|
||||||
ext.coreModuleProjects = javaProjects - sampleProjects - itestProjects
|
ext.coreModuleProjects = javaProjects - sampleProjects - itestProjects
|
||||||
ext.aspectjProjects = [project(':spring-security-aspects'), project(':spring-security-samples-aspectj-xml')]
|
ext.aspectjProjects = [project(':spring-security-aspects'), project(':spring-security-samples-aspectj-xml'), project(':spring-security-samples-aspectj-jc')]
|
||||||
|
|
||||||
configure(allprojects - javaProjects) {
|
configure(allprojects - javaProjects) {
|
||||||
task afterEclipseImport {
|
task afterEclipseImport {
|
||||||
@@ -98,36 +97,17 @@ configure(javaProjects) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
configure(coreModuleProjects) {
|
configure(coreModuleProjects) {
|
||||||
apply plugin: 'bundlor'
|
|
||||||
apply plugin: 'emma'
|
apply plugin: 'emma'
|
||||||
|
apply plugin: 'spring-io'
|
||||||
|
|
||||||
|
ext.springIoVersion = project.hasProperty('platformVersion') ? platformVersion : '1.1.5.RELEASE'
|
||||||
|
|
||||||
bundlor.doFirst {
|
|
||||||
def templateText = file("template.mf").text
|
|
||||||
bundlor.manifestTemplate = new SimpleTemplateEngine().createTemplate(templateText).make(bundlorProperties).toString()
|
|
||||||
}
|
|
||||||
configurations {
|
configurations {
|
||||||
jacoco //Configuration Group used by Sonar to provide Code Coverage using JaCoCo
|
jacoco //Configuration Group used by Sonar to provide Code Coverage using JaCoCo
|
||||||
spring4TestRuntime.extendsFrom testRuntime
|
|
||||||
}
|
}
|
||||||
configurations.spring4TestRuntime {
|
|
||||||
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
|
|
||||||
if (details.requested.group == 'org.springframework') {
|
|
||||||
details.useVersion spring4Version
|
|
||||||
}
|
|
||||||
if (details.requested.name == 'ehcache') {
|
|
||||||
details.useVersion '2.6.5'
|
|
||||||
}
|
|
||||||
if (details.requested.name == 'ehcache-terracotta') {
|
|
||||||
details.useVersion '2.1.1'
|
|
||||||
}
|
|
||||||
if (details.requested.group == 'org.springframework.ldap') {
|
|
||||||
details.useVersion springLdap2Version
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
jacoco "org.jacoco:org.jacoco.agent:0.6.2.201302030002:runtime"
|
jacoco "org.jacoco:org.jacoco.agent:0.6.2.201302030002:runtime"
|
||||||
|
springIoVersions "io.spring.platform:platform-versions:${springIoVersion}@properties"
|
||||||
}
|
}
|
||||||
test {
|
test {
|
||||||
jvmArgs "-javaagent:${configurations.jacoco.asPath}=destfile=${buildDir}/jacoco.exec,includes=${project.group}.*"
|
jvmArgs "-javaagent:${configurations.jacoco.asPath}=destfile=${buildDir}/jacoco.exec,includes=${project.group}.*"
|
||||||
@@ -135,14 +115,6 @@ configure(coreModuleProjects) {
|
|||||||
integrationTest {
|
integrationTest {
|
||||||
jvmArgs "-javaagent:${configurations.jacoco.asPath}=destfile=${buildDir}/jacoco.exec,includes=${project.group}.*"
|
jvmArgs "-javaagent:${configurations.jacoco.asPath}=destfile=${buildDir}/jacoco.exec,includes=${project.group}.*"
|
||||||
}
|
}
|
||||||
task spring4Test(type: Test) {
|
|
||||||
jvmArgs = ['-ea', '-Xmx500m', '-XX:MaxPermSize=128M']
|
|
||||||
exclude "**/EhCacheBasedAclCacheTests.class", "**/Issue55Tests.class"
|
|
||||||
classpath = sourceSets.test.output + sourceSets.main.output + configurations.spring4TestRuntime
|
|
||||||
testResultsDir = file("$buildDir/spring4-test-results/")
|
|
||||||
testReportDir = file("$buildDir/reports/spring4-tests/")
|
|
||||||
}
|
|
||||||
check.dependsOn spring4Test
|
|
||||||
}
|
}
|
||||||
|
|
||||||
configure (aspectjProjects) {
|
configure (aspectjProjects) {
|
||||||
@@ -166,6 +138,7 @@ task dist(type: Zip) {
|
|||||||
def zipRootDir = "${project.name}-$version"
|
def zipRootDir = "${project.name}-$version"
|
||||||
into(zipRootDir) {
|
into(zipRootDir) {
|
||||||
from(rootDir) {
|
from(rootDir) {
|
||||||
|
include '*.adoc'
|
||||||
include '*.txt'
|
include '*.txt'
|
||||||
}
|
}
|
||||||
into('docs') {
|
into('docs') {
|
||||||
@@ -194,5 +167,5 @@ artifacts {
|
|||||||
}
|
}
|
||||||
|
|
||||||
task wrapper(type: Wrapper) {
|
task wrapper(type: Wrapper) {
|
||||||
gradleVersion = '1.10-rc-2'
|
gradleVersion = '1.12'
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,11 +4,11 @@ repositories {
|
|||||||
mavenCentral()
|
mavenCentral()
|
||||||
maven {
|
maven {
|
||||||
name = 'SpringSource Enterprise Release'
|
name = 'SpringSource Enterprise Release'
|
||||||
url = 'http://repository.springsource.com/maven/bundles/release'
|
url = 'https://repository.springsource.com/maven/bundles/release'
|
||||||
}
|
}
|
||||||
maven {
|
maven {
|
||||||
name = 'SpringSource Enterprise External'
|
name = 'SpringSource Enterprise External'
|
||||||
url = 'http://repository.springsource.com/maven/bundles/external'
|
url = 'https://repository.springsource.com/maven/bundles/external'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ class AspectJPlugin implements Plugin<Project> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (project.configurations.findByName('ajtools') == null) {
|
if (project.configurations.findByName('ajtools') == null) {
|
||||||
project.configurations.add('ajtools')
|
project.configurations.create('ajtools')
|
||||||
project.dependencies {
|
project.dependencies {
|
||||||
ajtools "org.aspectj:aspectjtools:${project.aspectjVersion}"
|
ajtools "org.aspectj:aspectjtools:${project.aspectjVersion}"
|
||||||
optional "org.aspectj:aspectjrt:${project.aspectjVersion}"
|
optional "org.aspectj:aspectjrt:${project.aspectjVersion}"
|
||||||
@@ -38,10 +38,10 @@ class AspectJPlugin implements Plugin<Project> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (project.configurations.findByName('aspectpath') == null) {
|
if (project.configurations.findByName('aspectpath') == null) {
|
||||||
project.configurations.add('aspectpath')
|
project.configurations.create('aspectpath')
|
||||||
}
|
}
|
||||||
|
|
||||||
project.tasks.add(name: 'compileAspect', overwrite: true, description: 'Compiles AspectJ Source', type: Ajc) {
|
project.tasks.create(name: 'compileAspect', overwrite: true, description: 'Compiles AspectJ Source', type: Ajc) {
|
||||||
dependsOn project.configurations*.getTaskDependencyFromProjectDependency(true, "compileJava")
|
dependsOn project.configurations*.getTaskDependencyFromProjectDependency(true, "compileJava")
|
||||||
|
|
||||||
dependsOn project.processResources
|
dependsOn project.processResources
|
||||||
@@ -54,7 +54,7 @@ class AspectJPlugin implements Plugin<Project> {
|
|||||||
project.tasks.compileJava.dependsOn project.tasks.compileAspect
|
project.tasks.compileJava.dependsOn project.tasks.compileAspect
|
||||||
|
|
||||||
|
|
||||||
project.tasks.add(name: 'compileTestAspect', overwrite: true, description: 'Compiles AspectJ Test Source', type: Ajc) {
|
project.tasks.create(name: 'compileTestAspect', overwrite: true, description: 'Compiles AspectJ Test Source', type: Ajc) {
|
||||||
dependsOn project.processTestResources, project.compileJava, project.jar
|
dependsOn project.processTestResources, project.compileJava, project.jar
|
||||||
sourceSet = project.sourceSets.test
|
sourceSet = project.sourceSets.test
|
||||||
inputs.files(sourceSet.allSource)
|
inputs.files(sourceSet.allSource)
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ class EmmaPlugin implements Plugin<Project> {
|
|||||||
def emmaCoverageFile = "${rootProject.buildDir}/emma/emma.ec"
|
def emmaCoverageFile = "${rootProject.buildDir}/emma/emma.ec"
|
||||||
|
|
||||||
if (project.configurations.findByName('emma_rt') == null) {
|
if (project.configurations.findByName('emma_rt') == null) {
|
||||||
project.configurations.add('emma_rt')
|
project.configurations.create('emma_rt')
|
||||||
project.dependencies {
|
project.dependencies {
|
||||||
emma_rt 'emma:emma:2.0.5312'
|
emma_rt 'emma:emma:2.0.5312'
|
||||||
}
|
}
|
||||||
@@ -64,7 +64,7 @@ class EmmaPlugin implements Plugin<Project> {
|
|||||||
CoverageReport task;
|
CoverageReport task;
|
||||||
|
|
||||||
if (reportTasks.isEmpty()) {
|
if (reportTasks.isEmpty()) {
|
||||||
task = rootProject.tasks.add('coverageReport', CoverageReport.class);
|
task = rootProject.tasks.create('coverageReport', CoverageReport.class);
|
||||||
task.dataPath = [emmaMetaDataFile, emmaCoverageFile];
|
task.dataPath = [emmaMetaDataFile, emmaCoverageFile];
|
||||||
} else {
|
} else {
|
||||||
task = reportTasks[0];
|
task = reportTasks[0];
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ import org.gradle.api.file.FileCollection
|
|||||||
*/
|
*/
|
||||||
class TrangPlugin implements Plugin<Project> {
|
class TrangPlugin implements Plugin<Project> {
|
||||||
public void apply(Project project) {
|
public void apply(Project project) {
|
||||||
Task rncToXsd = project.tasks.add('rncToXsd', RncToXsd.class)
|
Task rncToXsd = project.tasks.create('rncToXsd', RncToXsd.class)
|
||||||
rncToXsd.description = 'Converts .rnc to .xsd'
|
rncToXsd.description = 'Converts .rnc to .xsd'
|
||||||
rncToXsd.group = 'Build'
|
rncToXsd.group = 'Build'
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-3
@@ -2,12 +2,13 @@
|
|||||||
dependencies {
|
dependencies {
|
||||||
compile project(':spring-security-core'),
|
compile project(':spring-security-core'),
|
||||||
project(':spring-security-web'),
|
project(':spring-security-web'),
|
||||||
|
springCoreDependency,
|
||||||
"org.springframework:spring-context:$springVersion",
|
"org.springframework:spring-context:$springVersion",
|
||||||
"org.springframework:spring-beans:$springVersion",
|
"org.springframework:spring-beans:$springVersion",
|
||||||
"org.springframework:spring-web:$springVersion",
|
"org.springframework:spring-web:$springVersion",
|
||||||
"org.jasig.cas.client:cas-client-core:3.2.1"
|
"org.jasig.cas.client:cas-client-core:3.3.3"
|
||||||
|
|
||||||
optional "net.sf.ehcache:ehcache:$ehcacheVersion"
|
optional "net.sf.ehcache:ehcache-core:$ehcacheVersion"
|
||||||
|
|
||||||
provided "org.apache.tomcat:tomcat-servlet-api:$servletApiVersion"
|
provided "javax.servlet:javax.servlet-api:$servletApiVersion"
|
||||||
}
|
}
|
||||||
|
|||||||
+31
-38
@@ -1,21 +1,20 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>org.springframework.security</groupId>
|
<groupId>org.springframework.security</groupId>
|
||||||
<artifactId>spring-security-cas</artifactId>
|
<artifactId>spring-security-cas</artifactId>
|
||||||
<version>3.2.1.CI-SNAPSHOT</version>
|
<version>3.2.10.RELEASE</version>
|
||||||
<name>spring-security-cas</name>
|
<name>spring-security-cas</name>
|
||||||
<description>spring-security-cas</description>
|
<description>spring-security-cas</description>
|
||||||
<url>http://spring.io/spring-security</url>
|
<url>https://spring.io/spring-security</url>
|
||||||
<organization>
|
<organization>
|
||||||
<name>spring.io</name>
|
<name>spring.io</name>
|
||||||
<url>http://spring.io/</url>
|
<url>https://spring.io/</url>
|
||||||
</organization>
|
</organization>
|
||||||
<licenses>
|
<licenses>
|
||||||
<license>
|
<license>
|
||||||
<name>The Apache Software License, Version 2.0</name>
|
<name>The Apache Software License, Version 2.0</name>
|
||||||
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
|
<url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
|
||||||
<distribution>repo</distribution>
|
<distribution>repo</distribution>
|
||||||
</license>
|
</license>
|
||||||
</licenses>
|
</licenses>
|
||||||
@@ -31,58 +30,41 @@
|
|||||||
<developerConnection>scm:git:git://github.com/spring-projects/spring-security</developerConnection>
|
<developerConnection>scm:git:git://github.com/spring-projects/spring-security</developerConnection>
|
||||||
<url>https://github.com/spring-projects/spring-security</url>
|
<url>https://github.com/spring-projects/spring-security</url>
|
||||||
</scm>
|
</scm>
|
||||||
<build>
|
|
||||||
<plugins>
|
|
||||||
<plugin>
|
|
||||||
<artifactId>maven-compiler-plugin</artifactId>
|
|
||||||
<configuration>
|
|
||||||
<source>1.7</source>
|
|
||||||
<target>1.7</target>
|
|
||||||
</configuration>
|
|
||||||
</plugin>
|
|
||||||
</plugins>
|
|
||||||
</build>
|
|
||||||
<repositories>
|
|
||||||
<repository>
|
|
||||||
<id>spring-snasphot</id>
|
|
||||||
<url>https://repo.spring.io/snapshot</url>
|
|
||||||
</repository>
|
|
||||||
</repositories>
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.jasig.cas.client</groupId>
|
<groupId>org.jasig.cas.client</groupId>
|
||||||
<artifactId>cas-client-core</artifactId>
|
<artifactId>cas-client-core</artifactId>
|
||||||
<version>3.2.1</version>
|
<version>3.3.3</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.security</groupId>
|
<groupId>org.springframework.security</groupId>
|
||||||
<artifactId>spring-security-core</artifactId>
|
<artifactId>spring-security-core</artifactId>
|
||||||
<version>3.2.1.CI-SNAPSHOT</version>
|
<version>3.2.10.RELEASE</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.security</groupId>
|
<groupId>org.springframework.security</groupId>
|
||||||
<artifactId>spring-security-web</artifactId>
|
<artifactId>spring-security-web</artifactId>
|
||||||
<version>3.2.1.CI-SNAPSHOT</version>
|
<version>3.2.10.RELEASE</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework</groupId>
|
<groupId>org.springframework</groupId>
|
||||||
<artifactId>spring-beans</artifactId>
|
<artifactId>spring-beans</artifactId>
|
||||||
<version>3.2.8.RELEASE</version>
|
<version>3.2.18.RELEASE</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework</groupId>
|
<groupId>org.springframework</groupId>
|
||||||
<artifactId>spring-context</artifactId>
|
<artifactId>spring-context</artifactId>
|
||||||
<version>3.2.8.RELEASE</version>
|
<version>3.2.18.RELEASE</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework</groupId>
|
<groupId>org.springframework</groupId>
|
||||||
<artifactId>spring-core</artifactId>
|
<artifactId>spring-core</artifactId>
|
||||||
<version>3.2.8.RELEASE</version>
|
<version>3.2.18.RELEASE</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
<exclusions>
|
<exclusions>
|
||||||
<exclusion>
|
<exclusion>
|
||||||
@@ -94,7 +76,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework</groupId>
|
<groupId>org.springframework</groupId>
|
||||||
<artifactId>spring-web</artifactId>
|
<artifactId>spring-web</artifactId>
|
||||||
<version>3.2.8.RELEASE</version>
|
<version>3.2.18.RELEASE</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
@@ -106,15 +88,15 @@
|
|||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>net.sf.ehcache</groupId>
|
<groupId>net.sf.ehcache</groupId>
|
||||||
<artifactId>ehcache</artifactId>
|
<artifactId>ehcache-core</artifactId>
|
||||||
<version>1.6.2</version>
|
<version>1.7.2</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
<optional>true</optional>
|
<optional>true</optional>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.tomcat</groupId>
|
<groupId>javax.servlet</groupId>
|
||||||
<artifactId>tomcat-servlet-api</artifactId>
|
<artifactId>javax.servlet-api</artifactId>
|
||||||
<version>7.0.33</version>
|
<version>3.0.1</version>
|
||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
@@ -126,7 +108,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>junit</groupId>
|
<groupId>junit</groupId>
|
||||||
<artifactId>junit</artifactId>
|
<artifactId>junit</artifactId>
|
||||||
<version>4.10</version>
|
<version>4.11</version>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
@@ -138,7 +120,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.mockito</groupId>
|
<groupId>org.mockito</groupId>
|
||||||
<artifactId>mockito-core</artifactId>
|
<artifactId>mockito-core</artifactId>
|
||||||
<version>1.9.5</version>
|
<version>1.10.19</version>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
@@ -150,8 +132,19 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework</groupId>
|
<groupId>org.springframework</groupId>
|
||||||
<artifactId>spring-test</artifactId>
|
<artifactId>spring-test</artifactId>
|
||||||
<version>3.2.8.RELEASE</version>
|
<version>3.2.18.RELEASE</version>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<source>1.7</source>
|
||||||
|
<target>1.7</target>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
</project>
|
</project>
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
@@ -49,9 +49,7 @@ public class ServiceProperties implements InitializingBean {
|
|||||||
//~ Methods ========================================================================================================
|
//~ Methods ========================================================================================================
|
||||||
|
|
||||||
public void afterPropertiesSet() throws Exception {
|
public void afterPropertiesSet() throws Exception {
|
||||||
if(!authenticateAllArtifacts) {
|
Assert.hasLength(this.service, "service cannot be empty.");
|
||||||
Assert.hasLength(this.service, "service must be specified unless authenticateAllArtifacts is true.");
|
|
||||||
}
|
|
||||||
Assert.hasLength(this.artifactParameter, "artifactParameter cannot be empty.");
|
Assert.hasLength(this.artifactParameter, "artifactParameter cannot be empty.");
|
||||||
Assert.hasLength(this.serviceParameter, "serviceParameter cannot be empty.");
|
Assert.hasLength(this.serviceParameter, "serviceParameter cannot be empty.");
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
+1
-1
@@ -5,7 +5,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
+21
-4
@@ -5,7 +5,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
@@ -15,6 +15,8 @@
|
|||||||
*/
|
*/
|
||||||
package org.springframework.security.cas.web.authentication;
|
package org.springframework.security.cas.web.authentication;
|
||||||
|
|
||||||
|
import java.net.MalformedURLException;
|
||||||
|
import java.net.URL;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
@@ -50,11 +52,13 @@ final class DefaultServiceAuthenticationDetails extends WebAuthenticationDetails
|
|||||||
* string from containing the artifact name and value. This can
|
* string from containing the artifact name and value. This can
|
||||||
* be created using {@link #createArtifactPattern(String)}.
|
* be created using {@link #createArtifactPattern(String)}.
|
||||||
*/
|
*/
|
||||||
DefaultServiceAuthenticationDetails(HttpServletRequest request, Pattern artifactPattern) {
|
DefaultServiceAuthenticationDetails(String casService, HttpServletRequest request, Pattern artifactPattern) throws MalformedURLException {
|
||||||
super(request);
|
super(request);
|
||||||
|
URL casServiceUrl = new URL(casService);
|
||||||
|
int port = getServicePort(casServiceUrl);
|
||||||
final String query = getQueryString(request,artifactPattern);
|
final String query = getQueryString(request,artifactPattern);
|
||||||
this.serviceUrl = UrlUtils.buildFullRequestUrl(request.getScheme(),
|
this.serviceUrl = UrlUtils.buildFullRequestUrl(casServiceUrl.getProtocol(),
|
||||||
request.getServerName(), request.getServerPort(),
|
casServiceUrl.getHost(), port,
|
||||||
request.getRequestURI(), query);
|
request.getRequestURI(), query);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -128,4 +132,17 @@ final class DefaultServiceAuthenticationDetails extends WebAuthenticationDetails
|
|||||||
Assert.hasLength(artifactParameterName);
|
Assert.hasLength(artifactParameterName);
|
||||||
return Pattern.compile("&?"+Pattern.quote(artifactParameterName)+"=[^&]*");
|
return Pattern.compile("&?"+Pattern.quote(artifactParameterName)+"=[^&]*");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the port from the casServiceURL ensuring to return the proper value if the default port is being used.
|
||||||
|
* @param casServiceUrl the casServerUrl to be used (i.e. "https://example.com/context/j_spring_security_cas_check")
|
||||||
|
* @return the port that is configured for the casServerUrl
|
||||||
|
*/
|
||||||
|
private static int getServicePort(URL casServiceUrl) {
|
||||||
|
int port = casServiceUrl.getPort();
|
||||||
|
if(port == -1) {
|
||||||
|
port = casServiceUrl.getDefaultPort();
|
||||||
|
}
|
||||||
|
return port;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+1
-1
@@ -5,7 +5,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
+49
-3
@@ -5,7 +5,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
@@ -15,12 +15,18 @@
|
|||||||
*/
|
*/
|
||||||
package org.springframework.security.cas.web.authentication;
|
package org.springframework.security.cas.web.authentication;
|
||||||
|
|
||||||
|
import java.net.MalformedURLException;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
|
import org.springframework.beans.BeansException;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.context.ApplicationContext;
|
||||||
|
import org.springframework.context.ApplicationContextAware;
|
||||||
import org.springframework.security.authentication.AuthenticationDetailsSource;
|
import org.springframework.security.authentication.AuthenticationDetailsSource;
|
||||||
import org.springframework.security.cas.ServiceProperties;
|
import org.springframework.security.cas.ServiceProperties;
|
||||||
|
import org.springframework.util.Assert;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The {@code AuthenticationDetailsSource} that is set on the
|
* The {@code AuthenticationDetailsSource} that is set on the
|
||||||
@@ -33,20 +39,33 @@ import org.springframework.security.cas.ServiceProperties;
|
|||||||
* @author Rob Winch
|
* @author Rob Winch
|
||||||
*/
|
*/
|
||||||
public class ServiceAuthenticationDetailsSource implements AuthenticationDetailsSource<HttpServletRequest,
|
public class ServiceAuthenticationDetailsSource implements AuthenticationDetailsSource<HttpServletRequest,
|
||||||
ServiceAuthenticationDetails> {
|
ServiceAuthenticationDetails>, ApplicationContextAware {
|
||||||
//~ Instance fields ================================================================================================
|
//~ Instance fields ================================================================================================
|
||||||
|
|
||||||
private final Pattern artifactPattern;
|
private final Pattern artifactPattern;
|
||||||
|
|
||||||
|
private ServiceProperties serviceProperties;
|
||||||
|
|
||||||
//~ Constructors ===================================================================================================
|
//~ Constructors ===================================================================================================
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates an implementation that uses the default CAS artifactParameterName.
|
* Creates an implementation that uses the default CAS artifactParameterName.
|
||||||
|
* @deprecated Use ServiceAuthenticationDetailsSource(ServiceProperties)
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public ServiceAuthenticationDetailsSource() {
|
public ServiceAuthenticationDetailsSource() {
|
||||||
this(ServiceProperties.DEFAULT_CAS_ARTIFACT_PARAMETER);
|
this(ServiceProperties.DEFAULT_CAS_ARTIFACT_PARAMETER);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates an implementation that uses the specified ServiceProperites and the default CAS artifactParameterName.
|
||||||
|
*
|
||||||
|
* @param serviceProperties The ServiceProperties to use to construct the serviceUrl.
|
||||||
|
*/
|
||||||
|
public ServiceAuthenticationDetailsSource(ServiceProperties serviceProperties) {
|
||||||
|
this(serviceProperties,ServiceProperties.DEFAULT_CAS_ARTIFACT_PARAMETER);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates an implementation that uses the specified artifactParameterName
|
* Creates an implementation that uses the specified artifactParameterName
|
||||||
*
|
*
|
||||||
@@ -54,11 +73,27 @@ public class ServiceAuthenticationDetailsSource implements AuthenticationDetails
|
|||||||
* the artifactParameterName that is removed from the current
|
* the artifactParameterName that is removed from the current
|
||||||
* URL. The result becomes the service url. Cannot be null and
|
* URL. The result becomes the service url. Cannot be null and
|
||||||
* cannot be an empty String.
|
* cannot be an empty String.
|
||||||
|
* @deprecated Use ServiceAuthenticationDetailsSource(ServiceProperties,String)
|
||||||
*/
|
*/
|
||||||
public ServiceAuthenticationDetailsSource(final String artifactParameterName) {
|
public ServiceAuthenticationDetailsSource(final String artifactParameterName) {
|
||||||
this.artifactPattern = DefaultServiceAuthenticationDetails.createArtifactPattern(artifactParameterName);
|
this.artifactPattern = DefaultServiceAuthenticationDetails.createArtifactPattern(artifactParameterName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates an implementation that uses the specified artifactParameterName
|
||||||
|
*
|
||||||
|
* @param serviceProperties The ServiceProperties to use to construct the serviceUrl.
|
||||||
|
* @param artifactParameterName
|
||||||
|
* the artifactParameterName that is removed from the current
|
||||||
|
* URL. The result becomes the service url. Cannot be null and
|
||||||
|
* cannot be an empty String.
|
||||||
|
*/
|
||||||
|
public ServiceAuthenticationDetailsSource(ServiceProperties serviceProperties, String artifactParameterName) {
|
||||||
|
Assert.notNull(serviceProperties, "serviceProperties cannot be null");
|
||||||
|
this.serviceProperties = serviceProperties;
|
||||||
|
this.artifactPattern = DefaultServiceAuthenticationDetails.createArtifactPattern(artifactParameterName);
|
||||||
|
}
|
||||||
|
|
||||||
//~ Methods ========================================================================================================
|
//~ Methods ========================================================================================================
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -66,6 +101,17 @@ public class ServiceAuthenticationDetailsSource implements AuthenticationDetails
|
|||||||
* @return the {@code ServiceAuthenticationDetails} containing information about the current request
|
* @return the {@code ServiceAuthenticationDetails} containing information about the current request
|
||||||
*/
|
*/
|
||||||
public ServiceAuthenticationDetails buildDetails(HttpServletRequest context) {
|
public ServiceAuthenticationDetails buildDetails(HttpServletRequest context) {
|
||||||
return new DefaultServiceAuthenticationDetails(context,artifactPattern);
|
try {
|
||||||
|
return new DefaultServiceAuthenticationDetails(serviceProperties.getService(),context,artifactPattern);
|
||||||
|
} catch (MalformedURLException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
|
||||||
|
if(serviceProperties == null) {
|
||||||
|
serviceProperties = applicationContext.getBean(ServiceProperties.class);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+1
-1
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
@@ -36,10 +36,13 @@ public class ServicePropertiesTests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void allowNullServiceWhenAuthenticateAllTokens() throws Exception {
|
public void nullServiceWhenAuthenticateAllTokens() throws Exception {
|
||||||
ServiceProperties sp = new ServiceProperties();
|
ServiceProperties sp = new ServiceProperties();
|
||||||
sp.setAuthenticateAllArtifacts(true);
|
sp.setAuthenticateAllArtifacts(true);
|
||||||
sp.afterPropertiesSet();
|
try {
|
||||||
|
sp.afterPropertiesSet();
|
||||||
|
fail("Expected Exception");
|
||||||
|
}catch(IllegalArgumentException success) {}
|
||||||
sp.setAuthenticateAllArtifacts(false);
|
sp.setAuthenticateAllArtifacts(false);
|
||||||
try {
|
try {
|
||||||
sp.afterPropertiesSet();
|
sp.afterPropertiesSet();
|
||||||
|
|||||||
+64
-13
@@ -5,7 +5,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
@@ -18,11 +18,21 @@ import static org.junit.Assert.assertEquals;
|
|||||||
|
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
import org.junit.After;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
|
||||||
|
import org.springframework.context.ConfigurableApplicationContext;
|
||||||
|
import org.springframework.context.support.ClassPathXmlApplicationContext;
|
||||||
|
import org.springframework.context.support.GenericApplicationContext;
|
||||||
|
import org.springframework.context.support.GenericXmlApplicationContext;
|
||||||
import org.springframework.mock.web.MockHttpServletRequest;
|
import org.springframework.mock.web.MockHttpServletRequest;
|
||||||
import org.springframework.security.cas.ServiceProperties;
|
import org.springframework.security.cas.ServiceProperties;
|
||||||
import org.springframework.security.web.util.UrlUtils;
|
import org.springframework.security.web.util.UrlUtils;
|
||||||
|
import org.springframework.test.context.ContextConfiguration;
|
||||||
|
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@@ -32,9 +42,13 @@ public class DefaultServiceAuthenticationDetailsTests {
|
|||||||
private DefaultServiceAuthenticationDetails details;
|
private DefaultServiceAuthenticationDetails details;
|
||||||
private MockHttpServletRequest request;
|
private MockHttpServletRequest request;
|
||||||
private Pattern artifactPattern;
|
private Pattern artifactPattern;
|
||||||
|
private String casServiceUrl;
|
||||||
|
|
||||||
|
private ConfigurableApplicationContext context;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
|
casServiceUrl = "https://localhost:8443/j_spring_security_cas";
|
||||||
request = new MockHttpServletRequest();
|
request = new MockHttpServletRequest();
|
||||||
request.setScheme("https");
|
request.setScheme("https");
|
||||||
request.setServerName("localhost");
|
request.setServerName("localhost");
|
||||||
@@ -44,45 +58,82 @@ public class DefaultServiceAuthenticationDetailsTests {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@After
|
||||||
public void getServiceUrlNullQuery() throws Exception {
|
public void cleanup() {
|
||||||
details = new DefaultServiceAuthenticationDetails(request,artifactPattern);
|
if(context != null) {
|
||||||
assertEquals(UrlUtils.buildFullRequestUrl(request),details.getServiceUrl());
|
context.close();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getServiceUrlTicketOnlyParam() {
|
public void getServiceUrlNullQuery() throws Exception {
|
||||||
|
details = new DefaultServiceAuthenticationDetails(casServiceUrl, request,artifactPattern);
|
||||||
|
assertEquals(UrlUtils.buildFullRequestUrl(request), details.getServiceUrl());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getServiceUrlTicketOnlyParam() throws Exception {
|
||||||
request.setQueryString("ticket=123");
|
request.setQueryString("ticket=123");
|
||||||
details = new DefaultServiceAuthenticationDetails(request,artifactPattern);
|
details = new DefaultServiceAuthenticationDetails(casServiceUrl,request,artifactPattern);
|
||||||
String serviceUrl = details.getServiceUrl();
|
String serviceUrl = details.getServiceUrl();
|
||||||
request.setQueryString(null);
|
request.setQueryString(null);
|
||||||
assertEquals(UrlUtils.buildFullRequestUrl(request),serviceUrl);
|
assertEquals(UrlUtils.buildFullRequestUrl(request),serviceUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getServiceUrlTicketFirstMultiParam() {
|
public void getServiceUrlTicketFirstMultiParam() throws Exception {
|
||||||
request.setQueryString("ticket=123&other=value");
|
request.setQueryString("ticket=123&other=value");
|
||||||
details = new DefaultServiceAuthenticationDetails(request,artifactPattern);
|
details = new DefaultServiceAuthenticationDetails(casServiceUrl, request,artifactPattern);
|
||||||
String serviceUrl = details.getServiceUrl();
|
String serviceUrl = details.getServiceUrl();
|
||||||
request.setQueryString("other=value");
|
request.setQueryString("other=value");
|
||||||
assertEquals(UrlUtils.buildFullRequestUrl(request),serviceUrl);
|
assertEquals(UrlUtils.buildFullRequestUrl(request),serviceUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getServiceUrlTicketLastMultiParam() {
|
public void getServiceUrlTicketLastMultiParam() throws Exception {
|
||||||
request.setQueryString("other=value&ticket=123");
|
request.setQueryString("other=value&ticket=123");
|
||||||
details = new DefaultServiceAuthenticationDetails(request,artifactPattern);
|
details = new DefaultServiceAuthenticationDetails(casServiceUrl,request,artifactPattern);
|
||||||
String serviceUrl = details.getServiceUrl();
|
String serviceUrl = details.getServiceUrl();
|
||||||
request.setQueryString("other=value");
|
request.setQueryString("other=value");
|
||||||
assertEquals(UrlUtils.buildFullRequestUrl(request),serviceUrl);
|
assertEquals(UrlUtils.buildFullRequestUrl(request),serviceUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getServiceUrlTicketMiddleMultiParam() {
|
public void getServiceUrlTicketMiddleMultiParam() throws Exception {
|
||||||
request.setQueryString("other=value&ticket=123&last=this");
|
request.setQueryString("other=value&ticket=123&last=this");
|
||||||
details = new DefaultServiceAuthenticationDetails(request,artifactPattern);
|
details = new DefaultServiceAuthenticationDetails(casServiceUrl,request,artifactPattern);
|
||||||
String serviceUrl = details.getServiceUrl();
|
String serviceUrl = details.getServiceUrl();
|
||||||
request.setQueryString("other=value&last=this");
|
request.setQueryString("other=value&last=this");
|
||||||
assertEquals(UrlUtils.buildFullRequestUrl(request),serviceUrl);
|
assertEquals(UrlUtils.buildFullRequestUrl(request),serviceUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getServiceUrlDoesNotUseHostHeader() throws Exception {
|
||||||
|
casServiceUrl = "https://example.com/j_spring_security_cas";
|
||||||
|
request.setServerName("evil.com");
|
||||||
|
details = new DefaultServiceAuthenticationDetails(casServiceUrl, request,artifactPattern);
|
||||||
|
assertEquals("https://example.com/cas-sample/secure/",details.getServiceUrl());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getServiceUrlDoesNotUseHostHeaderPassivity() {
|
||||||
|
casServiceUrl = "https://example.com/j_spring_security_cas";
|
||||||
|
request.setServerName("evil.com");
|
||||||
|
ServiceAuthenticationDetails details = loadServiceAuthenticationDetails("defaultserviceauthenticationdetails-passivity.xml");
|
||||||
|
assertEquals("https://example.com/cas-sample/secure/", details.getServiceUrl());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getServiceUrlDoesNotUseHostHeaderExplicit() {
|
||||||
|
casServiceUrl = "https://example.com/j_spring_security_cas";
|
||||||
|
request.setServerName("evil.com");
|
||||||
|
ServiceAuthenticationDetails details = loadServiceAuthenticationDetails("defaultserviceauthenticationdetails-explicit.xml");
|
||||||
|
assertEquals("https://example.com/cas-sample/secure/", details.getServiceUrl());
|
||||||
|
}
|
||||||
|
|
||||||
|
private ServiceAuthenticationDetails loadServiceAuthenticationDetails(String resourceName) {
|
||||||
|
context = new GenericXmlApplicationContext(getClass(), resourceName);
|
||||||
|
ServiceAuthenticationDetailsSource source = context.getBean(ServiceAuthenticationDetailsSource.class);
|
||||||
|
return source.buildDetails(request);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+23
@@ -0,0 +1,23 @@
|
|||||||
|
<?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:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop"
|
||||||
|
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
|
||||||
|
|
||||||
|
<bean id="serviceProperties"
|
||||||
|
class="org.springframework.security.cas.ServiceProperties">
|
||||||
|
<property name="service"
|
||||||
|
value="https://example.com/j_spring_security_cas"/>
|
||||||
|
<property name="sendRenew" value="false"/>
|
||||||
|
</bean>
|
||||||
|
<bean id="serviceProperties2"
|
||||||
|
class="org.springframework.security.cas.ServiceProperties">
|
||||||
|
<property name="service"
|
||||||
|
value="https://example2.com/j_spring_security_cas"/>
|
||||||
|
<property name="sendRenew" value="false"/>
|
||||||
|
</bean>
|
||||||
|
|
||||||
|
<bean class="org.springframework.security.cas.web.authentication.ServiceAuthenticationDetailsSource">
|
||||||
|
<constructor-arg ref="serviceProperties"/>
|
||||||
|
</bean>
|
||||||
|
</beans>
|
||||||
+15
@@ -0,0 +1,15 @@
|
|||||||
|
<?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:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop"
|
||||||
|
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
|
||||||
|
|
||||||
|
<bean id="serviceProperties"
|
||||||
|
class="org.springframework.security.cas.ServiceProperties">
|
||||||
|
<property name="service"
|
||||||
|
value="https://example.com/j_spring_security_cas"/>
|
||||||
|
<property name="sendRenew" value="false"/>
|
||||||
|
</bean>
|
||||||
|
|
||||||
|
<bean class="org.springframework.security.cas.web.authentication.ServiceAuthenticationDetailsSource"/>
|
||||||
|
</beans>
|
||||||
+1
-1
@@ -14,7 +14,7 @@ Import-Template:
|
|||||||
org.springframework.security.core.*;version="${secRange}",
|
org.springframework.security.core.*;version="${secRange}",
|
||||||
org.springframework.security.authentication.*;version="${secRange}",
|
org.springframework.security.authentication.*;version="${secRange}",
|
||||||
org.springframework.security.web.*;version="${secRange}",
|
org.springframework.security.web.*;version="${secRange}",
|
||||||
org.springframework.beans.factory;version="${springRange}",
|
org.springframework.beans.*;version="${springRange}",
|
||||||
org.springframework.cache.*;version="${springRange}";resolution:=optional,
|
org.springframework.cache.*;version="${springRange}";resolution:=optional,
|
||||||
org.springframework.context.*;version="${springRange}",
|
org.springframework.context.*;version="${springRange}",
|
||||||
org.springframework.dao;version="${springRange}",
|
org.springframework.dao;version="${springRange}",
|
||||||
|
|||||||
+11
-8
@@ -10,6 +10,7 @@ compileTestJava.dependsOn(':spring-security-core:compileTestJava')
|
|||||||
dependencies {
|
dependencies {
|
||||||
// NB: Don't add other compile time dependencies to the config module as this breaks tooling
|
// NB: Don't add other compile time dependencies to the config module as this breaks tooling
|
||||||
compile project(':spring-security-core'),
|
compile project(':spring-security-core'),
|
||||||
|
springCoreDependency,
|
||||||
'aopalliance:aopalliance:1.0',
|
'aopalliance:aopalliance:1.0',
|
||||||
"org.springframework:spring-aop:$springVersion",
|
"org.springframework:spring-aop:$springVersion",
|
||||||
"org.springframework:spring-context:$springVersion",
|
"org.springframework:spring-context:$springVersion",
|
||||||
@@ -18,13 +19,14 @@ dependencies {
|
|||||||
optional project(':spring-security-web'),
|
optional project(':spring-security-web'),
|
||||||
project(':spring-security-ldap'),
|
project(':spring-security-ldap'),
|
||||||
project(':spring-security-openid'),
|
project(':spring-security-openid'),
|
||||||
|
project(':spring-security-aspects'),
|
||||||
"org.springframework:spring-web:$springVersion",
|
"org.springframework:spring-web:$springVersion",
|
||||||
"org.springframework:spring-webmvc:$springVersion",
|
"org.springframework:spring-webmvc:$springVersion",
|
||||||
"org.aspectj:aspectjweaver:$aspectjVersion",
|
"org.aspectj:aspectjweaver:$aspectjVersion",
|
||||||
"org.springframework:spring-jdbc:$springVersion",
|
"org.springframework:spring-jdbc:$springVersion",
|
||||||
"org.springframework:spring-tx:$springVersion"
|
"org.springframework:spring-tx:$springVersion"
|
||||||
|
|
||||||
provided "org.apache.tomcat:tomcat-servlet-api:$servletApiVersion"
|
provided "javax.servlet:javax.servlet-api:$servletApiVersion"
|
||||||
|
|
||||||
testCompile project(':spring-security-cas'),
|
testCompile project(':spring-security-cas'),
|
||||||
project(':spring-security-core').sourceSets.test.output,
|
project(':spring-security-core').sourceSets.test.output,
|
||||||
@@ -34,10 +36,8 @@ dependencies {
|
|||||||
"org.springframework:spring-jdbc:$springVersion",
|
"org.springframework:spring-jdbc:$springVersion",
|
||||||
"org.springframework:spring-orm:$springVersion",
|
"org.springframework:spring-orm:$springVersion",
|
||||||
"org.springframework:spring-tx:$springVersion",
|
"org.springframework:spring-tx:$springVersion",
|
||||||
"org.spockframework:spock-core:$spockVersion",
|
|
||||||
"org.spockframework:spock-spring:$spockVersion",
|
|
||||||
"org.slf4j:jcl-over-slf4j:$slf4jVersion",
|
"org.slf4j:jcl-over-slf4j:$slf4jVersion",
|
||||||
"org.hibernate.javax.persistence:hibernate-jpa-2.0-api:1.0.1.Final",
|
"org.eclipse.persistence:javax.persistence:2.0.5",
|
||||||
"org.hibernate:hibernate-entitymanager:4.1.0.Final",
|
"org.hibernate:hibernate-entitymanager:4.1.0.Final",
|
||||||
"org.codehaus.groovy:groovy-all:$groovyVersion",
|
"org.codehaus.groovy:groovy-all:$groovyVersion",
|
||||||
"org.apache.directory.server:apacheds-core:$apacheDsVersion",
|
"org.apache.directory.server:apacheds-core:$apacheDsVersion",
|
||||||
@@ -48,12 +48,15 @@ dependencies {
|
|||||||
'org.apache.directory.shared:shared-ldap:0.9.15',
|
'org.apache.directory.shared:shared-ldap:0.9.15',
|
||||||
'ldapsdk:ldapsdk:4.1',
|
'ldapsdk:ldapsdk:4.1',
|
||||||
powerMockDependencies,
|
powerMockDependencies,
|
||||||
"org.springframework.data:spring-data-jpa:1.2.0.RELEASE",
|
|
||||||
"org.hibernate.javax.persistence:hibernate-jpa-2.0-api:1.0.0.Final",
|
|
||||||
"org.hibernate:hibernate-entitymanager:3.6.10.Final",
|
"org.hibernate:hibernate-entitymanager:3.6.10.Final",
|
||||||
"org.hsqldb:hsqldb:2.2.8"
|
"org.hsqldb:hsqldb:2.2.8",
|
||||||
|
spockDependencies
|
||||||
|
|
||||||
testCompile('org.openid4java:openid4java-nodeps:0.9.6') {
|
testCompile('org.openid4java:openid4java-nodeps:0.9.6') {
|
||||||
exclude group: 'com.google.code.guice', module: 'guice'
|
exclude group: 'com.google.code.guice', module: 'guice'
|
||||||
|
}
|
||||||
|
testCompile('org.springframework.data:spring-data-jpa:1.4.1.RELEASE') {
|
||||||
|
exclude group: 'org.aspectj', module: 'aspectjrt'
|
||||||
}
|
}
|
||||||
|
|
||||||
testRuntime "org.hsqldb:hsqldb:$hsqlVersion",
|
testRuntime "org.hsqldb:hsqldb:$hsqlVersion",
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user