-
Notifications
You must be signed in to change notification settings - Fork 737
Commit
Issue gh-127
- Loading branch information
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
= SAML 2.0 Login & Logout Sample | ||
|
||
This guide provides instructions on setting up this SAML 2.0 Login & Logout sample application. | ||
It uses https://simplesamlphp.org/[SimpleSAMLphp] as its asserting party. | ||
|
||
The sample application uses Spring Boot and the `spring-security-saml2-service-provider` | ||
module which is new in Spring Security 5.2. | ||
|
||
The https://docs.spring.io/spring-security/reference/servlet/saml2/logout.html[SAML 2.0 Logout feature] is new in Spring Security 5.6. | ||
|
||
== Goals | ||
|
||
=== SAML 2.0 Login | ||
|
||
`saml2Login()` provides a very simple implementation of a Service Provider that can receive a SAML 2.0 Response via the HTTP-POST and HTTP-REDIRECT bindings against the https://developer.okta.com/docs/guides/build-sso-integration/saml2/main/[Okta SAML 2.0 IDP] reference implementation. | ||
|
||
The following features are implemented in the MVP: | ||
|
||
1. Receive and validate a SAML 2.0 Response containing an assertion, and create a corresponding authentication in Spring Security | ||
2. Send a SAML 2.0 AuthNRequest to an Identity Provider | ||
3. Provide a framework for components used in SAML 2.0 authentication that can be swapped by configuration | ||
4. Work against the Okta SAML 2.0 IDP reference implementation | ||
|
||
=== SAML 2.0 Single Logout | ||
|
||
`saml2Logout()` supports RP- and AP-initiated SAML 2.0 Single Logout via the HTTP-POST and HTTP-REDIRECT bindings against the https://developer.okta.com/docs/guides/build-sso-integration/saml2/main/[Okta SAML 2.0 IDP] reference implementation. | ||
|
||
On this sample, the SAML 2.0 Logout is using the HTTP-POST binding. | ||
|
||
You can refer to the https://docs.spring.io/spring-security/reference/servlet/saml2/logout.html[reference documentation] for more details about the RP- and AP-initiated SAML 2.0 Logout. | ||
|
||
== Run the Sample | ||
|
||
=== Start up the Sample Boot Application | ||
``` | ||
./gradlew :servlet:spring-boot:java:saml2:login:bootRun | ||
``` | ||
|
||
=== Open a Browser | ||
|
||
http://localhost:8080/ | ||
|
||
You will be redirect to the Okta SAML 2.0 IDP | ||
|
||
=== Type in your credentials | ||
|
||
``` | ||
User: [email protected] | ||
Password: 12345678 | ||
``` | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
plugins { | ||
alias(libs.plugins.org.springframework.boot) | ||
alias(libs.plugins.io.spring.dependency.management) | ||
id "nebula.integtest" version "8.2.0" | ||
id 'java' | ||
} | ||
|
||
repositories { | ||
mavenCentral() | ||
maven { url "https://repo.spring.io/milestone" } | ||
maven { url "https://repo.spring.io/snapshot" } | ||
} | ||
|
||
|
||
dependencies { | ||
implementation 'org.springframework.boot:spring-boot-starter' | ||
runtimeOnly "org.springframework.boot:spring-boot-docker-compose" | ||
} | ||
|
||
tasks.withType(Test).configureEach { | ||
useJUnitPlatform() | ||
|
||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
version=6.1.1 | ||
spring-security.version=6.4.0-SNAPSHOT | ||
org.gradle.jvmargs=-Xmx6g -XX:+HeapDumpOnOutOfMemoryError | ||
org.gradle.caching=true |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
../../../../../../gradle/libs.versions.toml |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
distributionBase=GRADLE_USER_HOME | ||
distributionPath=wrapper/dists | ||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip | ||
networkTimeout=10000 | ||
zipStoreBase=GRADLE_USER_HOME | ||
zipStorePath=wrapper/dists |