diff --git a/dependencies/spring-security-dependencies.gradle b/dependencies/spring-security-dependencies.gradle new file mode 100644 index 0000000000..4fd260ea5e --- /dev/null +++ b/dependencies/spring-security-dependencies.gradle @@ -0,0 +1,229 @@ +import com.github.benmanes.gradle.versions.reporter.result.DependencyOutdated +import com.github.benmanes.gradle.versions.reporter.result.Result +import org.gradle.wrapper.BootstrapMainStarter +import org.gradle.wrapper.Download +import org.gradle.wrapper.Install +import org.gradle.wrapper.Logger +import org.gradle.wrapper.PathAssembler +import org.gradle.wrapper.WrapperExecutor + +plugins { + id 'java-platform' +} + +javaPlatform { + allowDependencies() +} + +dependencies { + api platform("org.springframework:spring-framework-bom:5.3.5") + api platform("io.projectreactor:reactor-bom:2020.0.5") + api platform("io.rsocket:rsocket-bom:1.1.0") + api platform("org.springframework.data:spring-data-releasetrain:Neumann-SR+") + api platform("org.jetbrains.kotlin:kotlin-bom:$kotlinVersion") + api platform("com.fasterxml.jackson:jackson-bom:2.12.2") + constraints { + api "ch.qos.logback:logback-classic:1.2.3" + api "com.google.appengine:appengine-api-1.0-sdk:$gaeVersion" + api "com.google.appengine:appengine-api-labs:$gaeVersion" + api "com.google.appengine:appengine-api-stubs:$gaeVersion" + api "com.google.appengine:appengine-testing:$gaeVersion" + api "com.google.appengine:appengine:$gaeVersion" + api "com.google.inject:guice:3.0" + api "com.nimbusds:nimbus-jose-jwt:9.7" + api "com.nimbusds:oauth2-oidc-sdk:9.3" + api "com.squareup.okhttp3:mockwebserver:3.14.9" + api "com.squareup.okhttp3:okhttp:3.14.9" + api "com.sun.xml.bind:jaxb-core:2.3.0.1" + api "com.sun.xml.bind:jaxb-impl:2.3.3" + api "com.unboundid:unboundid-ldapsdk:4.0.14" + api "commons-codec:commons-codec:1.14" + api "commons-collections:commons-collections:3.2.2" + api "commons-httpclient:commons-httpclient:3.1" + api "commons-logging:commons-logging:1.2" + api "io.projectreactor.tools:blockhound:1.0.5.RELEASE" + api "javax.annotation:jsr250-api:1.0" + api "javax.servlet.jsp.jstl:javax.servlet.jsp.jstl-api:1.2.2" + api "javax.servlet.jsp:javax.servlet.jsp-api:2.3.3" + api "javax.servlet:javax.servlet-api:4.0.1" + api "javax.validation:validation-api:2.0.1.Final" + api "javax.xml.bind:jaxb-api:2.3.1" + api "junit:junit:4.13.2" + api "ldapsdk:ldapsdk:4.1" + api "net.sf.ehcache:ehcache:2.10.6" + api "net.sourceforge.htmlunit:htmlunit:2.48.0" + api "net.sourceforge.nekohtml:nekohtml:1.9.22" + api "org.apache.directory.server:apacheds-core-entry:1.5.5" + api "org.apache.directory.server:apacheds-core:1.5.5" + api "org.apache.directory.server:apacheds-protocol-ldap:1.5.5" + api "org.apache.directory.server:apacheds-protocol-shared:1.5.5" + api "org.apache.directory.server:apacheds-server-jndi:1.5.5" + api "org.apache.directory.shared:shared-ldap:0.9.15" + api "org.apache.httpcomponents:httpclient:4.5.13" + api "org.aspectj:aspectjrt:$aspectjVersion" + api "org.aspectj:aspectjtools:$aspectjVersion" + api "org.aspectj:aspectjweaver:$aspectjVersion" + api "org.assertj:assertj-core:3.19.0" + api "org.bouncycastle:bcpkix-jdk15on:1.68" + api "org.bouncycastle:bcprov-jdk15on:1.68" + api "org.eclipse.jetty:jetty-server:9.4.39.v20210325" + api "org.eclipse.jetty:jetty-servlet:9.4.39.v20210325" + api "org.eclipse.persistence:javax.persistence:2.2.1" + api "org.hibernate:hibernate-entitymanager:5.4.30.Final" + api "org.hibernate:hibernate-validator:6.2.0.Final" + api "org.hsqldb:hsqldb:2.5.1" + api "org.jasig.cas.client:cas-client-core:3.6.2" + api "org.jasig.cas:cas-server-webapp:4.2.7@war" + api "org.mockito:mockito-core:3.8.0" + api "org.openid4java:openid4java-nodeps:0.9.6" + api "org.opensaml:opensaml-core:$openSamlVersion" + api "org.opensaml:opensaml-saml-api:$openSamlVersion" + api "org.opensaml:opensaml-saml-impl:$openSamlVersion" + api "org.powermock:powermock-api-mockito2:2.0.9" + api "org.powermock:powermock-api-support:2.0.9" + api "org.powermock:powermock-core:2.0.9" + api "org.powermock:powermock-module-junit4-common:2.0.9" + api "org.powermock:powermock-module-junit4:2.0.9" + api "org.powermock:powermock-reflect:2.0.9" + api "org.python:jython:2.5.3" + api "org.seleniumhq.selenium:htmlunit-driver:2.48.0" + api "org.seleniumhq.selenium:selenium-java:3.141.59" + api "org.seleniumhq.selenium:selenium-support:3.141.59" + api "org.skyscreamer:jsonassert:1.5.0" + api "org.slf4j:jcl-over-slf4j:1.7.30" + api "org.slf4j:log4j-over-slf4j:1.7.30" + api "org.slf4j:slf4j-api:1.7.30" + api "org.springframework.ldap:spring-ldap-core:2.3.3.RELEASE" + api "org.synchronoss.cloud:nio-multipart-parser:1.1.0" + } +} + +//def updateDepencencyInlineVersion(Project project, DependencyOutdated dependency) { +// def originalDependency = "${dependency.group}:${dependency.name}:${dependency.version}" +// def replacementDependency = "${dependency.group}:${dependency.name}:${dependency.available.release ?: dependency.available.milestone}" +// def buildFileText = project.buildFile.text +// project.buildFile.text = buildFileText.replace(originalDependency, replacementDependency) +//} +// +//def updateDepencencyWithVersionVariable(Project project, DependencyOutdated dependency) { +// java.io.File gradleProperties = project.getRootProject().file(Project.GRADLE_PROPERTIES) +// def gradlePropertiesText = gradleProperties.text +// if (!gradleProperties.exists()) { +// return +// } +// def originalDependency = "\"${dependency.group}:${dependency.name}:\\\$\\{?([^'\"]+?)\\}?\"" +// java.util.regex.Pattern pattern = java.util.regex.Pattern.compile(originalDependency); +// def buildFileText = project.buildFile.text +// java.util.regex.Matcher matcher = pattern.matcher(buildFileText) +// while (matcher.find()) { +// def versionVariable = matcher.group(1) +// gradlePropertiesText = gradlePropertiesText.replace("$versionVariable=${dependency.version}","$versionVariable=${dependency.available.release ?: dependency.available.milestone}") +// } +// gradleProperties.text = gradlePropertiesText +//} +// +//tasks.dependencyUpdates.configure { +// checkConstraints = true +// outputFormatter = { Result result -> +// def updatable = result.outdated.dependencies +// if (!updatable.isEmpty()){ +// def groups = [:] +// updatable.each { DependencyOutdated dependency -> +// groups.get(dependency.group, []).add(dependency) +// } +// println groups.keySet() +// groups.forEach { group, dependencies -> +// dependencies.forEach { dependency -> +// def originalDependency = "${dependency.group}:${dependency.name}:${dependency.version}" +// def updatedDependency = "${dependency.group}:${dependency.name}:${dependency.available.release ?: dependency.available.milestone}" +// println "Updating $originalDependency to $updatedDependency" +// updateDepencencyInlineVersion(project, dependency) +// updateDepencencyWithVersionVariable(project, dependency) +// } +// def version = dependencies[0].available.release ?: dependencies[0].available.milestone +// def title = dependencies.size() == 1 ? "Update ${dependencies[0].name} to $version" : "Update $group to $version" +// if (new ProcessBuilder().directory(project.rootDir).command("git", "checkout", "-b", "bot-"+title.replace(' ', '-').toLowerCase()).start() +// .waitFor() != 0) { +// throw new IllegalStateException("git branch failed"); +// } +// if (new ProcessBuilder().directory(project.rootDir).command("git", "commit", "-am", title).start() +// .waitFor() != 0) { +// throw new IllegalStateException("git commit failed"); +// } +// if (new ProcessBuilder().directory(project.rootDir).command("git", "checkout", "-").start() +// .waitFor() != 0) { +// throw new IllegalStateException("git checkout previous failed"); +// } +// } +// } +// def currentGradleVersion = result.gradle.current +// def runningGradleVersion = result.gradle.running +// if (currentGradleVersion > runningGradleVersion) { +// def title = "Upgrade Gradle to $currentGradleVersion.version" +// println title +// GradleRunner.create() +// .withGradleInstallation(project.getGradle().getGradleHomeDir()) +// .withProjectDir(project.rootDir) +// .withArguments("wrapper", "--gradle-version", currentGradleVersion.version) +// .forwardOutput() +// .build() +// if (new ProcessBuilder().directory(project.rootDir).command("git", "commit", "-am", title).start() +// .waitFor() != 0) { +// throw new IllegalStateException("git commit failed"); +// } +// } +// } +// resolutionStrategy { +// componentSelection { +// all { ComponentSelection selection -> +// def candidateVersion = selection.candidate.version +// if (candidateVersion ==~ /(?i).*?(alpha|beta|m\d+|rc\d+).*/) { +// reject("$candidateVersion is not allowed because it is an alpha or beta version") +// } +// } +// all { ComponentSelection selection -> +// def candidateVersion = selection.candidate.version +// if (candidateVersion ==~ /(?i).*?m\d+.*/) { +// reject("$candidateVersion is not allowed because it is a milestone version") +// } +// } +// all { ComponentSelection selection -> +// def candidateVersion = selection.candidate.version +// if (candidateVersion ==~ /(?i).*?rc\d+.*/) { +// reject("$candidateVersion is not allowed because it is a release candidate version") +// } +// } +// all { ComponentSelection selection -> +// def currentVersion = selection.currentVersion +// def separator = currentVersion.indexOf(".") +// def major = separator > 0 ? currentVersion.substring(0,separator) : currentVersion +// def candidateVersion = selection.candidate.version +// if (candidateVersion !=~ /\d\d\d\d.*/ && !candidateVersion.startsWith(major)) { +// reject("Cannot Upgrade to new Major Version") +// } +// } +// all { ComponentSelection selection -> +// def candidate = selection.candidate +// if (candidate.group == "org.apache.directory.server" && candidate.version != selection.currentVersion) { +// reject("org.apache.directory.server has breaking changes in newer versions") +// } +// } +// withModule("javax.xml.bind:jaxb-api") { ComponentSelection selection -> +// if (selection.candidate.version ==~ /.*?b\d+.*/) { +// reject("Reject jaxb-api beta versions") +// } +// } +// withModule("com.sun.xml.bind:jaxb-impl") { ComponentSelection selection -> +// if (selection.candidate.version ==~ /.*?b\d+.*/) { +// reject("Reject jaxb-api beta versions") +// } +// } +// withModule("org.springframework.data:spring-data-releasetrain") { ComponentSelection selection -> +// if (selection.candidate.version !=~ /\d\d\d\d.*/) { +// reject("calver is latest version scheme") +// } +// } +// } +// } +//} + diff --git a/gradle.properties b/gradle.properties index 1141886205..0c43dc459f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,6 +2,7 @@ aspectjVersion=1.9.6 gaeVersion=1.9.87 springJavaformatVersion=0.0.25 springBootVersion=2.4.2 +openSamlVersion=3.4.6 version=5.5.0-SNAPSHOT kotlinVersion=1.4.31 org.gradle.jvmargs=-Xmx3g -XX:MaxPermSize=2048m -XX:+HeapDumpOnOutOfMemoryError diff --git a/gradle/dependency-management.gradle b/gradle/dependency-management.gradle index dcd46ad885..4994e35e4a 100644 --- a/gradle/dependency-management.gradle +++ b/gradle/dependency-management.gradle @@ -23,92 +23,7 @@ if (!project.hasProperty("locksDisabled")) { ext.openSamlVersion = "3.+" dependencies { - management platform("org.springframework:spring-framework-bom:$springVersion") - management platform("io.projectreactor:reactor-bom:$reactorVersion") - management platform("org.springframework.data:spring-data-releasetrain:$springDataVersion") - management platform("org.jetbrains.kotlin:kotlin-bom:$kotlinVersion") - constraints { - management "ch.qos.logback:logback-classic:1.+" - management "com.fasterxml.jackson.core:jackson-databind:2.+" - management 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.+' - management "com.google.appengine:appengine-api-1.0-sdk:$gaeVersion" - management "com.google.appengine:appengine-api-labs:$gaeVersion" - management "com.google.appengine:appengine-api-stubs:$gaeVersion" - management "com.google.appengine:appengine-testing:$gaeVersion" - management "com.google.appengine:appengine:$gaeVersion" - management "com.google.inject:guice:3.0" - management "com.nimbusds:nimbus-jose-jwt:9.+" - management "com.nimbusds:oauth2-oidc-sdk:9.+" - management "com.squareup.okhttp3:mockwebserver:3.+" - management "com.squareup.okhttp3:okhttp:3.+" - management "com.sun.xml.bind:jaxb-core:2.+" - management "com.sun.xml.bind:jaxb-impl:2.+" - management "com.unboundid:unboundid-ldapsdk:4.+" - management "commons-codec:commons-codec:1.14" - management "commons-collections:commons-collections:3.+" - management "commons-httpclient:commons-httpclient:3.+" - management "commons-logging:commons-logging:1.2" - management "io.projectreactor.tools:blockhound:1.+" - management "io.rsocket:rsocket-core:${rsocketVersion}" - management "io.rsocket:rsocket-transport-netty:${rsocketVersion}" - management "javax.annotation:jsr250-api:1.+" - management "javax.servlet.jsp.jstl:javax.servlet.jsp.jstl-api:1.+" - management "javax.servlet.jsp:javax.servlet.jsp-api:2.+" - management "javax.servlet:javax.servlet-api:4.+" - management "javax.validation:validation-api:2.+" - management "javax.xml.bind:jaxb-api:2.+" - management "junit:junit:4.12" - management "ldapsdk:ldapsdk:4.+" - management "net.sf.ehcache:ehcache:2.+" - management "net.sourceforge.htmlunit:htmlunit:2.37.0" - management "net.sourceforge.nekohtml:nekohtml:1.+" - management "nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect:2.+" - management "opensymphony:sitemesh:2.+" - management "org.apache.directory.server:apacheds-core-entry:1.5.5" - management "org.apache.directory.server:apacheds-core:1.5.5" - management "org.apache.directory.server:apacheds-protocol-ldap:1.5.5" - management "org.apache.directory.server:apacheds-protocol-shared:1.5.5" - management "org.apache.directory.server:apacheds-server-jndi:1.5.5" - management "org.apache.directory.shared:shared-ldap:0.9.15" - management "org.apache.httpcomponents:httpclient:4.+" - management "org.apache.taglibs:taglibs-standard-jstlel:1.+" - management "org.aspectj:aspectjrt:$aspectjVersion" - management "org.aspectj:aspectjtools:$aspectjVersion" - management "org.aspectj:aspectjweaver:$aspectjVersion" - management "org.assertj:assertj-core:3.+" - management "org.bouncycastle:bcpkix-jdk15on:1.+" - management "org.bouncycastle:bcprov-jdk15on:1.+" - management "org.eclipse.jetty:jetty-server:9.4.19.v20190610" - management "org.eclipse.jetty:jetty-servlet:9.4.19.v20190610" - management "org.eclipse.persistence:javax.persistence:2.+" - management "org.hibernate:hibernate-entitymanager:5.+" - management "org.hibernate:hibernate-validator:6.+" - management "org.hsqldb:hsqldb:2.+" - management "org.jasig.cas.client:cas-client-core:3.+" - management "org.jasig.cas:cas-server-webapp:4.0.7@war" - management "org.mockito:mockito-core:3.3.+" - management "org.openid4java:openid4java-nodeps:0.+" - management "org.opensaml:opensaml-core:$openSamlVersion" - management "org.opensaml:opensaml-saml-api:$openSamlVersion" - management "org.opensaml:opensaml-saml-impl:$openSamlVersion" - management "org.powermock:powermock-api-mockito2:2.+" - management "org.powermock:powermock-api-support:2.+" - management "org.powermock:powermock-core:2.+" - management "org.powermock:powermock-module-junit4-common:2.+" - management "org.powermock:powermock-module-junit4:2.+" - management "org.powermock:powermock-reflect:2.+" - management "org.python:jython:2.5.+" - management "org.seleniumhq.selenium:htmlunit-driver:2.37.0" - management "org.seleniumhq.selenium:selenium-java:3.+" - management "org.seleniumhq.selenium:selenium-support:3.+" - management "org.skyscreamer:jsonassert:1.+" - management "org.slf4j:jcl-over-slf4j:1.+" - management "org.slf4j:log4j-over-slf4j:1.+" - management "org.slf4j:slf4j-api:1.+" - management "org.springframework.ldap:spring-ldap-core:latest.release" - management "org.synchronoss.cloud:nio-multipart-parser:1.+" - management "org.thymeleaf:thymeleaf-spring5:3.+" - } + management platform(project(":spring-security-dependencies")) } configurations { diff --git a/saml2/saml2-service-provider/opensaml4/saml2-service-provider-opensaml4.gradle b/saml2/saml2-service-provider/opensaml4/saml2-service-provider-opensaml4.gradle index 906b5cc824..e57080b7e9 100644 --- a/saml2/saml2-service-provider/opensaml4/saml2-service-provider-opensaml4.gradle +++ b/saml2/saml2-service-provider/opensaml4/saml2-service-provider-opensaml4.gradle @@ -40,9 +40,9 @@ repositories { dependencies { constraints { - management("org.opensaml:opensaml-core:4.+") - management("org.opensaml:opensaml-saml-api:4.+") - management("org.opensaml:opensaml-saml-impl:4.+") + management("org.opensaml:opensaml-core:4.1.0") + management("org.opensaml:opensaml-saml-api:4.1.0") + management("org.opensaml:opensaml-saml-impl:4.1.0") } api project(':saml2-service-provider-core')