diff --git a/.idea/misc.xml b/.idea/misc.xml
index 5821b2f..7edc3a5 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -4,5 +4,5 @@
-
+
\ No newline at end of file
diff --git a/gradle.properties b/gradle.properties
index 5ab3f03..53c91c3 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,5 +1,5 @@
-version=5.6.0-SNAPSHOT
-spring-security.version=5.6.0-SNAPSHOT
+version=6.0.0-SNAPSHOT
+spring-security.version=6.0.0-SNAPSHOT
org.gradle.jvmargs=-Xmx3g -XX:+HeapDumpOnOutOfMemoryError
org.gradle.parallel=true
org.gradle.caching=true
diff --git a/reactive/rsocket/hello-security/build.gradle b/reactive/rsocket/hello-security/build.gradle
index 30585ac..d188451 100644
--- a/reactive/rsocket/hello-security/build.gradle
+++ b/reactive/rsocket/hello-security/build.gradle
@@ -1,6 +1,6 @@
plugins {
- id 'org.springframework.boot' version '2.5.2'
- id 'io.spring.dependency-management' version '1.0.10.RELEASE'
+ id 'org.springframework.boot' version '3.0.0-M1'
+ id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id "nebula.integtest" version "8.2.0"
id 'java'
}
diff --git a/reactive/rsocket/hello-security/gradle.properties b/reactive/rsocket/hello-security/gradle.properties
index c924e36..ce1417e 100644
--- a/reactive/rsocket/hello-security/gradle.properties
+++ b/reactive/rsocket/hello-security/gradle.properties
@@ -1,2 +1,2 @@
-version=5.6.0-SNAPSHOT
-spring-security.version=5.6.0-SNAPSHOT
+version=6.0.0-SNAPSHOT
+spring-security.version=6.0.0-SNAPSHOT
diff --git a/reactive/webflux-fn/hello-security/build.gradle b/reactive/webflux-fn/hello-security/build.gradle
index d500ed8..b5aae82 100644
--- a/reactive/webflux-fn/hello-security/build.gradle
+++ b/reactive/webflux-fn/hello-security/build.gradle
@@ -1,6 +1,6 @@
plugins {
- id 'org.springframework.boot' version '2.5.2'
- id 'io.spring.dependency-management' version '1.0.10.RELEASE'
+ id 'org.springframework.boot' version '3.0.0-M1'
+ id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id "nebula.integtest" version "8.2.0"
id 'java'
}
diff --git a/reactive/webflux-fn/hello-security/gradle.properties b/reactive/webflux-fn/hello-security/gradle.properties
index c924e36..ce1417e 100644
--- a/reactive/webflux-fn/hello-security/gradle.properties
+++ b/reactive/webflux-fn/hello-security/gradle.properties
@@ -1,2 +1,2 @@
-version=5.6.0-SNAPSHOT
-spring-security.version=5.6.0-SNAPSHOT
+version=6.0.0-SNAPSHOT
+spring-security.version=6.0.0-SNAPSHOT
diff --git a/reactive/webflux-fn/hello/build.gradle b/reactive/webflux-fn/hello/build.gradle
index 444de4e..1e520af 100644
--- a/reactive/webflux-fn/hello/build.gradle
+++ b/reactive/webflux-fn/hello/build.gradle
@@ -1,6 +1,6 @@
plugins {
- id 'org.springframework.boot' version '2.5.2'
- id 'io.spring.dependency-management' version '1.0.10.RELEASE'
+ id 'org.springframework.boot' version '3.0.0-M1'
+ id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id "nebula.integtest" version "8.2.0"
id 'java'
}
diff --git a/reactive/webflux-fn/hello/gradle.properties b/reactive/webflux-fn/hello/gradle.properties
index c924e36..ce1417e 100644
--- a/reactive/webflux-fn/hello/gradle.properties
+++ b/reactive/webflux-fn/hello/gradle.properties
@@ -1,2 +1,2 @@
-version=5.6.0-SNAPSHOT
-spring-security.version=5.6.0-SNAPSHOT
+version=6.0.0-SNAPSHOT
+spring-security.version=6.0.0-SNAPSHOT
diff --git a/reactive/webflux/java/authentication/username-password/form/build.gradle b/reactive/webflux/java/authentication/username-password/form/build.gradle
index 4ed2d27..40196ac 100644
--- a/reactive/webflux/java/authentication/username-password/form/build.gradle
+++ b/reactive/webflux/java/authentication/username-password/form/build.gradle
@@ -1,6 +1,6 @@
plugins {
- id 'org.springframework.boot' version '2.5.2'
- id 'io.spring.dependency-management' version '1.0.10.RELEASE'
+ id 'org.springframework.boot' version '2.6.4'
+ id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id "nebula.integtest" version "8.2.0"
id 'java'
}
diff --git a/reactive/webflux/java/authentication/username-password/form/gradle.properties b/reactive/webflux/java/authentication/username-password/form/gradle.properties
index c924e36..e19a862 100644
--- a/reactive/webflux/java/authentication/username-password/form/gradle.properties
+++ b/reactive/webflux/java/authentication/username-password/form/gradle.properties
@@ -1,2 +1,2 @@
-version=5.6.0-SNAPSHOT
-spring-security.version=5.6.0-SNAPSHOT
+version=5.7.0-SNAPSHOT
+spring-security.version=5.7.0-SNAPSHOT
diff --git a/reactive/webflux/java/authentication/username-password/form/src/integTest/java/example/pages/LoginPage.java b/reactive/webflux/java/authentication/username-password/form/src/integTest/java/example/pages/LoginPage.java
index 5773a37..298092d 100644
--- a/reactive/webflux/java/authentication/username-password/form/src/integTest/java/example/pages/LoginPage.java
+++ b/reactive/webflux/java/authentication/username-password/form/src/integTest/java/example/pages/LoginPage.java
@@ -70,8 +70,10 @@ public class LoginPage {
private WebDriver driver;
+ @FindBy(id = "username")
private WebElement username;
+ @FindBy(id = "password")
private WebElement password;
@FindBy(css = "button[type=submit]")
diff --git a/reactive/webflux/java/authentication/x509/build.gradle b/reactive/webflux/java/authentication/x509/build.gradle
index 90195b4..dd773f6 100644
--- a/reactive/webflux/java/authentication/x509/build.gradle
+++ b/reactive/webflux/java/authentication/x509/build.gradle
@@ -1,6 +1,6 @@
plugins {
- id 'org.springframework.boot' version '2.5.2'
- id 'io.spring.dependency-management' version '1.0.10.RELEASE'
+ id 'org.springframework.boot' version '3.0.0-M1'
+ id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id "nebula.integtest" version "8.2.0"
id 'java'
}
diff --git a/reactive/webflux/java/authentication/x509/gradle.properties b/reactive/webflux/java/authentication/x509/gradle.properties
index c924e36..ce1417e 100644
--- a/reactive/webflux/java/authentication/x509/gradle.properties
+++ b/reactive/webflux/java/authentication/x509/gradle.properties
@@ -1,2 +1,2 @@
-version=5.6.0-SNAPSHOT
-spring-security.version=5.6.0-SNAPSHOT
+version=6.0.0-SNAPSHOT
+spring-security.version=6.0.0-SNAPSHOT
diff --git a/reactive/webflux/java/hello-security-explicit/build.gradle b/reactive/webflux/java/hello-security-explicit/build.gradle
index 7ef4928..4d34ec2 100644
--- a/reactive/webflux/java/hello-security-explicit/build.gradle
+++ b/reactive/webflux/java/hello-security-explicit/build.gradle
@@ -1,6 +1,6 @@
plugins {
- id 'org.springframework.boot' version '2.5.2'
- id 'io.spring.dependency-management' version '1.0.10.RELEASE'
+ id 'org.springframework.boot' version '3.0.0-M1'
+ id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id "nebula.integtest" version "8.2.0"
id 'java'
}
diff --git a/reactive/webflux/java/hello-security-explicit/gradle.properties b/reactive/webflux/java/hello-security-explicit/gradle.properties
index c924e36..ce1417e 100644
--- a/reactive/webflux/java/hello-security-explicit/gradle.properties
+++ b/reactive/webflux/java/hello-security-explicit/gradle.properties
@@ -1,2 +1,2 @@
-version=5.6.0-SNAPSHOT
-spring-security.version=5.6.0-SNAPSHOT
+version=6.0.0-SNAPSHOT
+spring-security.version=6.0.0-SNAPSHOT
diff --git a/reactive/webflux/java/hello-security-explicit/src/integTest/java/example/pages/LoginPage.java b/reactive/webflux/java/hello-security-explicit/src/integTest/java/example/pages/LoginPage.java
index 60e0b3d..319e70c 100644
--- a/reactive/webflux/java/hello-security-explicit/src/integTest/java/example/pages/LoginPage.java
+++ b/reactive/webflux/java/hello-security-explicit/src/integTest/java/example/pages/LoginPage.java
@@ -51,8 +51,10 @@ public class LoginPage {
private WebDriver webDriver;
+ @FindBy(id = "username")
private WebElement username;
+ @FindBy(id = "password")
private WebElement password;
@FindBy(css = "button[type=submit]")
diff --git a/reactive/webflux/java/hello-security/build.gradle b/reactive/webflux/java/hello-security/build.gradle
index 0150ff3..3ac381e 100644
--- a/reactive/webflux/java/hello-security/build.gradle
+++ b/reactive/webflux/java/hello-security/build.gradle
@@ -1,6 +1,6 @@
plugins {
- id 'org.springframework.boot' version '2.5.2'
- id 'io.spring.dependency-management' version '1.0.10.RELEASE'
+ id 'org.springframework.boot' version '3.0.0-M1'
+ id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id "nebula.integtest" version "8.2.0"
id 'java'
}
diff --git a/reactive/webflux/java/hello-security/gradle.properties b/reactive/webflux/java/hello-security/gradle.properties
index c924e36..ce1417e 100644
--- a/reactive/webflux/java/hello-security/gradle.properties
+++ b/reactive/webflux/java/hello-security/gradle.properties
@@ -1,2 +1,2 @@
-version=5.6.0-SNAPSHOT
-spring-security.version=5.6.0-SNAPSHOT
+version=6.0.0-SNAPSHOT
+spring-security.version=6.0.0-SNAPSHOT
diff --git a/reactive/webflux/java/hello/build.gradle b/reactive/webflux/java/hello/build.gradle
index 444de4e..1e520af 100644
--- a/reactive/webflux/java/hello/build.gradle
+++ b/reactive/webflux/java/hello/build.gradle
@@ -1,6 +1,6 @@
plugins {
- id 'org.springframework.boot' version '2.5.2'
- id 'io.spring.dependency-management' version '1.0.10.RELEASE'
+ id 'org.springframework.boot' version '3.0.0-M1'
+ id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id "nebula.integtest" version "8.2.0"
id 'java'
}
diff --git a/reactive/webflux/java/hello/gradle.properties b/reactive/webflux/java/hello/gradle.properties
index c924e36..ce1417e 100644
--- a/reactive/webflux/java/hello/gradle.properties
+++ b/reactive/webflux/java/hello/gradle.properties
@@ -1,2 +1,2 @@
-version=5.6.0-SNAPSHOT
-spring-security.version=5.6.0-SNAPSHOT
+version=6.0.0-SNAPSHOT
+spring-security.version=6.0.0-SNAPSHOT
diff --git a/reactive/webflux/java/method/build.gradle b/reactive/webflux/java/method/build.gradle
index 680af93..80187bb 100644
--- a/reactive/webflux/java/method/build.gradle
+++ b/reactive/webflux/java/method/build.gradle
@@ -1,6 +1,6 @@
plugins {
- id 'org.springframework.boot' version '2.5.2'
- id 'io.spring.dependency-management' version '1.0.10.RELEASE'
+ id 'org.springframework.boot' version '3.0.0-M1'
+ id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id "nebula.integtest" version "8.2.0"
id 'java'
}
diff --git a/reactive/webflux/java/method/gradle.properties b/reactive/webflux/java/method/gradle.properties
index c924e36..ce1417e 100644
--- a/reactive/webflux/java/method/gradle.properties
+++ b/reactive/webflux/java/method/gradle.properties
@@ -1,2 +1,2 @@
-version=5.6.0-SNAPSHOT
-spring-security.version=5.6.0-SNAPSHOT
+version=6.0.0-SNAPSHOT
+spring-security.version=6.0.0-SNAPSHOT
diff --git a/reactive/webflux/java/oauth2/login/build.gradle b/reactive/webflux/java/oauth2/login/build.gradle
index 3920308..225f9da 100644
--- a/reactive/webflux/java/oauth2/login/build.gradle
+++ b/reactive/webflux/java/oauth2/login/build.gradle
@@ -1,6 +1,6 @@
plugins {
- id 'org.springframework.boot' version '2.5.2'
- id 'io.spring.dependency-management' version '1.0.10.RELEASE'
+ id 'org.springframework.boot' version '3.0.0-M1'
+ id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id "nebula.integtest" version "8.2.0"
id 'java'
}
@@ -15,7 +15,7 @@ dependencies {
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-webflux'
- implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5'
+ implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity6'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.security:spring-security-test'
diff --git a/reactive/webflux/java/oauth2/login/gradle.properties b/reactive/webflux/java/oauth2/login/gradle.properties
index c924e36..ce1417e 100644
--- a/reactive/webflux/java/oauth2/login/gradle.properties
+++ b/reactive/webflux/java/oauth2/login/gradle.properties
@@ -1,2 +1,2 @@
-version=5.6.0-SNAPSHOT
-spring-security.version=5.6.0-SNAPSHOT
+version=6.0.0-SNAPSHOT
+spring-security.version=6.0.0-SNAPSHOT
diff --git a/reactive/webflux/java/oauth2/resource-server/build.gradle b/reactive/webflux/java/oauth2/resource-server/build.gradle
index 0274f0d..7f6573e 100644
--- a/reactive/webflux/java/oauth2/resource-server/build.gradle
+++ b/reactive/webflux/java/oauth2/resource-server/build.gradle
@@ -1,6 +1,6 @@
plugins {
- id 'org.springframework.boot' version '2.5.2'
- id 'io.spring.dependency-management' version '1.0.10.RELEASE'
+ id 'org.springframework.boot' version '3.0.0-M1'
+ id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id "nebula.integtest" version "8.2.0"
id 'java'
}
diff --git a/reactive/webflux/java/oauth2/resource-server/gradle.properties b/reactive/webflux/java/oauth2/resource-server/gradle.properties
index c924e36..ce1417e 100644
--- a/reactive/webflux/java/oauth2/resource-server/gradle.properties
+++ b/reactive/webflux/java/oauth2/resource-server/gradle.properties
@@ -1,2 +1,2 @@
-version=5.6.0-SNAPSHOT
-spring-security.version=5.6.0-SNAPSHOT
+version=6.0.0-SNAPSHOT
+spring-security.version=6.0.0-SNAPSHOT
diff --git a/reactive/webflux/java/oauth2/webclient/build.gradle b/reactive/webflux/java/oauth2/webclient/build.gradle
index c80b454..7adb7cc 100644
--- a/reactive/webflux/java/oauth2/webclient/build.gradle
+++ b/reactive/webflux/java/oauth2/webclient/build.gradle
@@ -1,6 +1,6 @@
plugins {
- id 'org.springframework.boot' version '2.5.2'
- id 'io.spring.dependency-management' version '1.0.10.RELEASE'
+ id 'org.springframework.boot' version '3.0.0-M1'
+ id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id "nebula.integtest" version "8.2.0"
id 'java'
}
@@ -15,7 +15,7 @@ dependencies {
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
implementation 'org.springframework:spring-webflux'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
- implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5'
+ implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity6'
implementation 'io.projectreactor.netty:reactor-netty'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
diff --git a/reactive/webflux/java/oauth2/webclient/gradle.properties b/reactive/webflux/java/oauth2/webclient/gradle.properties
index c924e36..ce1417e 100644
--- a/reactive/webflux/java/oauth2/webclient/gradle.properties
+++ b/reactive/webflux/java/oauth2/webclient/gradle.properties
@@ -1,2 +1,2 @@
-version=5.6.0-SNAPSHOT
-spring-security.version=5.6.0-SNAPSHOT
+version=6.0.0-SNAPSHOT
+spring-security.version=6.0.0-SNAPSHOT
diff --git a/reactive/webflux/kotlin/hello-security/build.gradle.kts b/reactive/webflux/kotlin/hello-security/build.gradle.kts
index 58b7dbb..d9261b4 100644
--- a/reactive/webflux/kotlin/hello-security/build.gradle.kts
+++ b/reactive/webflux/kotlin/hello-security/build.gradle.kts
@@ -1,8 +1,8 @@
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins {
- id("org.springframework.boot") version "2.5.0"
- id("io.spring.dependency-management") version "1.0.9.RELEASE"
+ id("org.springframework.boot") version "3.0.0-M1"
+ id("io.spring.dependency-management") version "1.0.11.RELEASE"
kotlin("jvm") version "1.6.0"
kotlin("plugin.spring") version "1.6.0"
}
@@ -12,13 +12,16 @@ repositories {
maven {
url = uri("https://repo.spring.io/snapshot")
}
+ maven {
+ url = uri("https://repo.spring.io/milestone")
+ }
}
dependencies {
implementation("org.springframework.boot:spring-boot-starter-security")
implementation("org.springframework.boot:spring-boot-starter-thymeleaf")
implementation("org.springframework.boot:spring-boot-starter-webflux")
- implementation("org.thymeleaf.extras:thymeleaf-extras-springsecurity5")
+ implementation("org.thymeleaf.extras:thymeleaf-extras-springsecurity6")
implementation("io.projectreactor.kotlin:reactor-kotlin-extensions")
implementation("org.jetbrains.kotlin:kotlin-reflect")
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
@@ -40,4 +43,4 @@ tasks.withType {
tasks.withType {
useJUnitPlatform()
-}
\ No newline at end of file
+}
diff --git a/reactive/webflux/kotlin/hello-security/gradle.properties b/reactive/webflux/kotlin/hello-security/gradle.properties
index 778a95c..a37772a 100644
--- a/reactive/webflux/kotlin/hello-security/gradle.properties
+++ b/reactive/webflux/kotlin/hello-security/gradle.properties
@@ -1 +1 @@
-spring-security.version=5.6.0-SNAPSHOT
+spring-security.version=6.0.0-SNAPSHOT
diff --git a/servlet/java-configuration/authentication/username-password/form/build.gradle b/servlet/java-configuration/authentication/username-password/form/build.gradle
index 57a935c..27928f9 100644
--- a/servlet/java-configuration/authentication/username-password/form/build.gradle
+++ b/servlet/java-configuration/authentication/username-password/form/build.gradle
@@ -1,7 +1,7 @@
plugins {
id "java"
id "nebula.integtest" version "8.2.0"
- id "org.gretty" version "3.0.6"
+ id "org.gretty" version "4.0.0"
id "war"
}
@@ -14,14 +14,14 @@ repositories {
}
dependencies {
- implementation platform("org.springframework:spring-framework-bom:5.3.0")
- implementation platform("org.springframework.security:spring-security-bom:5.5.0-SNAPSHOT")
+ implementation platform("org.springframework:spring-framework-bom:6.0.0-SNAPSHOT")
+ implementation platform("org.springframework.security:spring-security-bom:6.0.0-SNAPSHOT")
implementation platform("org.junit:junit-bom:5.7.0")
implementation "org.springframework.security:spring-security-config"
implementation "org.springframework.security:spring-security-web"
implementation "org.springframework:spring-webmvc"
- implementation "org.thymeleaf:thymeleaf-spring5:3.0.11.RELEASE"
+ implementation "org.thymeleaf:thymeleaf-spring6:3.1.0.M1"
testImplementation "org.assertj:assertj-core:3.18.0"
testImplementation "org.springframework:spring-test"
diff --git a/servlet/java-configuration/authentication/username-password/form/gradle/gretty.gradle b/servlet/java-configuration/authentication/username-password/form/gradle/gretty.gradle
index 6949bdf..3428615 100644
--- a/servlet/java-configuration/authentication/username-password/form/gradle/gretty.gradle
+++ b/servlet/java-configuration/authentication/username-password/form/gradle/gretty.gradle
@@ -1,5 +1,5 @@
gretty {
- servletContainer = "tomcat9"
+ servletContainer = "tomcat10"
contextPath = "/"
fileLogEnabled = false
integrationTestTask = 'integrationTest'
@@ -38,4 +38,4 @@ project.tasks.matching { it.name == "integrationTest" }.all {
integrationTest.systemProperty 'app.httpBaseURI', httpBaseUrl
integrationTest.systemProperty 'app.httpsBaseURI', httpsBaseUrl
}
-}
\ No newline at end of file
+}
diff --git a/servlet/java-configuration/authentication/username-password/form/src/main/java/example/MvcWebApplicationInitializer.java b/servlet/java-configuration/authentication/username-password/form/src/main/java/example/MvcWebApplicationInitializer.java
index a45eec0..5679405 100644
--- a/servlet/java-configuration/authentication/username-password/form/src/main/java/example/MvcWebApplicationInitializer.java
+++ b/servlet/java-configuration/authentication/username-password/form/src/main/java/example/MvcWebApplicationInitializer.java
@@ -16,7 +16,7 @@
package example;
-import javax.servlet.Filter;
+import jakarta.servlet.Filter;
import org.springframework.web.filter.HiddenHttpMethodFilter;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
diff --git a/servlet/java-configuration/authentication/username-password/form/src/main/java/example/WebMvcConfiguration.java b/servlet/java-configuration/authentication/username-password/form/src/main/java/example/WebMvcConfiguration.java
index 9c01f78..3e18741 100644
--- a/servlet/java-configuration/authentication/username-password/form/src/main/java/example/WebMvcConfiguration.java
+++ b/servlet/java-configuration/authentication/username-password/form/src/main/java/example/WebMvcConfiguration.java
@@ -16,10 +16,10 @@
package example;
-import org.thymeleaf.spring5.ISpringTemplateEngine;
-import org.thymeleaf.spring5.SpringTemplateEngine;
-import org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver;
-import org.thymeleaf.spring5.view.ThymeleafViewResolver;
+import org.thymeleaf.spring6.ISpringTemplateEngine;
+import org.thymeleaf.spring6.SpringTemplateEngine;
+import org.thymeleaf.spring6.templateresolver.SpringResourceTemplateResolver;
+import org.thymeleaf.spring6.view.ThymeleafViewResolver;
import org.thymeleaf.templatemode.TemplateMode;
import org.thymeleaf.templateresolver.ITemplateResolver;
diff --git a/servlet/java-configuration/authentication/x509/build.gradle b/servlet/java-configuration/authentication/x509/build.gradle
index 1eda48b..2268004 100644
--- a/servlet/java-configuration/authentication/x509/build.gradle
+++ b/servlet/java-configuration/authentication/x509/build.gradle
@@ -1,6 +1,6 @@
plugins {
id "java"
- id "nebula.integtest" version "8.2.0"
+// id "nebula.integtest" version "8.2.0"
id "org.gretty" version "3.0.6"
id "war"
}
diff --git a/servlet/java-configuration/hello-mvc-security/build.gradle b/servlet/java-configuration/hello-mvc-security/build.gradle
index 57a935c..27928f9 100644
--- a/servlet/java-configuration/hello-mvc-security/build.gradle
+++ b/servlet/java-configuration/hello-mvc-security/build.gradle
@@ -1,7 +1,7 @@
plugins {
id "java"
id "nebula.integtest" version "8.2.0"
- id "org.gretty" version "3.0.6"
+ id "org.gretty" version "4.0.0"
id "war"
}
@@ -14,14 +14,14 @@ repositories {
}
dependencies {
- implementation platform("org.springframework:spring-framework-bom:5.3.0")
- implementation platform("org.springframework.security:spring-security-bom:5.5.0-SNAPSHOT")
+ implementation platform("org.springframework:spring-framework-bom:6.0.0-SNAPSHOT")
+ implementation platform("org.springframework.security:spring-security-bom:6.0.0-SNAPSHOT")
implementation platform("org.junit:junit-bom:5.7.0")
implementation "org.springframework.security:spring-security-config"
implementation "org.springframework.security:spring-security-web"
implementation "org.springframework:spring-webmvc"
- implementation "org.thymeleaf:thymeleaf-spring5:3.0.11.RELEASE"
+ implementation "org.thymeleaf:thymeleaf-spring6:3.1.0.M1"
testImplementation "org.assertj:assertj-core:3.18.0"
testImplementation "org.springframework:spring-test"
diff --git a/servlet/java-configuration/hello-mvc-security/gradle/gretty.gradle b/servlet/java-configuration/hello-mvc-security/gradle/gretty.gradle
index 6949bdf..3428615 100644
--- a/servlet/java-configuration/hello-mvc-security/gradle/gretty.gradle
+++ b/servlet/java-configuration/hello-mvc-security/gradle/gretty.gradle
@@ -1,5 +1,5 @@
gretty {
- servletContainer = "tomcat9"
+ servletContainer = "tomcat10"
contextPath = "/"
fileLogEnabled = false
integrationTestTask = 'integrationTest'
@@ -38,4 +38,4 @@ project.tasks.matching { it.name == "integrationTest" }.all {
integrationTest.systemProperty 'app.httpBaseURI', httpBaseUrl
integrationTest.systemProperty 'app.httpsBaseURI', httpsBaseUrl
}
-}
\ No newline at end of file
+}
diff --git a/servlet/java-configuration/hello-mvc-security/src/integTest/java/example/pages/LoginPage.java b/servlet/java-configuration/hello-mvc-security/src/integTest/java/example/pages/LoginPage.java
index 25bcec3..3ef69d0 100644
--- a/servlet/java-configuration/hello-mvc-security/src/integTest/java/example/pages/LoginPage.java
+++ b/servlet/java-configuration/hello-mvc-security/src/integTest/java/example/pages/LoginPage.java
@@ -51,8 +51,10 @@ public class LoginPage {
private WebDriver webDriver;
+ @FindBy(id = "username")
private WebElement username;
+ @FindBy(id = "password")
private WebElement password;
@FindBy(css = "button[type=submit]")
diff --git a/servlet/java-configuration/hello-mvc-security/src/main/java/example/MvcWebApplicationInitializer.java b/servlet/java-configuration/hello-mvc-security/src/main/java/example/MvcWebApplicationInitializer.java
index a45eec0..5679405 100644
--- a/servlet/java-configuration/hello-mvc-security/src/main/java/example/MvcWebApplicationInitializer.java
+++ b/servlet/java-configuration/hello-mvc-security/src/main/java/example/MvcWebApplicationInitializer.java
@@ -16,7 +16,7 @@
package example;
-import javax.servlet.Filter;
+import jakarta.servlet.Filter;
import org.springframework.web.filter.HiddenHttpMethodFilter;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
diff --git a/servlet/java-configuration/hello-mvc-security/src/main/java/example/WebMvcConfiguration.java b/servlet/java-configuration/hello-mvc-security/src/main/java/example/WebMvcConfiguration.java
index 9c01f78..3e18741 100644
--- a/servlet/java-configuration/hello-mvc-security/src/main/java/example/WebMvcConfiguration.java
+++ b/servlet/java-configuration/hello-mvc-security/src/main/java/example/WebMvcConfiguration.java
@@ -16,10 +16,10 @@
package example;
-import org.thymeleaf.spring5.ISpringTemplateEngine;
-import org.thymeleaf.spring5.SpringTemplateEngine;
-import org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver;
-import org.thymeleaf.spring5.view.ThymeleafViewResolver;
+import org.thymeleaf.spring6.ISpringTemplateEngine;
+import org.thymeleaf.spring6.SpringTemplateEngine;
+import org.thymeleaf.spring6.templateresolver.SpringResourceTemplateResolver;
+import org.thymeleaf.spring6.view.ThymeleafViewResolver;
import org.thymeleaf.templatemode.TemplateMode;
import org.thymeleaf.templateresolver.ITemplateResolver;
diff --git a/servlet/java-configuration/hello-security-explicit/src/integTest/java/example/pages/LoginPage.java b/servlet/java-configuration/hello-security-explicit/src/integTest/java/example/pages/LoginPage.java
index 25bcec3..3ef69d0 100644
--- a/servlet/java-configuration/hello-security-explicit/src/integTest/java/example/pages/LoginPage.java
+++ b/servlet/java-configuration/hello-security-explicit/src/integTest/java/example/pages/LoginPage.java
@@ -51,8 +51,10 @@ public class LoginPage {
private WebDriver webDriver;
+ @FindBy(id = "username")
private WebElement username;
+ @FindBy(id = "password")
private WebElement password;
@FindBy(css = "button[type=submit]")
diff --git a/servlet/java-configuration/saml2/login/build.gradle b/servlet/java-configuration/saml2/login/build.gradle
index 65cb823..8be8ca2 100644
--- a/servlet/java-configuration/saml2/login/build.gradle
+++ b/servlet/java-configuration/saml2/login/build.gradle
@@ -36,21 +36,19 @@ dependencies {
implementation "org.opensaml:opensaml-saml-api:4.1.1"
implementation "org.opensaml:opensaml-saml-impl:4.1.1"
}
- implementation platform("org.springframework:spring-framework-bom:5.3.11")
- implementation platform("org.springframework.security:spring-security-bom:5.6.0-SNAPSHOT")
+ implementation platform("org.springframework:spring-framework-bom:6.0.0-SNAPSHOT")
+ implementation platform("org.springframework.security:spring-security-bom:6.0.0-SNAPSHOT")
implementation platform("org.junit:junit-bom:5.7.0")
implementation "org.springframework.security:spring-security-config"
implementation "org.springframework.security:spring-security-web"
implementation "org.springframework:spring-webmvc"
implementation "org.springframework.security:spring-security-saml2-service-provider"
- implementation "javax.servlet.jsp.jstl:javax.servlet.jsp.jstl-api:1.2.2"
- implementation "org.apache.taglibs:taglibs-standard-jstlel:1.2.5"
- implementation "org.thymeleaf:thymeleaf-spring5:3.0.11.RELEASE"
- implementation "org.thymeleaf.extras:thymeleaf-extras-springsecurity5:3.0.4.RELEASE"
+ implementation "org.thymeleaf:thymeleaf-spring6:3.1.0.M1"
+ implementation "org.thymeleaf.extras:thymeleaf-extras-springsecurity6:3.1.0.M1"
- providedCompile "javax.servlet:javax.servlet-api:4.0.1"
- providedCompile "javax.servlet.jsp:javax.servlet.jsp-api:2.3.3"
+ providedCompile "jakarta.servlet:jakarta.servlet-api:5.0.0"
+ providedCompile "org.glassfish.web:jakarta.servlet.jsp.jstl:2.0.0"
testImplementation "org.assertj:assertj-core:3.18.0"
testImplementation "org.springframework:spring-test"
@@ -58,6 +56,7 @@ dependencies {
testImplementation("org.junit.jupiter:junit-jupiter-api")
testImplementation "org.seleniumhq.selenium:htmlunit-driver:2.44.0"
testImplementation 'org.hamcrest:hamcrest:2.2'
+ testImplementation 'org.awaitility:awaitility:4.2.0'
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine")
}
diff --git a/servlet/java-configuration/saml2/login/src/integTest/java/example/Saml2JavaConfigurationITests.java b/servlet/java-configuration/saml2/login/src/integTest/java/example/Saml2JavaConfigurationITests.java
index 3cd5ac1..8e31aaa 100644
--- a/servlet/java-configuration/saml2/login/src/integTest/java/example/Saml2JavaConfigurationITests.java
+++ b/servlet/java-configuration/saml2/login/src/integTest/java/example/Saml2JavaConfigurationITests.java
@@ -16,15 +16,16 @@
package example;
-import java.io.IOException;
+import java.util.concurrent.TimeUnit;
+import com.gargoylesoftware.htmlunit.ElementNotFoundException;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlElement;
import com.gargoylesoftware.htmlunit.html.HtmlForm;
import com.gargoylesoftware.htmlunit.html.HtmlInput;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlPasswordInput;
import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
-import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
@@ -40,6 +41,9 @@ import org.springframework.test.web.servlet.htmlunit.MockMvcWebClientBuilder;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.awaitility.Awaitility.await;
+
@ExtendWith(SpringExtension.class)
@ContextConfiguration(classes = ApplicationConfiguration.class)
@WebAppConfiguration
@@ -66,35 +70,47 @@ public class Saml2JavaConfigurationITests {
@Test
void authenticationAttemptWhenValidThenShowsUserEmailAddress() throws Exception {
- HtmlPage relyingParty = performLogin();
- Assertions.assertThat(relyingParty.asText()).contains("You're email address is testuser@spring.security.saml");
+ performLogin();
+ HtmlPage home = (HtmlPage) this.webClient.getCurrentWindow().getEnclosedPage();
+ assertThat(home.asText()).contains("You're email address is testuser@spring.security.saml");
}
@Test
void logoutWhenRelyingPartyInitiatedLogoutThenLoginPageWithLogoutParam() throws Exception {
- HtmlPage relyingParty = performLogin();
- HtmlElement rpLogoutButton = relyingParty.getHtmlElementById("rp_logout_button");
+ performLogin();
+ HtmlPage home = (HtmlPage) this.webClient.getCurrentWindow().getEnclosedPage();
+ HtmlElement rpLogoutButton = home.getHtmlElementById("rp_logout_button");
HtmlPage loginPage = rpLogoutButton.click();
- Assertions.assertThat(loginPage.getUrl().getFile()).isEqualTo("/login?logout");
+ assertThat(loginPage.getUrl().getFile()).isEqualTo("/login?logout");
}
- @Test
- void logoutWhenAssertingPartyInitiatedLogoutThenLoginPageWithLogoutParam() throws Exception {
- HtmlPage relyingParty = performLogin();
- HtmlElement apLogoutButton = relyingParty.getHtmlElementById("ap_logout_button");
- HtmlPage loginPage = apLogoutButton.click();
- Assertions.assertThat(loginPage.getUrl().getFile()).isEqualTo("/login?logout");
- }
-
- private HtmlPage performLogin() throws IOException {
+ private void performLogin() throws Exception {
HtmlPage login = this.webClient.getPage("/");
- HtmlForm form = login.getFormByName("f");
+ this.webClient.waitForBackgroundJavaScript(10000);
+ HtmlForm form = findForm(login);
HtmlInput username = form.getInputByName("username");
- HtmlInput password = form.getInputByName("password");
- HtmlSubmitInput submit = login.getHtmlElementById("submit_button");
- username.setValueAttribute("user");
- password.setValueAttribute("password");
- return submit.click();
+ HtmlPasswordInput password = form.getInputByName("password");
+ HtmlSubmitInput submit = login.getHtmlElementById("okta-signin-submit");
+ username.type("testuser@spring.security.saml");
+ password.type("12345678");
+ submit.click();
+ this.webClient.waitForBackgroundJavaScript(10000);
+ }
+
+ private HtmlForm findForm(HtmlPage login) {
+ await().atMost(10, TimeUnit.SECONDS)
+ .until(() -> login.getForms().stream().map(HtmlForm::getId).anyMatch("form19"::equals));
+ for (HtmlForm form : login.getForms()) {
+ try {
+ if (form.getId().equals("form19")) {
+ return form;
+ }
+ }
+ catch (ElementNotFoundException ex) {
+ // Continue
+ }
+ }
+ throw new IllegalStateException("Could not resolve login form");
}
}
diff --git a/servlet/java-configuration/saml2/login/src/main/java/example/MvcWebApplicationInitializer.java b/servlet/java-configuration/saml2/login/src/main/java/example/MvcWebApplicationInitializer.java
index a45eec0..5679405 100644
--- a/servlet/java-configuration/saml2/login/src/main/java/example/MvcWebApplicationInitializer.java
+++ b/servlet/java-configuration/saml2/login/src/main/java/example/MvcWebApplicationInitializer.java
@@ -16,7 +16,7 @@
package example;
-import javax.servlet.Filter;
+import jakarta.servlet.Filter;
import org.springframework.web.filter.HiddenHttpMethodFilter;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
diff --git a/servlet/java-configuration/saml2/login/src/main/java/example/WebMvcConfiguration.java b/servlet/java-configuration/saml2/login/src/main/java/example/WebMvcConfiguration.java
index 9bf0279..4e2bac4 100644
--- a/servlet/java-configuration/saml2/login/src/main/java/example/WebMvcConfiguration.java
+++ b/servlet/java-configuration/saml2/login/src/main/java/example/WebMvcConfiguration.java
@@ -16,11 +16,11 @@
package example;
-import org.thymeleaf.extras.springsecurity5.dialect.SpringSecurityDialect;
-import org.thymeleaf.spring5.ISpringTemplateEngine;
-import org.thymeleaf.spring5.SpringTemplateEngine;
-import org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver;
-import org.thymeleaf.spring5.view.ThymeleafViewResolver;
+import org.thymeleaf.extras.springsecurity6.dialect.SpringSecurityDialect;
+import org.thymeleaf.spring6.ISpringTemplateEngine;
+import org.thymeleaf.spring6.SpringTemplateEngine;
+import org.thymeleaf.spring6.templateresolver.SpringResourceTemplateResolver;
+import org.thymeleaf.spring6.view.ThymeleafViewResolver;
import org.thymeleaf.templatemode.TemplateMode;
import org.thymeleaf.templateresolver.ITemplateResolver;
diff --git a/servlet/spring-boot/java/authentication/username-password/mfa/build.gradle b/servlet/spring-boot/java/authentication/username-password/mfa/build.gradle
index ac0000e..f626778 100644
--- a/servlet/spring-boot/java/authentication/username-password/mfa/build.gradle
+++ b/servlet/spring-boot/java/authentication/username-password/mfa/build.gradle
@@ -1,6 +1,6 @@
plugins {
- id 'io.spring.dependency-management' version '1.0.10.RELEASE'
- id 'org.springframework.boot' version '2.5.2'
+ id 'io.spring.dependency-management' version '1.0.11.RELEASE'
+ id 'org.springframework.boot' version '3.0.0-M1'
id "nebula.integtest" version "8.2.0"
id 'java'
}
diff --git a/servlet/spring-boot/java/authentication/username-password/mfa/gradle.properties b/servlet/spring-boot/java/authentication/username-password/mfa/gradle.properties
index c924e36..ce1417e 100644
--- a/servlet/spring-boot/java/authentication/username-password/mfa/gradle.properties
+++ b/servlet/spring-boot/java/authentication/username-password/mfa/gradle.properties
@@ -1,2 +1,2 @@
-version=5.6.0-SNAPSHOT
-spring-security.version=5.6.0-SNAPSHOT
+version=6.0.0-SNAPSHOT
+spring-security.version=6.0.0-SNAPSHOT
diff --git a/servlet/spring-boot/java/authentication/username-password/mfa/src/main/java/example/MfaAuthenticationHandler.java b/servlet/spring-boot/java/authentication/username-password/mfa/src/main/java/example/MfaAuthenticationHandler.java
index 5e4f57d..8187a89 100644
--- a/servlet/spring-boot/java/authentication/username-password/mfa/src/main/java/example/MfaAuthenticationHandler.java
+++ b/servlet/spring-boot/java/authentication/username-password/mfa/src/main/java/example/MfaAuthenticationHandler.java
@@ -18,9 +18,9 @@ package example;
import java.io.IOException;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import org.springframework.security.authentication.AnonymousAuthenticationToken;
import org.springframework.security.core.Authentication;
diff --git a/servlet/spring-boot/java/authentication/username-password/mfa/src/main/java/example/MfaController.java b/servlet/spring-boot/java/authentication/username-password/mfa/src/main/java/example/MfaController.java
index d956bd3..42846e6 100644
--- a/servlet/spring-boot/java/authentication/username-password/mfa/src/main/java/example/MfaController.java
+++ b/servlet/spring-boot/java/authentication/username-password/mfa/src/main/java/example/MfaController.java
@@ -18,8 +18,8 @@ package example;
import java.security.SecureRandom;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import org.springframework.security.authentication.BadCredentialsException;
import org.springframework.security.core.context.SecurityContextHolder;
diff --git a/servlet/spring-boot/java/authentication/username-password/mfa/src/test/java/example/MfaApplicationTests.java b/servlet/spring-boot/java/authentication/username-password/mfa/src/test/java/example/MfaApplicationTests.java
index 55d4b3b..b8e6d7e 100644
--- a/servlet/spring-boot/java/authentication/username-password/mfa/src/test/java/example/MfaApplicationTests.java
+++ b/servlet/spring-boot/java/authentication/username-password/mfa/src/test/java/example/MfaApplicationTests.java
@@ -15,9 +15,8 @@
*/
package example;
-import javax.servlet.http.HttpSession;
-
import com.j256.twofactorauth.TimeBasedOneTimePasswordUtil;
+import jakarta.servlet.http.HttpSession;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
diff --git a/servlet/spring-boot/java/authentication/username-password/user-details-service/custom-user/build.gradle b/servlet/spring-boot/java/authentication/username-password/user-details-service/custom-user/build.gradle
index b340e08..5340f91 100644
--- a/servlet/spring-boot/java/authentication/username-password/user-details-service/custom-user/build.gradle
+++ b/servlet/spring-boot/java/authentication/username-password/user-details-service/custom-user/build.gradle
@@ -1,6 +1,6 @@
plugins {
- id 'io.spring.dependency-management' version '1.0.10.RELEASE'
- id 'org.springframework.boot' version '2.5.2'
+ id 'io.spring.dependency-management' version '1.0.11.RELEASE'
+ id 'org.springframework.boot' version '3.0.0-M1'
id "nebula.integtest" version "8.2.0"
id 'java'
}
diff --git a/servlet/spring-boot/java/authentication/username-password/user-details-service/custom-user/gradle.properties b/servlet/spring-boot/java/authentication/username-password/user-details-service/custom-user/gradle.properties
index c924e36..ce1417e 100644
--- a/servlet/spring-boot/java/authentication/username-password/user-details-service/custom-user/gradle.properties
+++ b/servlet/spring-boot/java/authentication/username-password/user-details-service/custom-user/gradle.properties
@@ -1,2 +1,2 @@
-version=5.6.0-SNAPSHOT
-spring-security.version=5.6.0-SNAPSHOT
+version=6.0.0-SNAPSHOT
+spring-security.version=6.0.0-SNAPSHOT
diff --git a/servlet/spring-boot/java/hello-security-explicit/build.gradle b/servlet/spring-boot/java/hello-security-explicit/build.gradle
index a35be68..880c19a 100644
--- a/servlet/spring-boot/java/hello-security-explicit/build.gradle
+++ b/servlet/spring-boot/java/hello-security-explicit/build.gradle
@@ -1,6 +1,6 @@
plugins {
- id 'io.spring.dependency-management' version '1.0.10.RELEASE'
- id 'org.springframework.boot' version '2.5.2'
+ id 'org.springframework.boot' version '3.0.0-M1'
+ id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id "nebula.integtest" version "8.2.0"
id 'java'
}
diff --git a/servlet/spring-boot/java/hello-security-explicit/gradle.properties b/servlet/spring-boot/java/hello-security-explicit/gradle.properties
index c924e36..ce1417e 100644
--- a/servlet/spring-boot/java/hello-security-explicit/gradle.properties
+++ b/servlet/spring-boot/java/hello-security-explicit/gradle.properties
@@ -1,2 +1,2 @@
-version=5.6.0-SNAPSHOT
-spring-security.version=5.6.0-SNAPSHOT
+version=6.0.0-SNAPSHOT
+spring-security.version=6.0.0-SNAPSHOT
diff --git a/servlet/spring-boot/java/hello-security-explicit/src/integTest/java/example/pages/LoginPage.java b/servlet/spring-boot/java/hello-security-explicit/src/integTest/java/example/pages/LoginPage.java
index 60e0b3d..319e70c 100644
--- a/servlet/spring-boot/java/hello-security-explicit/src/integTest/java/example/pages/LoginPage.java
+++ b/servlet/spring-boot/java/hello-security-explicit/src/integTest/java/example/pages/LoginPage.java
@@ -51,8 +51,10 @@ public class LoginPage {
private WebDriver webDriver;
+ @FindBy(id = "username")
private WebElement username;
+ @FindBy(id = "password")
private WebElement password;
@FindBy(css = "button[type=submit]")
diff --git a/servlet/spring-boot/java/hello-security/build.gradle b/servlet/spring-boot/java/hello-security/build.gradle
index 0040ffb..1d4cea9 100644
--- a/servlet/spring-boot/java/hello-security/build.gradle
+++ b/servlet/spring-boot/java/hello-security/build.gradle
@@ -1,6 +1,6 @@
plugins {
- id 'io.spring.dependency-management' version '1.0.10.RELEASE'
- id 'org.springframework.boot' version '2.5.2'
+ id 'org.springframework.boot' version '3.0.0-M1'
+ id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id "nebula.integtest" version "8.2.0"
id 'java'
}
diff --git a/servlet/spring-boot/java/hello-security/gradle.properties b/servlet/spring-boot/java/hello-security/gradle.properties
index c924e36..ce1417e 100644
--- a/servlet/spring-boot/java/hello-security/gradle.properties
+++ b/servlet/spring-boot/java/hello-security/gradle.properties
@@ -1,2 +1,2 @@
-version=5.6.0-SNAPSHOT
-spring-security.version=5.6.0-SNAPSHOT
+version=6.0.0-SNAPSHOT
+spring-security.version=6.0.0-SNAPSHOT
diff --git a/servlet/spring-boot/java/hello-security/settings.gradle b/servlet/spring-boot/java/hello-security/settings.gradle
index 8b13789..e69de29 100644
--- a/servlet/spring-boot/java/hello-security/settings.gradle
+++ b/servlet/spring-boot/java/hello-security/settings.gradle
@@ -1 +0,0 @@
-
diff --git a/servlet/spring-boot/java/hello/build.gradle b/servlet/spring-boot/java/hello/build.gradle
index a1baa10..5e4f518 100644
--- a/servlet/spring-boot/java/hello/build.gradle
+++ b/servlet/spring-boot/java/hello/build.gradle
@@ -1,6 +1,6 @@
plugins {
- id 'org.springframework.boot' version '2.5.2'
- id 'io.spring.dependency-management' version '1.0.10.RELEASE'
+ id 'org.springframework.boot' version '3.0.0-M1'
+ id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id "nebula.integtest" version "8.2.0"
id 'java'
}
diff --git a/servlet/spring-boot/java/hello/gradle.properties b/servlet/spring-boot/java/hello/gradle.properties
index c924e36..ce1417e 100644
--- a/servlet/spring-boot/java/hello/gradle.properties
+++ b/servlet/spring-boot/java/hello/gradle.properties
@@ -1,2 +1,2 @@
-version=5.6.0-SNAPSHOT
-spring-security.version=5.6.0-SNAPSHOT
+version=6.0.0-SNAPSHOT
+spring-security.version=6.0.0-SNAPSHOT
diff --git a/servlet/spring-boot/java/jwt/login/build.gradle b/servlet/spring-boot/java/jwt/login/build.gradle
index 3f92f0e..ff109f9 100644
--- a/servlet/spring-boot/java/jwt/login/build.gradle
+++ b/servlet/spring-boot/java/jwt/login/build.gradle
@@ -1,6 +1,6 @@
plugins {
- id 'org.springframework.boot' version '2.5.2'
- id 'io.spring.dependency-management' version '1.0.10.RELEASE'
+ id 'org.springframework.boot' version '3.0.0-M1'
+ id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
}
diff --git a/servlet/spring-boot/java/jwt/login/gradle.properties b/servlet/spring-boot/java/jwt/login/gradle.properties
index c924e36..ce1417e 100644
--- a/servlet/spring-boot/java/jwt/login/gradle.properties
+++ b/servlet/spring-boot/java/jwt/login/gradle.properties
@@ -1,2 +1,2 @@
-version=5.6.0-SNAPSHOT
-spring-security.version=5.6.0-SNAPSHOT
+version=6.0.0-SNAPSHOT
+spring-security.version=6.0.0-SNAPSHOT
diff --git a/servlet/spring-boot/java/ldap/build.gradle b/servlet/spring-boot/java/ldap/build.gradle
index 90aeaae..9ffc99c 100644
--- a/servlet/spring-boot/java/ldap/build.gradle
+++ b/servlet/spring-boot/java/ldap/build.gradle
@@ -1,6 +1,6 @@
plugins {
- id 'org.springframework.boot' version '2.5.2'
- id 'io.spring.dependency-management' version '1.0.10.RELEASE'
+ id 'org.springframework.boot' version '3.0.0-M1'
+ id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
}
diff --git a/servlet/spring-boot/java/ldap/gradle.properties b/servlet/spring-boot/java/ldap/gradle.properties
index c924e36..ce1417e 100644
--- a/servlet/spring-boot/java/ldap/gradle.properties
+++ b/servlet/spring-boot/java/ldap/gradle.properties
@@ -1,2 +1,2 @@
-version=5.6.0-SNAPSHOT
-spring-security.version=5.6.0-SNAPSHOT
+version=6.0.0-SNAPSHOT
+spring-security.version=6.0.0-SNAPSHOT
diff --git a/servlet/spring-boot/java/oauth2/authorization-server/build.gradle b/servlet/spring-boot/java/oauth2/authorization-server/build.gradle
index f7a47d8..e05bf17 100644
--- a/servlet/spring-boot/java/oauth2/authorization-server/build.gradle
+++ b/servlet/spring-boot/java/oauth2/authorization-server/build.gradle
@@ -1,6 +1,6 @@
plugins {
- id 'org.springframework.boot' version '2.5.2'
- id 'io.spring.dependency-management' version '1.0.10.RELEASE'
+ id 'org.springframework.boot' version '2.6.4'
+ id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id "nebula.integtest" version "8.2.0"
id 'java'
}
diff --git a/servlet/spring-boot/java/oauth2/authorization-server/gradle.properties b/servlet/spring-boot/java/oauth2/authorization-server/gradle.properties
index c924e36..e19a862 100644
--- a/servlet/spring-boot/java/oauth2/authorization-server/gradle.properties
+++ b/servlet/spring-boot/java/oauth2/authorization-server/gradle.properties
@@ -1,2 +1,2 @@
-version=5.6.0-SNAPSHOT
-spring-security.version=5.6.0-SNAPSHOT
+version=5.7.0-SNAPSHOT
+spring-security.version=5.7.0-SNAPSHOT
diff --git a/servlet/spring-boot/java/oauth2/login/build.gradle b/servlet/spring-boot/java/oauth2/login/build.gradle
index 7afaf82..10ffa1e 100644
--- a/servlet/spring-boot/java/oauth2/login/build.gradle
+++ b/servlet/spring-boot/java/oauth2/login/build.gradle
@@ -1,6 +1,6 @@
plugins {
- id 'org.springframework.boot' version '2.5.2'
- id 'io.spring.dependency-management' version '1.0.10.RELEASE'
+ id 'org.springframework.boot' version '3.0.0-M1'
+ id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id "nebula.integtest" version "8.2.0"
id 'java'
}
@@ -15,7 +15,7 @@ dependencies {
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
- implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5'
+ implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity6'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.security:spring-security-test'
diff --git a/servlet/spring-boot/java/oauth2/login/gradle.properties b/servlet/spring-boot/java/oauth2/login/gradle.properties
index c924e36..ce1417e 100644
--- a/servlet/spring-boot/java/oauth2/login/gradle.properties
+++ b/servlet/spring-boot/java/oauth2/login/gradle.properties
@@ -1,2 +1,2 @@
-version=5.6.0-SNAPSHOT
-spring-security.version=5.6.0-SNAPSHOT
+version=6.0.0-SNAPSHOT
+spring-security.version=6.0.0-SNAPSHOT
diff --git a/servlet/spring-boot/java/oauth2/login/src/integTest/java/example/OAuth2LoginApplicationTests.java b/servlet/spring-boot/java/oauth2/login/src/integTest/java/example/OAuth2LoginApplicationTests.java
index 5f44272..3eda5f2 100644
--- a/servlet/spring-boot/java/oauth2/login/src/integTest/java/example/OAuth2LoginApplicationTests.java
+++ b/servlet/spring-boot/java/oauth2/login/src/integTest/java/example/OAuth2LoginApplicationTests.java
@@ -225,7 +225,7 @@ public class OAuth2LoginApplicationTests {
HtmlElement errorElement = page.getBody().getFirstByXPath("div");
assertThat(errorElement).isNotNull();
- assertThat(errorElement.asText()).contains("authorization_request_not_found");
+ assertThat(errorElement.asNormalizedText()).contains("authorization_request_not_found");
}
@Test
@@ -253,7 +253,7 @@ public class OAuth2LoginApplicationTests {
HtmlElement errorElement = page.getBody().getFirstByXPath("div");
assertThat(errorElement).isNotNull();
- assertThat(errorElement.asText()).contains("authorization_request_not_found");
+ assertThat(errorElement.asNormalizedText()).contains("authorization_request_not_found");
}
@Test
@@ -291,7 +291,7 @@ public class OAuth2LoginApplicationTests {
assertThat(clientAnchorElements.get(i).getAttribute("href")).isIn(googleClientAuthorizeUri,
githubClientAuthorizeUri, facebookClientAuthorizeUri, oktaClientAuthorizeUri,
springClientAuthorizeUri);
- assertThat(clientAnchorElements.get(i).asText()).isIn(googleClientRegistration.getClientName(),
+ assertThat(clientAnchorElements.get(i).asNormalizedText()).isIn(googleClientRegistration.getClientName(),
githubClientRegistration.getClientName(), facebookClientRegistration.getClientName(),
oktaClientRegistration.getClientName(), springClientRegistration.getClientName());
}
@@ -301,13 +301,14 @@ public class OAuth2LoginApplicationTests {
assertThat(page.getTitleText()).isEqualTo("Spring Security - OAuth 2.0 Login");
DomNodeList divElements = page.getBody().getElementsByTagName("div");
- assertThat(divElements.get(1).asText()).contains("User: joeg@springsecurity.io");
- assertThat(divElements.get(4).asText()).contains("You are successfully logged in joeg@springsecurity.io");
+ assertThat(divElements.get(1).asNormalizedText()).contains("User: joeg@springsecurity.io");
+ assertThat(divElements.get(4).asNormalizedText())
+ .contains("You are successfully logged in joeg@springsecurity.io");
}
private HtmlAnchor getClientAnchorElement(HtmlPage page, ClientRegistration clientRegistration) {
Optional clientAnchorElement = page.getAnchors().stream()
- .filter((e) -> e.asText().equals(clientRegistration.getClientName())).findFirst();
+ .filter((e) -> e.asNormalizedText().equals(clientRegistration.getClientName())).findFirst();
return (clientAnchorElement.orElse(null));
}
diff --git a/servlet/spring-boot/java/oauth2/login/src/main/java/example/filter/LoopbackIpRedirectFilter.java b/servlet/spring-boot/java/oauth2/login/src/main/java/example/filter/LoopbackIpRedirectFilter.java
index d9f00e5..4b22949 100644
--- a/servlet/spring-boot/java/oauth2/login/src/main/java/example/filter/LoopbackIpRedirectFilter.java
+++ b/servlet/spring-boot/java/oauth2/login/src/main/java/example/filter/LoopbackIpRedirectFilter.java
@@ -18,10 +18,10 @@ package example.filter;
import java.io.IOException;
-import javax.servlet.FilterChain;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
diff --git a/servlet/spring-boot/java/oauth2/resource-server/hello-security/build.gradle b/servlet/spring-boot/java/oauth2/resource-server/hello-security/build.gradle
index d64e474..cb4dae4 100644
--- a/servlet/spring-boot/java/oauth2/resource-server/hello-security/build.gradle
+++ b/servlet/spring-boot/java/oauth2/resource-server/hello-security/build.gradle
@@ -1,6 +1,6 @@
plugins {
- id 'org.springframework.boot' version '2.5.2'
- id 'io.spring.dependency-management' version '1.0.10.RELEASE'
+ id 'org.springframework.boot' version '3.0.0-M1'
+ id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id "nebula.integtest" version "8.2.0"
id 'java'
}
diff --git a/servlet/spring-boot/java/oauth2/resource-server/hello-security/gradle.properties b/servlet/spring-boot/java/oauth2/resource-server/hello-security/gradle.properties
index c924e36..ce1417e 100644
--- a/servlet/spring-boot/java/oauth2/resource-server/hello-security/gradle.properties
+++ b/servlet/spring-boot/java/oauth2/resource-server/hello-security/gradle.properties
@@ -1,2 +1,2 @@
-version=5.6.0-SNAPSHOT
-spring-security.version=5.6.0-SNAPSHOT
+version=6.0.0-SNAPSHOT
+spring-security.version=6.0.0-SNAPSHOT
diff --git a/servlet/spring-boot/java/oauth2/resource-server/jwe/build.gradle b/servlet/spring-boot/java/oauth2/resource-server/jwe/build.gradle
index 40f80e1..4276e9f 100644
--- a/servlet/spring-boot/java/oauth2/resource-server/jwe/build.gradle
+++ b/servlet/spring-boot/java/oauth2/resource-server/jwe/build.gradle
@@ -15,8 +15,8 @@
*/
plugins {
- id 'org.springframework.boot' version '2.5.2'
- id 'io.spring.dependency-management' version '1.0.10.RELEASE'
+ id 'org.springframework.boot' version '3.0.0-M1'
+ id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id "nebula.integtest" version "8.2.0"
id 'java'
}
diff --git a/servlet/spring-boot/java/oauth2/resource-server/jwe/gradle.properties b/servlet/spring-boot/java/oauth2/resource-server/jwe/gradle.properties
index c924e36..ce1417e 100644
--- a/servlet/spring-boot/java/oauth2/resource-server/jwe/gradle.properties
+++ b/servlet/spring-boot/java/oauth2/resource-server/jwe/gradle.properties
@@ -1,2 +1,2 @@
-version=5.6.0-SNAPSHOT
-spring-security.version=5.6.0-SNAPSHOT
+version=6.0.0-SNAPSHOT
+spring-security.version=6.0.0-SNAPSHOT
diff --git a/servlet/spring-boot/java/oauth2/resource-server/multi-tenancy/build.gradle b/servlet/spring-boot/java/oauth2/resource-server/multi-tenancy/build.gradle
index f34a102..a65f5fc 100644
--- a/servlet/spring-boot/java/oauth2/resource-server/multi-tenancy/build.gradle
+++ b/servlet/spring-boot/java/oauth2/resource-server/multi-tenancy/build.gradle
@@ -15,8 +15,8 @@
*/
plugins {
- id 'org.springframework.boot' version '2.5.2'
- id 'io.spring.dependency-management' version '1.0.10.RELEASE'
+ id 'org.springframework.boot' version '2.6.4'
+ id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id "nebula.integtest" version "8.2.0"
id 'java'
}
@@ -31,7 +31,7 @@ dependencies {
implementation 'com.squareup.okhttp3:mockwebserver'
implementation 'org.springframework.boot:spring-boot-starter-oauth2-resource-server'
implementation 'org.springframework.boot:spring-boot-starter-web'
- implementation 'com.nimbusds:oauth2-oidc-sdk'
+ implementation 'com.nimbusds:oauth2-oidc-sdk:9.29'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.security:spring-security-test'
diff --git a/servlet/spring-boot/java/oauth2/resource-server/multi-tenancy/gradle.properties b/servlet/spring-boot/java/oauth2/resource-server/multi-tenancy/gradle.properties
index c924e36..e19a862 100644
--- a/servlet/spring-boot/java/oauth2/resource-server/multi-tenancy/gradle.properties
+++ b/servlet/spring-boot/java/oauth2/resource-server/multi-tenancy/gradle.properties
@@ -1,2 +1,2 @@
-version=5.6.0-SNAPSHOT
-spring-security.version=5.6.0-SNAPSHOT
+version=5.7.0-SNAPSHOT
+spring-security.version=5.7.0-SNAPSHOT
diff --git a/servlet/spring-boot/java/oauth2/resource-server/multi-tenancy/src/main/resources/application.yml b/servlet/spring-boot/java/oauth2/resource-server/multi-tenancy/src/main/resources/application.yml
index fe03b67..3c4745b 100644
--- a/servlet/spring-boot/java/oauth2/resource-server/multi-tenancy/src/main/resources/application.yml
+++ b/servlet/spring-boot/java/oauth2/resource-server/multi-tenancy/src/main/resources/application.yml
@@ -7,4 +7,7 @@ spring:
opaquetoken:
introspection-uri: ${mockwebserver.url}/introspect
client-id: client
- client-secret: secret
\ No newline at end of file
+ client-secret: secret
+ mvc:
+ pathmatch:
+ matching-strategy: ant_path_matcher
diff --git a/servlet/spring-boot/java/oauth2/resource-server/opaque/build.gradle b/servlet/spring-boot/java/oauth2/resource-server/opaque/build.gradle
index f34a102..c58f5df 100644
--- a/servlet/spring-boot/java/oauth2/resource-server/opaque/build.gradle
+++ b/servlet/spring-boot/java/oauth2/resource-server/opaque/build.gradle
@@ -15,8 +15,8 @@
*/
plugins {
- id 'org.springframework.boot' version '2.5.2'
- id 'io.spring.dependency-management' version '1.0.10.RELEASE'
+ id 'org.springframework.boot' version '3.0.0-M1'
+ id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id "nebula.integtest" version "8.2.0"
id 'java'
}
@@ -31,7 +31,7 @@ dependencies {
implementation 'com.squareup.okhttp3:mockwebserver'
implementation 'org.springframework.boot:spring-boot-starter-oauth2-resource-server'
implementation 'org.springframework.boot:spring-boot-starter-web'
- implementation 'com.nimbusds:oauth2-oidc-sdk'
+ implementation 'com.nimbusds:oauth2-oidc-sdk:9.29'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.security:spring-security-test'
diff --git a/servlet/spring-boot/java/oauth2/resource-server/opaque/gradle.properties b/servlet/spring-boot/java/oauth2/resource-server/opaque/gradle.properties
index c924e36..ce1417e 100644
--- a/servlet/spring-boot/java/oauth2/resource-server/opaque/gradle.properties
+++ b/servlet/spring-boot/java/oauth2/resource-server/opaque/gradle.properties
@@ -1,2 +1,2 @@
-version=5.6.0-SNAPSHOT
-spring-security.version=5.6.0-SNAPSHOT
+version=6.0.0-SNAPSHOT
+spring-security.version=6.0.0-SNAPSHOT
diff --git a/servlet/spring-boot/java/oauth2/resource-server/static/build.gradle b/servlet/spring-boot/java/oauth2/resource-server/static/build.gradle
index 40f80e1..4276e9f 100644
--- a/servlet/spring-boot/java/oauth2/resource-server/static/build.gradle
+++ b/servlet/spring-boot/java/oauth2/resource-server/static/build.gradle
@@ -15,8 +15,8 @@
*/
plugins {
- id 'org.springframework.boot' version '2.5.2'
- id 'io.spring.dependency-management' version '1.0.10.RELEASE'
+ id 'org.springframework.boot' version '3.0.0-M1'
+ id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id "nebula.integtest" version "8.2.0"
id 'java'
}
diff --git a/servlet/spring-boot/java/oauth2/resource-server/static/gradle.properties b/servlet/spring-boot/java/oauth2/resource-server/static/gradle.properties
index c924e36..ce1417e 100644
--- a/servlet/spring-boot/java/oauth2/resource-server/static/gradle.properties
+++ b/servlet/spring-boot/java/oauth2/resource-server/static/gradle.properties
@@ -1,2 +1,2 @@
-version=5.6.0-SNAPSHOT
-spring-security.version=5.6.0-SNAPSHOT
+version=6.0.0-SNAPSHOT
+spring-security.version=6.0.0-SNAPSHOT
diff --git a/servlet/spring-boot/java/oauth2/webclient/build.gradle b/servlet/spring-boot/java/oauth2/webclient/build.gradle
index 6e282ac..259b84e 100644
--- a/servlet/spring-boot/java/oauth2/webclient/build.gradle
+++ b/servlet/spring-boot/java/oauth2/webclient/build.gradle
@@ -15,8 +15,8 @@
*/
plugins {
- id 'org.springframework.boot' version '2.5.2'
- id 'io.spring.dependency-management' version '1.0.10.RELEASE'
+ id 'org.springframework.boot' version '3.0.0-M1'
+ id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id "nebula.integtest" version "8.2.0"
id 'java'
}
@@ -32,7 +32,7 @@ dependencies {
implementation 'org.springframework:spring-webflux'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
- implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5'
+ implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity6'
implementation 'io.projectreactor.netty:reactor-netty'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
diff --git a/servlet/spring-boot/java/oauth2/webclient/gradle.properties b/servlet/spring-boot/java/oauth2/webclient/gradle.properties
index c924e36..ce1417e 100644
--- a/servlet/spring-boot/java/oauth2/webclient/gradle.properties
+++ b/servlet/spring-boot/java/oauth2/webclient/gradle.properties
@@ -1,2 +1,2 @@
-version=5.6.0-SNAPSHOT
-spring-security.version=5.6.0-SNAPSHOT
+version=6.0.0-SNAPSHOT
+spring-security.version=6.0.0-SNAPSHOT
diff --git a/servlet/spring-boot/java/saml2/login-single-tenant/build.gradle b/servlet/spring-boot/java/saml2/login-single-tenant/build.gradle
index 4120308..e5879af 100644
--- a/servlet/spring-boot/java/saml2/login-single-tenant/build.gradle
+++ b/servlet/spring-boot/java/saml2/login-single-tenant/build.gradle
@@ -1,6 +1,6 @@
plugins {
- id 'org.springframework.boot' version '2.5.2'
- id 'io.spring.dependency-management' version '1.0.10.RELEASE'
+ id 'org.springframework.boot' version '3.0.0-M1'
+ id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id "nebula.integtest" version "8.2.0"
id 'java'
}
@@ -22,7 +22,7 @@ dependencies {
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.security:spring-security-saml2-service-provider'
- implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5'
+ implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity6'
testImplementation 'net.sourceforge.htmlunit:htmlunit'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
diff --git a/servlet/spring-boot/java/saml2/login-single-tenant/gradle.properties b/servlet/spring-boot/java/saml2/login-single-tenant/gradle.properties
index c924e36..ce1417e 100644
--- a/servlet/spring-boot/java/saml2/login-single-tenant/gradle.properties
+++ b/servlet/spring-boot/java/saml2/login-single-tenant/gradle.properties
@@ -1,2 +1,2 @@
-version=5.6.0-SNAPSHOT
-spring-security.version=5.6.0-SNAPSHOT
+version=6.0.0-SNAPSHOT
+spring-security.version=6.0.0-SNAPSHOT
diff --git a/servlet/spring-boot/java/saml2/login/build.gradle b/servlet/spring-boot/java/saml2/login/build.gradle
index 4120308..ca79630 100644
--- a/servlet/spring-boot/java/saml2/login/build.gradle
+++ b/servlet/spring-boot/java/saml2/login/build.gradle
@@ -1,6 +1,6 @@
plugins {
- id 'org.springframework.boot' version '2.5.2'
- id 'io.spring.dependency-management' version '1.0.10.RELEASE'
+ id 'org.springframework.boot' version '3.0.0-M1'
+ id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id "nebula.integtest" version "8.2.0"
id 'java'
}
@@ -22,11 +22,12 @@ dependencies {
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.security:spring-security-saml2-service-provider'
- implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5'
+ implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity6'
testImplementation 'net.sourceforge.htmlunit:htmlunit'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.security:spring-security-test'
+ testImplementation 'org.awaitility:awaitility:4.2.0'
}
tasks.withType(Test).configureEach {
diff --git a/servlet/spring-boot/java/saml2/login/gradle.properties b/servlet/spring-boot/java/saml2/login/gradle.properties
index c924e36..ce1417e 100644
--- a/servlet/spring-boot/java/saml2/login/gradle.properties
+++ b/servlet/spring-boot/java/saml2/login/gradle.properties
@@ -1,2 +1,2 @@
-version=5.6.0-SNAPSHOT
-spring-security.version=5.6.0-SNAPSHOT
+version=6.0.0-SNAPSHOT
+spring-security.version=6.0.0-SNAPSHOT
diff --git a/servlet/spring-boot/java/saml2/login/src/integTest/java/example/Saml2LoginApplicationITests.java b/servlet/spring-boot/java/saml2/login/src/integTest/java/example/Saml2LoginApplicationITests.java
index 2ddcfaf..5c40b9d 100644
--- a/servlet/spring-boot/java/saml2/login/src/integTest/java/example/Saml2LoginApplicationITests.java
+++ b/servlet/spring-boot/java/saml2/login/src/integTest/java/example/Saml2LoginApplicationITests.java
@@ -16,50 +16,33 @@
package example;
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.servlet.http.HttpSession;
+import java.util.concurrent.TimeUnit;
+import com.gargoylesoftware.htmlunit.ElementNotFoundException;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlElement;
import com.gargoylesoftware.htmlunit.html.HtmlForm;
import com.gargoylesoftware.htmlunit.html.HtmlInput;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlPasswordInput;
import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.mock.web.MockHttpSession;
import org.springframework.test.web.servlet.MockMvc;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.model;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.redirectedUrl;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+import static org.awaitility.Awaitility.await;
@SpringBootTest
@AutoConfigureMockMvc
public class Saml2LoginApplicationITests {
- static final String SIGNED_RESPONSE = "PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIHhtbG5zOnNhbWw9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIElEPSJfY2UyYjU4NTVjZjU5YmEyNDc4OTUyOGRkOGQzZDcyOGRiMGViZjNlNzNiIiBWZXJzaW9uPSIyLjAiIElzc3VlSW5zdGFudD0iMjAyMS0wMS0yMFQwMTowMzoyNFoiIERlc3RpbmF0aW9uPSJodHRwOi8vbG9jYWxob3N0OjgwODAvbG9naW4vc2FtbDIvc3NvL29uZSIgSW5SZXNwb25zZVRvPSJBUlFjOThmMjAwLWRjZjctNGRmNC1hNTIyLTA3MjA2MjA4YjA3ZCI+PHNhbWw6SXNzdWVyPmh0dHBzOi8vc2ltcGxlc2FtbC1mb3Itc3ByaW5nLXNhbWwuYXBwcy5wY2ZvbmUuaW8vc2FtbDIvaWRwL21ldGFkYXRhLnBocDwvc2FtbDpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNyc2Etc2hhMjU2Ii8+CiAgPGRzOlJlZmVyZW5jZSBVUkk9IiNfY2UyYjU4NTVjZjU5YmEyNDc4OTUyOGRkOGQzZDcyOGRiMGViZjNlNzNiIj48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz48ZHM6RGlnZXN0VmFsdWU+TXJUNS8wdTRScTl3QmMvejFQd2FrNURXZm1xOGlOVk52NldHZWFnZUVzUT08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWU+WWg1UFE5cFVBbkkvOW5tNzgxZ040bThTS0U4T1VRTDVOMlI3ZklPZmtHVmMzRjhzNlJlR3hRNWFneUFXYnQzUDRwQ3RWeGtqbk4rMk5KeUw4QmhRMHN0dEovb2JFTHJGUldLemYyYUJaS2NCN0JHTFNtRXdoUFE3N3BHL0psMjBhaDQyaGRyWFc3TE9Ob0VZOHMyY093dm16NkQ2bW9YQWprMHV2UEVTNjhUVndxU2VmT3JwNXV0QmRSQUt6cUJRQ2NQWFJCdnB5NWJ3QkpDL2RKNE5QLzJpalE3N2I3eWhvVDQ0R21hSUduSGo0YVFaeG9kY1JuNU9oQ2hYRk4ydUk2YW1mT0ZYOThjUXZ5KzhDWm9YYUZRMnJmT2dPbGdzbmNGWGMwaXhYK05MSjlvSlJWT2hxRVpjY2JoZ3hPM2hpQ2UwemRuZHloVWxpaGMwdFU2OVlBPT08L2RzOlNpZ25hdHVyZVZhbHVlPgo8ZHM6S2V5SW5mbz48ZHM6WDUwOURhdGE+PGRzOlg1MDlDZXJ0aWZpY2F0ZT5NSUlFRXpDQ0F2dWdBd0lCQWdJSkFJYzFxekxydis1bk1BMEdDU3FHU0liM0RRRUJDd1VBTUlHZk1Rc3dDUVlEVlFRR0V3SlZVekVMTUFrR0ExVUVDQXdDUTA4eEZEQVNCZ05WQkFjTUMwTmhjM1JzWlNCU2IyTnJNUnd3R2dZRFZRUUtEQk5UWVcxc0lGUmxjM1JwYm1jZ1UyVnlkbVZ5TVFzd0NRWURWUVFMREFKSlZERWdNQjRHQTFVRUF3d1hjMmx0Y0d4bGMyRnRiSEJvY0M1alptRndjSE11YVc4eElEQWVCZ2txaGtpRzl3MEJDUUVXRVdab1lXNXBhMEJ3YVhadmRHRnNMbWx2TUI0WERURTFNREl5TXpJeU5EVXdNMW9YRFRJMU1ESXlNakl5TkRVd00xb3dnWjh4Q3pBSkJnTlZCQVlUQWxWVE1Rc3dDUVlEVlFRSURBSkRUekVVTUJJR0ExVUVCd3dMUTJGemRHeGxJRkp2WTJzeEhEQWFCZ05WQkFvTUUxTmhiV3dnVkdWemRHbHVaeUJUWlhKMlpYSXhDekFKQmdOVkJBc01Ba2xVTVNBd0hnWURWUVFEREJkemFXMXdiR1Z6WVcxc2NHaHdMbU5tWVhCd2N5NXBiekVnTUI0R0NTcUdTSWIzRFFFSkFSWVJabWhoYm1sclFIQnBkbTkwWVd3dWFXOHdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDNGNuNjJFMXhMcXBOMzRQbWJyS0Jia09YRmp6V2dKOWIrcFh1YVJmdDZBMzM5dXVJUWVvZUg1cWVTS1JWVGwzMkwwZ2R6Mlppdkx3WlhXK2NxdmZ0VlcxdHZFSHZ6SkZ5eGVUVzNmQ1VlQ1FzZWJMbkEycVJhMDdSa3hUbzZOZjI0NG1XV1JEb2Rjb0hFZkRVU2J4ZlRaNklFeFNvalNJVTJSbkQ2V2xsWVdGZEQxR0ZwQkpPbVFCOHJBYzh3SklCZEhGZFFuWDhUdGw3aFo2cnRncUVZTXpZVk11SjJGMnIxSFNVMXpTQXZ3cGRZUDZyUkdGUkpFZmRBOW1tM1dLZk5MU2M1Y2xqejBYL1RYeTB2VmxBVjk1bDlxY2ZGelBtcmtOSXN0OUZaU3dwdkI0OUx5QVZrZTA0RlFQUHdMZ1ZINGdwaGlKSDNqdlo3SStKNWxTOFZBZ01CQUFHalVEQk9NQjBHQTFVZERnUVdCQlRUeVA2Q2M1SGxCSjUrdWNWQ3dHYzVvZ0tOR3pBZkJnTlZIU01FR0RBV2dCVFR5UDZDYzVIbEJKNSt1Y1ZDd0djNW9nS05HekFNQmdOVkhSTUVCVEFEQVFIL01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQXZNUzRFUWVQL2lwVjRqT0c1bE82L3RZQ2IvaUplQWR1T25SaGtKazBEYlgzMjlsRExaaFRUTC94L3cvOW11Q1ZjdkxyekVwNlBOK1ZXZnc1RTVGV3RaTjB5aEd0UDlSK3ZabnJWK29jMnpHRCtubzEveVNGT2UzRWlKQ081ZGVoeEtqWUVtQlJ2NXNVL0xaRktacG96S04vQk1FYTZDcUx1eGJ6Yjd5a3hWcjdFVkZYd2x0UHh6RTlUbUw5T0FDTk55RjVlSkhXTVJNbGxhclV2a2NYbGg0cHV4NGtzOWU2elY5RFFCeTJ6ZHM5ZjFJM3F4ZzBlWDZKbkdyWGkvWmlDVCtsSmdWZTNaRlhpZWppTEFpS0IwNHNYVzN0aTBMVzNseDEzWTFZbFE0L3RscGdUZ2ZJSnhLVjZueVBpTG9LMG55d2JNZCt2cEFpckR0Mk9jK2hrPC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+PHNhbWxwOlN0YXR1cz48c2FtbHA6U3RhdHVzQ29kZSBWYWx1ZT0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnN0YXR1czpTdWNjZXNzIi8+PC9zYW1scDpTdGF0dXM+PHNhbWw6QXNzZXJ0aW9uIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgSUQ9Il9jYjYzYmMzNmMyYzAzYjRlMWJjZDViMWIwY2MyZTE2NWQwNDQ1NDZlODgiIFZlcnNpb249IjIuMCIgSXNzdWVJbnN0YW50PSIyMDIxLTAxLTIwVDAxOjAzOjI0WiI+PHNhbWw6SXNzdWVyPmh0dHBzOi8vc2ltcGxlc2FtbC1mb3Itc3ByaW5nLXNhbWwuYXBwcy5wY2ZvbmUuaW8vc2FtbDIvaWRwL21ldGFkYXRhLnBocDwvc2FtbDpJc3N1ZXI+PGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+CiAgPGRzOlNpZ25lZEluZm8+PGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz4KICAgIDxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNyc2Etc2hhMjU2Ii8+CiAgPGRzOlJlZmVyZW5jZSBVUkk9IiNfY2I2M2JjMzZjMmMwM2I0ZTFiY2Q1YjFiMGNjMmUxNjVkMDQ0NTQ2ZTg4Ij48ZHM6VHJhbnNmb3Jtcz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz48ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+PC9kczpUcmFuc2Zvcm1zPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz48ZHM6RGlnZXN0VmFsdWU+VWFtN2NHVGlCd2xuRDBJdGd5aU5KVjN2Z0NPNytZZkRxSWJrWERkR3hrQT08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWU+RkhpWUpETDlKTXM1Y2V5WXhUVVgrUndEQm45RFYzVE81dDFham4raGFtb1c2MUpBY0JaNjEwUHpYMzN3alA3Mk1kYmdDWnR5ZmNrSktZUUpPT0szRkxLTkJLQkphOTNsSS9rZWZjTXRTUGxBU2hESm9ydmU0U0tWa29WbzZLVnB0eC9OTnowRkhJNURFZTZiUUVjZWFiNERVNDFVdEpQMHUyWm16ejVjNC83VzhLdmt6MkxMbXhWZlE3Q2todmgvNzBhWHlkWVBVRml3bE4vV1lTV3JYVU9oOXNFTDFiZGVlQzFkYnpaeVdNNldnSkdRMUpJblBnSGd0YTlxMU96eGliOFlLRXpQSUMzVEZldkU1Y0phMFQvd1NzOVIxN0JSR09OclhTTWQvRCt4YkY0Z3lIYW5EZFlOYVN2TzdIS2p4bzRwYk1aY05peDhMTkVYZGtiZEx3PT08L2RzOlNpZ25hdHVyZVZhbHVlPgo8ZHM6S2V5SW5mbz48ZHM6WDUwOURhdGE+PGRzOlg1MDlDZXJ0aWZpY2F0ZT5NSUlFRXpDQ0F2dWdBd0lCQWdJSkFJYzFxekxydis1bk1BMEdDU3FHU0liM0RRRUJDd1VBTUlHZk1Rc3dDUVlEVlFRR0V3SlZVekVMTUFrR0ExVUVDQXdDUTA4eEZEQVNCZ05WQkFjTUMwTmhjM1JzWlNCU2IyTnJNUnd3R2dZRFZRUUtEQk5UWVcxc0lGUmxjM1JwYm1jZ1UyVnlkbVZ5TVFzd0NRWURWUVFMREFKSlZERWdNQjRHQTFVRUF3d1hjMmx0Y0d4bGMyRnRiSEJvY0M1alptRndjSE11YVc4eElEQWVCZ2txaGtpRzl3MEJDUUVXRVdab1lXNXBhMEJ3YVhadmRHRnNMbWx2TUI0WERURTFNREl5TXpJeU5EVXdNMW9YRFRJMU1ESXlNakl5TkRVd00xb3dnWjh4Q3pBSkJnTlZCQVlUQWxWVE1Rc3dDUVlEVlFRSURBSkRUekVVTUJJR0ExVUVCd3dMUTJGemRHeGxJRkp2WTJzeEhEQWFCZ05WQkFvTUUxTmhiV3dnVkdWemRHbHVaeUJUWlhKMlpYSXhDekFKQmdOVkJBc01Ba2xVTVNBd0hnWURWUVFEREJkemFXMXdiR1Z6WVcxc2NHaHdMbU5tWVhCd2N5NXBiekVnTUI0R0NTcUdTSWIzRFFFSkFSWVJabWhoYm1sclFIQnBkbTkwWVd3dWFXOHdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDNGNuNjJFMXhMcXBOMzRQbWJyS0Jia09YRmp6V2dKOWIrcFh1YVJmdDZBMzM5dXVJUWVvZUg1cWVTS1JWVGwzMkwwZ2R6Mlppdkx3WlhXK2NxdmZ0VlcxdHZFSHZ6SkZ5eGVUVzNmQ1VlQ1FzZWJMbkEycVJhMDdSa3hUbzZOZjI0NG1XV1JEb2Rjb0hFZkRVU2J4ZlRaNklFeFNvalNJVTJSbkQ2V2xsWVdGZEQxR0ZwQkpPbVFCOHJBYzh3SklCZEhGZFFuWDhUdGw3aFo2cnRncUVZTXpZVk11SjJGMnIxSFNVMXpTQXZ3cGRZUDZyUkdGUkpFZmRBOW1tM1dLZk5MU2M1Y2xqejBYL1RYeTB2VmxBVjk1bDlxY2ZGelBtcmtOSXN0OUZaU3dwdkI0OUx5QVZrZTA0RlFQUHdMZ1ZINGdwaGlKSDNqdlo3SStKNWxTOFZBZ01CQUFHalVEQk9NQjBHQTFVZERnUVdCQlRUeVA2Q2M1SGxCSjUrdWNWQ3dHYzVvZ0tOR3pBZkJnTlZIU01FR0RBV2dCVFR5UDZDYzVIbEJKNSt1Y1ZDd0djNW9nS05HekFNQmdOVkhSTUVCVEFEQVFIL01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQXZNUzRFUWVQL2lwVjRqT0c1bE82L3RZQ2IvaUplQWR1T25SaGtKazBEYlgzMjlsRExaaFRUTC94L3cvOW11Q1ZjdkxyekVwNlBOK1ZXZnc1RTVGV3RaTjB5aEd0UDlSK3ZabnJWK29jMnpHRCtubzEveVNGT2UzRWlKQ081ZGVoeEtqWUVtQlJ2NXNVL0xaRktacG96S04vQk1FYTZDcUx1eGJ6Yjd5a3hWcjdFVkZYd2x0UHh6RTlUbUw5T0FDTk55RjVlSkhXTVJNbGxhclV2a2NYbGg0cHV4NGtzOWU2elY5RFFCeTJ6ZHM5ZjFJM3F4ZzBlWDZKbkdyWGkvWmlDVCtsSmdWZTNaRlhpZWppTEFpS0IwNHNYVzN0aTBMVzNseDEzWTFZbFE0L3RscGdUZ2ZJSnhLVjZueVBpTG9LMG55d2JNZCt2cEFpckR0Mk9jK2hrPC9kczpYNTA5Q2VydGlmaWNhdGU+PC9kczpYNTA5RGF0YT48L2RzOktleUluZm8+PC9kczpTaWduYXR1cmU+PHNhbWw6U3ViamVjdD48c2FtbDpOYW1lSUQgU1BOYW1lUXVhbGlmaWVyPSJodHRwOi8vbG9jYWxob3N0OjgwODAvc2FtbDIvc2VydmljZS1wcm92aWRlci1tZXRhZGF0YS9vbmUiIEZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6MS4xOm5hbWVpZC1mb3JtYXQ6ZW1haWxBZGRyZXNzIj50ZXN0dXNlckBzcHJpbmcuc2VjdXJpdHkuc2FtbDwvc2FtbDpOYW1lSUQ+PHNhbWw6U3ViamVjdENvbmZpcm1hdGlvbiBNZXRob2Q9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpjbTpiZWFyZXIiPjxzYW1sOlN1YmplY3RDb25maXJtYXRpb25EYXRhIE5vdE9uT3JBZnRlcj0iMjA1Mi0wOS0yOFQwMjo1MDowNFoiIFJlY2lwaWVudD0iaHR0cDovL2xvY2FsaG9zdDo4MDgwL2xvZ2luL3NhbWwyL3Nzby9vbmUiIEluUmVzcG9uc2VUbz0iQVJRYzk4ZjIwMC1kY2Y3LTRkZjQtYTUyMi0wNzIwNjIwOGIwN2QiLz48L3NhbWw6U3ViamVjdENvbmZpcm1hdGlvbj48L3NhbWw6U3ViamVjdD48c2FtbDpDb25kaXRpb25zIE5vdEJlZm9yZT0iMjAyMS0wMS0yMFQwMTowMjo1NFoiIE5vdE9uT3JBZnRlcj0iMjA1Mi0wOS0yOFQwMjo1MDowNFoiPjxzYW1sOkF1ZGllbmNlUmVzdHJpY3Rpb24+PHNhbWw6QXVkaWVuY2U+aHR0cDovL2xvY2FsaG9zdDo4MDgwL3NhbWwyL3NlcnZpY2UtcHJvdmlkZXItbWV0YWRhdGEvb25lPC9zYW1sOkF1ZGllbmNlPjwvc2FtbDpBdWRpZW5jZVJlc3RyaWN0aW9uPjwvc2FtbDpDb25kaXRpb25zPjxzYW1sOkF1dGhuU3RhdGVtZW50IEF1dGhuSW5zdGFudD0iMjAyMS0wMS0yMFQwMDo0ODoyOVoiIFNlc3Npb25Ob3RPbk9yQWZ0ZXI9IjIwMjEtMDEtMjBUMDg6NDg6MjlaIiBTZXNzaW9uSW5kZXg9Il9lN2ExYTllNDk1YmZlMjI2NjQ5ZThkY2MzN2UxNDE1NDQ5NTIxNWQ2ZWIiPjxzYW1sOkF1dGhuQ29udGV4dD48c2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZj51cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YWM6Y2xhc3NlczpQYXNzd29yZFByb3RlY3RlZFRyYW5zcG9ydDwvc2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZj48L3NhbWw6QXV0aG5Db250ZXh0Pjwvc2FtbDpBdXRoblN0YXRlbWVudD48c2FtbDpBdHRyaWJ1dGVTdGF0ZW1lbnQ+PHNhbWw6QXR0cmlidXRlIE5hbWU9InVpZCIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDpiYXNpYyI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOnN0cmluZyI+dGVzdHVzZXJAc3ByaW5nLnNlY3VyaXR5LnNhbWw8L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48c2FtbDpBdHRyaWJ1dGUgTmFtZT0iZWR1UGVyc29uQWZmaWxpYXRpb24iIE5hbWVGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphdHRybmFtZS1mb3JtYXQ6YmFzaWMiPjxzYW1sOkF0dHJpYnV0ZVZhbHVlIHhzaTp0eXBlPSJ4czpzdHJpbmciPm1lbWJlcjwvc2FtbDpBdHRyaWJ1dGVWYWx1ZT48c2FtbDpBdHRyaWJ1dGVWYWx1ZSB4c2k6dHlwZT0ieHM6c3RyaW5nIj51c2VyPC9zYW1sOkF0dHJpYnV0ZVZhbHVlPjwvc2FtbDpBdHRyaWJ1dGU+PHNhbWw6QXR0cmlidXRlIE5hbWU9ImVtYWlsQWRkcmVzcyIgTmFtZUZvcm1hdD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmF0dHJuYW1lLWZvcm1hdDpiYXNpYyI+PHNhbWw6QXR0cmlidXRlVmFsdWUgeHNpOnR5cGU9InhzOnN0cmluZyI+dGVzdHVzZXJAc3ByaW5nLnNlY3VyaXR5LnNhbWw8L3NhbWw6QXR0cmlidXRlVmFsdWU+PC9zYW1sOkF0dHJpYnV0ZT48L3NhbWw6QXR0cmlidXRlU3RhdGVtZW50Pjwvc2FtbDpBc3NlcnRpb24+PC9zYW1scDpSZXNwb25zZT4=";
-
- static final Map> USER_ATTRIBUTES = new LinkedHashMap<>();
-
- static {
- USER_ATTRIBUTES.put("uid", Arrays.asList("testuser@spring.security.saml"));
- USER_ATTRIBUTES.put("eduPersonAffiliation", Arrays.asList("member", "user"));
- USER_ATTRIBUTES.put("emailAddress", Arrays.asList("testuser@spring.security.saml"));
- }
-
@Autowired
MockMvc mvc;
@@ -71,51 +54,80 @@ public class Saml2LoginApplicationITests {
this.webClient.getCookieManager().clearCookies();
}
- @Test
- void indexWhenSamlResponseThenShowsUserInformation() throws Exception {
- HttpSession session = this.mvc.perform(get("http://localhost:8080/")).andExpect(status().is3xxRedirection())
- .andExpect(redirectedUrl("http://localhost:8080/login")).andReturn().getRequest().getSession();
-
- this.mvc.perform(post("http://localhost:8080/login/saml2/sso/one").param("SAMLResponse", SIGNED_RESPONSE)
- .session((MockHttpSession) session)).andExpect(redirectedUrl("http://localhost:8080/"));
-
- this.mvc.perform(get("http://localhost:8080/").session((MockHttpSession) session))
- .andExpect(model().attribute("emailAddress", "testuser@spring.security.saml"))
- .andExpect(model().attribute("userAttributes", USER_ATTRIBUTES));
- }
-
- @Test
- void authenticationAttemptWhenValidThenShowsUserEmailAddress() throws Exception {
- HtmlPage relyingParty = performLogin();
- assertThat(relyingParty.asNormalizedText()).contains("You're email address is testuser@spring.security.saml");
- }
-
- @Test
- void logoutWhenRelyingPartyInitiatedLogoutThenLoginPageWithLogoutParam() throws Exception {
- HtmlPage relyingParty = performLogin();
- HtmlElement rpLogoutButton = relyingParty.getHtmlElementById("rp_logout_button");
- HtmlPage loginPage = rpLogoutButton.click();
- assertThat(loginPage.getUrl().getFile()).isEqualTo("/login?logout");
- }
-
- @Test
- void logoutWhenAssertingPartyInitiatedLogoutThenLoginPageWithLogoutParam() throws Exception {
- HtmlPage relyingParty = performLogin();
- HtmlElement apLogoutButton = relyingParty.getHtmlElementById("ap_logout_button");
- HtmlPage loginPage = apLogoutButton.click();
- assertThat(loginPage.getUrl().getFile()).isEqualTo("/login?logout");
- }
-
- private HtmlPage performLogin() throws IOException {
+ private void performLogin(String registrationId) throws Exception {
HtmlPage login = this.webClient.getPage("/");
- HtmlPage assertingParty = login.getAnchorByHref("/saml2/authenticate/one").click();
- HtmlForm form = assertingParty.getFormByName("f");
+ login.getAnchorByHref("/saml2/authenticate/" + registrationId).click();
+ this.webClient.waitForBackgroundJavaScript(10000);
+ HtmlPage okta = (HtmlPage) this.webClient.getCurrentWindow().getEnclosedPage();
+ this.webClient.waitForBackgroundJavaScript(10000);
+ HtmlForm form = findForm(okta);
HtmlInput username = form.getInputByName("username");
- HtmlInput password = form.getInputByName("password");
- HtmlSubmitInput submit = assertingParty.getHtmlElementById("submit_button");
- username.setValueAttribute("user");
- password.setValueAttribute("password");
- return submit.click();
+ HtmlPasswordInput password = form.getInputByName("password");
+ HtmlSubmitInput submit = okta.getHtmlElementById("okta-signin-submit");
+ username.type("testuser@spring.security.saml");
+ password.type("12345678");
+ submit.click();
+ this.webClient.waitForBackgroundJavaScript(10000);
+ }
+
+ private HtmlForm findForm(HtmlPage login) {
+ await().atMost(10, TimeUnit.SECONDS)
+ .until(() -> login.getForms().stream().map(HtmlForm::getId).anyMatch("form19"::equals));
+ for (HtmlForm form : login.getForms()) {
+ try {
+ if (form.getId().equals("form19")) {
+ return form;
+ }
+ }
+ catch (ElementNotFoundException ex) {
+ // Continue
+ }
+ }
+ throw new IllegalStateException("Could not resolve login form");
+ }
+
+ @DisplayName("Tenant one tests")
+ @Nested
+ class TenantOneTests {
+
+ @Test
+ void authenticationAttemptWhenValidThenShowsUserEmailAddress() throws Exception {
+ performLogin("one");
+ HtmlPage home = (HtmlPage) Saml2LoginApplicationITests.this.webClient.getCurrentWindow().getEnclosedPage();
+ assertThat(home.asText()).contains("You're email address is testuser@spring.security.saml");
+ }
+
+ @Test
+ void logoutWhenRelyingPartyInitiatedLogoutThenLoginPageWithLogoutParam() throws Exception {
+ performLogin("one");
+ HtmlPage home = (HtmlPage) Saml2LoginApplicationITests.this.webClient.getCurrentWindow().getEnclosedPage();
+ HtmlElement rpLogoutButton = home.getHtmlElementById("rp_logout_button");
+ HtmlPage loginPage = rpLogoutButton.click();
+ assertThat(loginPage.getUrl().getFile()).isEqualTo("/login?logout");
+ }
+
+ }
+
+ @DisplayName("Tenant two tests")
+ @Nested
+ class TenantTwoTests {
+
+ @Test
+ void authenticationAttemptWhenValidThenShowsUserEmailAddress() throws Exception {
+ performLogin("two");
+ HtmlPage home = (HtmlPage) Saml2LoginApplicationITests.this.webClient.getCurrentWindow().getEnclosedPage();
+ assertThat(home.asText()).contains("You're email address is testuser@spring.security.saml");
+ }
+
+ @Test
+ void logoutWhenRelyingPartyInitiatedLogoutThenLoginPageWithLogoutParam() throws Exception {
+ performLogin("two");
+ HtmlPage home = (HtmlPage) Saml2LoginApplicationITests.this.webClient.getCurrentWindow().getEnclosedPage();
+ HtmlElement rpLogoutButton = home.getHtmlElementById("rp_logout_button");
+ HtmlPage loginPage = rpLogoutButton.click();
+ assertThat(loginPage.getUrl().getFile()).isEqualTo("/login?logout");
+ }
+
}
}
diff --git a/servlet/spring-boot/java/saml2/refreshable-metadata/build.gradle b/servlet/spring-boot/java/saml2/refreshable-metadata/build.gradle
index 3fc5803..e5879af 100644
--- a/servlet/spring-boot/java/saml2/refreshable-metadata/build.gradle
+++ b/servlet/spring-boot/java/saml2/refreshable-metadata/build.gradle
@@ -1,6 +1,6 @@
plugins {
- id 'org.springframework.boot' version '2.5.6'
- id 'io.spring.dependency-management' version '1.0.10.RELEASE'
+ id 'org.springframework.boot' version '3.0.0-M1'
+ id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id "nebula.integtest" version "8.2.0"
id 'java'
}
@@ -22,7 +22,7 @@ dependencies {
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.security:spring-security-saml2-service-provider'
- implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5'
+ implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity6'
testImplementation 'net.sourceforge.htmlunit:htmlunit'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
diff --git a/servlet/spring-boot/java/saml2/refreshable-metadata/gradle.properties b/servlet/spring-boot/java/saml2/refreshable-metadata/gradle.properties
index c924e36..ce1417e 100644
--- a/servlet/spring-boot/java/saml2/refreshable-metadata/gradle.properties
+++ b/servlet/spring-boot/java/saml2/refreshable-metadata/gradle.properties
@@ -1,2 +1,2 @@
-version=5.6.0-SNAPSHOT
-spring-security.version=5.6.0-SNAPSHOT
+version=6.0.0-SNAPSHOT
+spring-security.version=6.0.0-SNAPSHOT
diff --git a/servlet/spring-boot/kotlin/hello-security/build.gradle.kts b/servlet/spring-boot/kotlin/hello-security/build.gradle.kts
index 968fc25..69420e0 100644
--- a/servlet/spring-boot/kotlin/hello-security/build.gradle.kts
+++ b/servlet/spring-boot/kotlin/hello-security/build.gradle.kts
@@ -1,8 +1,8 @@
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins {
- id("org.springframework.boot") version "2.5.0"
- id("io.spring.dependency-management") version "1.0.9.RELEASE"
+ id("org.springframework.boot") version "3.0.0-M1"
+ id("io.spring.dependency-management") version "1.0.11.RELEASE"
kotlin("jvm") version "1.6.0"
kotlin("plugin.spring") version "1.6.0"
}
@@ -12,15 +12,16 @@ repositories {
maven {
url = uri("https://repo.spring.io/snapshot")
}
+ maven {
+ url = uri("https://repo.spring.io/milestone")
+ }
}
dependencies {
- implementation("org.jetbrains.kotlin:kotlin-reflect")
- implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
implementation("org.springframework.boot:spring-boot-starter-security")
implementation("org.springframework.boot:spring-boot-starter-thymeleaf")
implementation("org.springframework.boot:spring-boot-starter-web")
- implementation("org.thymeleaf.extras:thymeleaf-extras-springsecurity5")
+ implementation("org.thymeleaf.extras:thymeleaf-extras-springsecurity6")
testImplementation("org.springframework.boot:spring-boot-starter-test")
testImplementation("org.springframework.security:spring-security-test")
}
diff --git a/servlet/spring-boot/kotlin/hello-security/gradle.properties b/servlet/spring-boot/kotlin/hello-security/gradle.properties
index 778a95c..a37772a 100644
--- a/servlet/spring-boot/kotlin/hello-security/gradle.properties
+++ b/servlet/spring-boot/kotlin/hello-security/gradle.properties
@@ -1 +1 @@
-spring-security.version=5.6.0-SNAPSHOT
+spring-security.version=6.0.0-SNAPSHOT
diff --git a/servlet/spring-boot/kotlin/hello-security/src/main/kotlin/org/springframework/security/samples/config/SecurityConfig.kt b/servlet/spring-boot/kotlin/hello-security/src/main/kotlin/org/springframework/security/samples/config/SecurityConfig.kt
index 296d19b..063555d 100644
--- a/servlet/spring-boot/kotlin/hello-security/src/main/kotlin/org/springframework/security/samples/config/SecurityConfig.kt
+++ b/servlet/spring-boot/kotlin/hello-security/src/main/kotlin/org/springframework/security/samples/config/SecurityConfig.kt
@@ -19,7 +19,6 @@ package org.springframework.security.samples.config
import org.springframework.context.annotation.Bean
import org.springframework.security.config.annotation.web.builders.HttpSecurity
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity
-import org.springframework.security.config.web.servlet.invoke
import org.springframework.security.core.userdetails.User
import org.springframework.security.core.userdetails.UserDetailsService
import org.springframework.security.provisioning.InMemoryUserDetailsManager
@@ -33,15 +32,11 @@ class SecurityConfig {
@Bean
fun filterChain(http: HttpSecurity): SecurityFilterChain {
- http {
- authorizeRequests {
- authorize("/css/**", permitAll)
- authorize("/user/**", hasAuthority("ROLE_USER"))
- }
- formLogin {
- loginPage = "/log-in"
- }
- }
+ http.authorizeRequests()
+ .antMatchers("/css/**").permitAll()
+ .antMatchers("/user/**").hasAuthority("ROLE_USER")
+ .and()
+ .formLogin().loginPage("/log-in")
return http.build()
}
diff --git a/servlet/xml/java/contacts/gradle.properties b/servlet/xml/java/contacts/gradle.properties
index 99e4019..a2f0b27 100644
--- a/servlet/xml/java/contacts/gradle.properties
+++ b/servlet/xml/java/contacts/gradle.properties
@@ -1 +1 @@
-version=5.6.0-SNAPSHOT
\ No newline at end of file
+version=6.0.0-SNAPSHOT
diff --git a/servlet/xml/java/dms/gradle.properties b/servlet/xml/java/dms/gradle.properties
index f309933..a2f0b27 100644
--- a/servlet/xml/java/dms/gradle.properties
+++ b/servlet/xml/java/dms/gradle.properties
@@ -1 +1 @@
-version=5.6.0-SNAPSHOT
+version=6.0.0-SNAPSHOT
diff --git a/servlet/xml/java/helloworld/gradle.properties b/servlet/xml/java/helloworld/gradle.properties
index f309933..a2f0b27 100644
--- a/servlet/xml/java/helloworld/gradle.properties
+++ b/servlet/xml/java/helloworld/gradle.properties
@@ -1 +1 @@
-version=5.6.0-SNAPSHOT
+version=6.0.0-SNAPSHOT
diff --git a/servlet/xml/java/preauth/gradle.properties b/servlet/xml/java/preauth/gradle.properties
index f309933..a2f0b27 100644
--- a/servlet/xml/java/preauth/gradle.properties
+++ b/servlet/xml/java/preauth/gradle.properties
@@ -1 +1 @@
-version=5.6.0-SNAPSHOT
+version=6.0.0-SNAPSHOT
diff --git a/servlet/xml/java/saml2/login-logout/build.gradle b/servlet/xml/java/saml2/login-logout/build.gradle
index 24eade3..96efcf7 100644
--- a/servlet/xml/java/saml2/login-logout/build.gradle
+++ b/servlet/xml/java/saml2/login-logout/build.gradle
@@ -1,6 +1,7 @@
plugins {
id "java"
- id "org.gretty" version "3.0.6"
+ id "nebula.integtest" version "8.2.0"
+ id "org.gretty" version "4.0.0"
id "war"
}
@@ -34,7 +35,7 @@ dependencies {
testImplementation "org.springframework:spring-test"
testImplementation "org.springframework.security:spring-security-test"
testImplementation "org.junit.jupiter:junit-jupiter-api"
- testImplementation 'net.sourceforge.htmlunit:htmlunit:2.49.1'
+ testImplementation 'net.sourceforge.htmlunit:htmlunit:2.44.0'
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine")
diff --git a/servlet/xml/java/saml2/login-logout/gradle.properties b/servlet/xml/java/saml2/login-logout/gradle.properties
index e170fd3..a2f0b27 100644
--- a/servlet/xml/java/saml2/login-logout/gradle.properties
+++ b/servlet/xml/java/saml2/login-logout/gradle.properties
@@ -1 +1 @@
-version=5.7.0-SNAPSHOT
+version=6.0.0-SNAPSHOT
diff --git a/servlet/xml/java/saml2/login-logout/gradle/gretty.gradle b/servlet/xml/java/saml2/login-logout/gradle/gretty.gradle
index 6949bdf..3428615 100644
--- a/servlet/xml/java/saml2/login-logout/gradle/gretty.gradle
+++ b/servlet/xml/java/saml2/login-logout/gradle/gretty.gradle
@@ -1,5 +1,5 @@
gretty {
- servletContainer = "tomcat9"
+ servletContainer = "tomcat10"
contextPath = "/"
fileLogEnabled = false
integrationTestTask = 'integrationTest'
@@ -38,4 +38,4 @@ project.tasks.matching { it.name == "integrationTest" }.all {
integrationTest.systemProperty 'app.httpBaseURI', httpBaseUrl
integrationTest.systemProperty 'app.httpsBaseURI', httpsBaseUrl
}
-}
\ No newline at end of file
+}
diff --git a/settings.gradle b/settings.gradle
index fcbbf0f..8a57a6c 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -2,6 +2,7 @@ pluginManagement {
repositories {
mavenCentral()
gradlePluginPortal()
+ maven { url 'https://repo.spring.io/milestone' }
maven { url "https://repo.spring.io/libs-snapshot" }
}
resolutionStrategy {