Skip to content

Commit f3afa3b

Browse files
authored
Merge pull request #135 from kakawait/develop
Release 1.0.1
2 parents 857685a + 6815e53 commit f3afa3b

File tree

12 files changed

+78
-29
lines changed

12 files changed

+78
-29
lines changed

CHANGELOG.md

+5
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22

33
All notable changes to this project will be documented in this file.
44

5+
## [1.0.1](https://github.com/kakawait/cas-security-spring-boot-starter/milestone/24) - 31 jan 2020
6+
7+
- Happy new year :tada:
8+
- Move some method to become `public` in order to facilate customization (https://github.com/kakawait/cas-security-spring-boot-starter/pull/135/commits/02e1e805998f92216753cc87c6f3e99d6f6ff17e)
9+
510
## [1.0.0](https://github.com/kakawait/cas-security-spring-boot-starter/milestone/9) - 5 sept 2019
611

712
- First release that supporting Spring boot 2 ([#32](https://github.com/kakawait/cas-security-spring-boot-starter/issues/32))

README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Spring Security CAS starter
22

33
[![Travis](https://img.shields.io/travis/kakawait/cas-security-spring-boot-starter.svg)](https://travis-ci.org/kakawait/cas-security-spring-boot-starter)
4-
[![Maven Central](https://img.shields.io/maven-central/v/com.kakawait/cas-security-spring-boot-starter.svg)](https://search.maven.org/#artifactdetails%7Ccom.kakawait%7Ccas-security-spring-boot-starter%7C1.0.0%7Cjar)
4+
[![Maven Central](https://img.shields.io/maven-central/v/com.kakawait/cas-security-spring-boot-starter.svg)](https://search.maven.org/#artifactdetails%7Ccom.kakawait%7Ccas-security-spring-boot-starter%7C1.0.1%7Cjar)
55
[![License](https://img.shields.io/github/license/kakawait/cas-security-spring-boot-starter.svg)](https://github.com/kakawait/cas-security-spring-boot-starter/blob/master/LICENSE.md)
66
[![Codecov](https://img.shields.io/codecov/c/github/kakawait/cas-security-spring-boot-starter.svg)](https://codecov.io/gh/kakawait/cas-security-spring-boot-starter)
77
[![SonarQube Tech Debt](https://img.shields.io/sonar/https/sonarcloud.io/com.kakawait%3Acas-security-spring-boot-parent/tech_debt.svg)](https://sonarcloud.io/dashboard?id=com.kakawait%3Acas-security-spring-boot-parent)
@@ -26,7 +26,7 @@ Add the Spring boot starter to your project
2626
<dependency>
2727
<groupId>com.kakawait</groupId>
2828
<artifactId>cas-security-spring-boot-starter</artifactId>
29-
<version>1.0.0</version>
29+
<version>1.0.1</version>
3030
</dependency>
3131
```
3232

cas-security-spring-boot-autoconfigure/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
<parent>
1111
<groupId>com.kakawait</groupId>
1212
<artifactId>cas-security-spring-boot-parent</artifactId>
13-
<version>1.0.0</version>
13+
<version>1.0.1</version>
1414
</parent>
1515

1616
<name>Cas security spring boot autoconfigure</name>

cas-security-spring-boot-autoconfigure/src/main/java/com/kakawait/spring/boot/security/cas/autoconfigure/CasTicketValidatorBuilder.java

+14-10
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,7 @@
2626
@Slf4j
2727
public class CasTicketValidatorBuilder {
2828

29-
private int protocolVersion = 3;
30-
31-
private Boolean proxyTicketValidator;
32-
33-
final String casServerUrlPrefix;
29+
private final String casServerUrlPrefix;
3430

3531
String proxyCallbackUrl;
3632

@@ -50,10 +46,18 @@ public class CasTicketValidatorBuilder {
5046

5147
Boolean allowEmptyProxyChain;
5248

49+
private int protocolVersion = 3;
50+
51+
private Boolean proxyTicketValidator;
52+
5353
CasTicketValidatorBuilder(String casServerUrlPrefix) {
5454
this.casServerUrlPrefix = casServerUrlPrefix;
5555
}
5656

57+
public String getCasServerUrlPrefix() {
58+
return casServerUrlPrefix;
59+
}
60+
5761
public TicketValidator build() {
5862
CasTicketValidatorBuilder builder;
5963
if (proxyTicketValidator == null && protocolVersion > 1) {
@@ -148,7 +152,7 @@ private static class Cas10TicketValidatorBuilder extends AbstractTicketValidator
148152

149153
@Override
150154
public TicketValidator build() {
151-
Cas10TicketValidator ticketValidator = new Cas10TicketValidator(casServerUrlPrefix);
155+
Cas10TicketValidator ticketValidator = new Cas10TicketValidator(getCasServerUrlPrefix());
152156
if (StringUtils.hasText(proxyCallbackUrl)) {
153157
logger.warn(OMISSION_MESSAGE_TEMPLATE, "proxyCallbackUrl");
154158
}
@@ -184,7 +188,7 @@ private static class Cas20ServiceTicketValidatorBuilder
184188

185189
@Override
186190
public TicketValidator build() {
187-
Cas20ServiceTicketValidator ticketValidator = new Cas20ServiceTicketValidator(casServerUrlPrefix);
191+
Cas20ServiceTicketValidator ticketValidator = new Cas20ServiceTicketValidator(getCasServerUrlPrefix());
188192
if (proxyChainsValidation != null) {
189193
logger.warn(OMISSION_MESSAGE_TEMPLATE, "proxyChainsValidation");
190194
}
@@ -221,7 +225,7 @@ private static class Cas20ProxyTicketValidatorBuilder extends Cas20ServiceTicket
221225

222226
@Override
223227
public TicketValidator build() {
224-
Cas20ProxyTicketValidator ticketValidator = new Cas20ProxyTicketValidator(casServerUrlPrefix);
228+
Cas20ProxyTicketValidator ticketValidator = new Cas20ProxyTicketValidator(getCasServerUrlPrefix());
225229
super.configure(ticketValidator);
226230

227231
if (proxyChainsValidation != null) {
@@ -246,7 +250,7 @@ private static class Cas30ServiceTicketValidatorBuilder extends Cas20ServiceTick
246250

247251
@Override
248252
public TicketValidator build() {
249-
Cas30ServiceTicketValidator ticketValidator = new Cas30ServiceTicketValidator(casServerUrlPrefix);
253+
Cas30ServiceTicketValidator ticketValidator = new Cas30ServiceTicketValidator(getCasServerUrlPrefix());
250254
if (proxyChainsValidation != null) {
251255
logger.warn(OMISSION_MESSAGE_TEMPLATE, "proxyChainsValidation");
252256
}
@@ -269,7 +273,7 @@ private static class Cas30ProxyTicketValidatorBuilder extends Cas20ServiceTicket
269273

270274
@Override
271275
public Cas30ProxyTicketValidator build() {
272-
Cas30ProxyTicketValidator ticketValidator = new Cas30ProxyTicketValidator(casServerUrlPrefix);
276+
Cas30ProxyTicketValidator ticketValidator = new Cas30ProxyTicketValidator(getCasServerUrlPrefix());
273277
super.configure(ticketValidator);
274278

275279
if (proxyChainsValidation != null) {

cas-security-spring-boot-sample/Dockerfile

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,6 @@ RUN mvn clean install && mvn -f cas-security-spring-boot-sample/pom.xml clean in
55

66
FROM openjdk:8-jre-alpine
77
WORKDIR /app
8-
COPY --from=build /src/cas-security-spring-boot-sample/target/cas-security-spring-boot-sample-1.0.0.jar /app
8+
COPY --from=build /src/cas-security-spring-boot-sample/target/cas-security-spring-boot-sample-1.0.1.jar /app
99
ENV JAVA_OPTS=""
10-
CMD [ "sh", "-c", "java $JAVA_OPTS -jar /app/cas-security-spring-boot-sample-1.0.0.jar" ]
10+
CMD [ "sh", "-c", "java $JAVA_OPTS -jar /app/cas-security-spring-boot-sample-1.0.1.jar" ]

cas-security-spring-boot-sample/docker-compose.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ services:
1919
build:
2020
context: ../
2121
dockerfile: cas-security-spring-boot-sample/Dockerfile
22-
image: cas-security-spring-boot-sample:1.0.0
22+
image: cas-security-spring-boot-sample:1.0.1
2323
ports:
2424
- "8081:8081"
2525
- "5005"

cas-security-spring-boot-sample/pom.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@
66

77
<groupId>com.kakawait</groupId>
88
<artifactId>cas-security-spring-boot-sample</artifactId>
9-
<version>1.0.0</version>
9+
<version>1.0.1</version>
1010

1111
<name>Cas security spring boot sample</name>
1212

1313
<parent>
1414
<groupId>org.springframework.boot</groupId>
1515
<artifactId>spring-boot-starter-parent</artifactId>
16-
<version>2.1.7.RELEASE</version>
16+
<version>2.2.4.RELEASE</version>
1717
</parent>
1818

1919
<properties>

cas-security-spring-boot-sample/src/main/java/com/kakawait/sample/CasSecuritySpringBootSampleApplication.java

+40
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.kakawait.spring.boot.security.cas.autoconfigure.CasHttpSecurityConfigurer;
44
import com.kakawait.spring.boot.security.cas.autoconfigure.CasSecurityCondition;
55
import com.kakawait.spring.boot.security.cas.autoconfigure.CasSecurityConfigurerAdapter;
6+
import com.kakawait.spring.boot.security.cas.autoconfigure.CasSecurityProperties;
67
import com.kakawait.spring.security.cas.client.CasAuthorizationInterceptor;
78
import com.kakawait.spring.security.cas.client.ticket.ProxyTicketProvider;
89
import com.kakawait.spring.security.cas.client.validation.AssertionProvider;
@@ -16,6 +17,7 @@
1617
import org.springframework.context.annotation.Configuration;
1718
import org.springframework.context.annotation.Profile;
1819
import org.springframework.core.Ordered;
20+
import org.springframework.core.annotation.Order;
1921
import org.springframework.http.HttpStatus;
2022
import org.springframework.security.access.annotation.Secured;
2123
import org.springframework.security.authentication.AuthenticationManager;
@@ -25,6 +27,7 @@
2527
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
2628
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
2729
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
30+
import org.springframework.security.config.annotation.web.builders.WebSecurity;
2831
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
2932
import org.springframework.security.core.Authentication;
3033
import org.springframework.security.web.authentication.HttpStatusEntryPoint;
@@ -77,6 +80,37 @@ RestTemplate casRestTemplate(ServiceProperties serviceProperties, ProxyTicketPro
7780
return restTemplate;
7881
}
7982

83+
@Configuration
84+
@Order(CasSecurityProperties.CAS_AUTH_ORDER + 1)
85+
static class SecurityConfiguration extends WebSecurityConfigurerAdapter {
86+
87+
/**
88+
* Ignoring path by completely remove security filter on /ignored endpoint.
89+
* That method should be use when you really need security/authentication.
90+
* For example for resources/static endpoints
91+
* <p>
92+
* If you would just like to {@code permitAll()} an endpoint you should instead check
93+
* {@see OverrideDefaultCasSecurity#configure} method.
94+
*/
95+
@Override
96+
public void configure(WebSecurity web) {
97+
web.ignoring().antMatchers("/ignored");
98+
}
99+
}
100+
101+
@Configuration
102+
@Conditional(CasSecurityCondition.class)
103+
static class OverrideDefaultCasSecurity extends CasSecurityConfigurerAdapter {
104+
105+
/**
106+
* Permit all an specific endpoint
107+
*/
108+
@Override
109+
public void configure(HttpSecurity http) throws Exception {
110+
http.authorizeRequests().antMatchers("/permit-all").permitAll();
111+
}
112+
}
113+
80114
@Profile("!custom-logout")
81115
@Configuration
82116
@Conditional(CasSecurityCondition.class)
@@ -139,6 +173,7 @@ public void configure(HttpSecurity http) throws Exception {
139173
@Profile("custom-logout")
140174
@Configuration
141175
static class WebMvcConfiguration implements WebMvcConfigurer {
176+
142177
@Override
143178
public void addViewControllers(ViewControllerRegistry registry) {
144179
registry.addViewController("/logout.html").setViewName("logout");
@@ -232,6 +267,11 @@ public String hello(Authentication authentication, Model model) {
232267
return casRestTemplate.getForEntity("http://httpbin.org/get", String.class).getBody();
233268
}
234269

270+
@RequestMapping(path = "/permit-all")
271+
public String permitAll() {
272+
return "index";
273+
}
274+
235275
@RequestMapping(path = "/ignored")
236276
public String ignored() {
237277
return "index";

cas-security-spring-boot-starter/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
<parent>
1111
<groupId>com.kakawait</groupId>
1212
<artifactId>cas-security-spring-boot-parent</artifactId>
13-
<version>1.0.0</version>
13+
<version>1.0.1</version>
1414
</parent>
1515

1616
<name>Cas security spring boot starter</name>

pom.xml

+8-8
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<groupId>com.kakawait</groupId>
88
<artifactId>cas-security-spring-boot-parent</artifactId>
99
<packaging>pom</packaging>
10-
<version>1.0.0</version>
10+
<version>1.0.1</version>
1111

1212
<name>Cas security spring boot parent</name>
1313
<description>Spring boot starter for Apereo CAS client fully integrated with Spring security</description>
@@ -49,22 +49,22 @@
4949
<maven.compiler.target>1.8</maven.compiler.target>
5050

5151
<!-- spring managed version -->
52-
<jackson.version>2.9.9</jackson.version>
53-
<jackson-databind.version>2.9.9.3</jackson-databind.version>
52+
<jackson.version>2.10.2</jackson.version>
53+
<jackson-databind.version>2.10.2</jackson-databind.version>
5454

5555
<!-- dependencies -->
56-
<spring-boot-dependencies.version>2.1.7.RELEASE</spring-boot-dependencies.version>
56+
<spring-boot-dependencies.version>2.2.4.RELEASE</spring-boot-dependencies.version>
5757

5858
<!-- provided dependencies -->
59-
<lombok.version>1.18.8</lombok.version>
59+
<lombok.version>1.18.10</lombok.version>
6060

6161
<!-- test dependencies -->
62-
<assertj-core.version>3.13.2</assertj-core.version>
63-
<mockito-core.version>3.0.0</mockito-core.version>
62+
<assertj-core.version>3.15.0</assertj-core.version>
63+
<mockito-core.version>3.2.4</mockito-core.version>
6464

6565
<!-- plugins -->
6666
<jacoco-maven-plugin.version>0.8.4</jacoco-maven-plugin.version>
67-
<maven-source-plugin.version>3.1.0</maven-source-plugin.version>
67+
<maven-source-plugin.version>3.2.1</maven-source-plugin.version>
6868
<maven-javadoc-plugin.version>3.1.1</maven-javadoc-plugin.version>
6969
<maven-gpg-plugin.version>1.6</maven-gpg-plugin.version>
7070
<nexus-staging-maven-plugin.version>1.6.8</nexus-staging-maven-plugin.version>

spring-security-cas-extension/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
<parent>
1111
<groupId>com.kakawait</groupId>
1212
<artifactId>cas-security-spring-boot-parent</artifactId>
13-
<version>1.0.0</version>
13+
<version>1.0.1</version>
1414
</parent>
1515

1616
<name>Spring security cas extension</name>

spring-security-cas-extension/src/main/java/com/kakawait/spring/security/cas/LaxServiceProperties.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public LaxServiceProperties(boolean dynamicServiceResolution) {
1919
}
2020

2121
@Override
22-
public void afterPropertiesSet() throws Exception {
22+
public void afterPropertiesSet() {
2323
if (!dynamicServiceResolution) {
2424
super.afterPropertiesSet();
2525
} else {

0 commit comments

Comments
 (0)