Skip to content

Commit 3386e07

Browse files
c-ariannajzheaux
authored andcommitted
Fix typos in SAML 2.0 Documentation
- Fix wrong docs link in Servlet - SAML2 Log In Overview - Fix examples in Servlet - SAML2 Authentication Responses - Fix examples in Servlet - SAML2 Logout Signed-off-by: arianna <arianna.comi03@gmail.com>
1 parent 10490a7 commit 3386e07

3 files changed

Lines changed: 64 additions & 43 deletions

File tree

docs/modules/ROOT/pages/servlet/saml2/login/authentication.adoc

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -270,12 +270,13 @@ class MyUserDetailsResponseAuthenticationConverter implements Converter<Response
270270
@Override
271271
public Saml2Authentication convert(ResponseToken responseToken) {
272272
Saml2Authentication authentication = this.delegate.convert(responseToken); <1>
273-
UserDetails principal = this.userDetailsService.loadByUsername(username); <2>
273+
String username = authentication.getName();
274+
UserDetails user = this.userDetailsService.loadUserByUsername(username); <2>
274275
String saml2Response = authentication.getSaml2Response();
275276
Saml2ResponseAssertionAccessor assertion = new OpenSamlResponseAssertionAccessor(
276-
saml2Response, CollectionUtils.getFirst(response.getAssertions()));
277-
Collection<GrantedAuthority> authorities = principal.getAuthorities();
278-
return new Saml2AssertionAuthentication(userDetails, assertion, authorities); <3>
277+
saml2Response, CollectionUtils.getFirst(responseToken.getResponse().getAssertions()));
278+
Collection<GrantedAuthority> authorities = user.getAuthorities();
279+
return new Saml2AssertionAuthentication(user, assertion, authorities); <3>
279280
}
280281
281282
}
@@ -286,18 +287,19 @@ Kotlin::
286287
[source,kotlin,role="secondary"]
287288
----
288289
@Component
289-
open class MyUserDetailsResponseAuthenticationConverter(val delegate: ResponseAuthenticationConverter,
290-
UserDetailsService userDetailsService): Converter<ResponseToken, Saml2Authentication> {
290+
open class MyUserDetailsResponseAuthenticationConverter(private val userDetailsService: UserDetailsService) : Converter<ResponseToken, Saml2Authentication> {
291291
292-
@Override
293-
open fun convert(responseToken: ResponseToken): Saml2Authentication {
292+
private val delegate = ResponseAuthenticationConverter()
293+
294+
override fun convert(responseToken: ResponseToken): Saml2Authentication {
294295
val authentication = this.delegate.convert(responseToken) <1>
295-
val principal = this.userDetailsService.loadByUsername(username) <2>
296-
val saml2Response = authentication.getSaml2Response()
296+
val username = authentication.name
297+
val userDetails = this.userDetailsService.loadUserByUsername(username) <2>
298+
val saml2Response = authentication.saml2Response
297299
val assertion = OpenSamlResponseAssertionAccessor(
298-
saml2Response, CollectionUtils.getFirst(response.getAssertions()))
300+
saml2Response, responseToken.response.assertions.firstOrNull())
299301
val authorities = principal.getAuthorities()
300-
return Saml2AssertionAuthentication(userDetails, assertion, authorities) <3>
302+
return Saml2AssertionAuthentication(userDetails, assertion, userDetails.authorities) <3>
301303
}
302304
303305
}

docs/modules/ROOT/pages/servlet/saml2/login/overview.adoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ If any signature is invalid, authentication fails.
215215
Also, if neither the response nor the assertions have signatures, authentication fails.
216216
Either the response or all the assertions must have signatures.
217217

218-
image:{icondir}/number_7.png[] Then, the provider xref:servlet/saml2/login/authentication.adoc#servlet-saml2login-opensamlauthenticationprovider-decryption[,]decrypts any `EncryptedID` or `EncryptedAttribute` elements].
218+
image:{icondir}/number_7.png[] Then, the provider xref:servlet/saml2/login/authentication.adoc#servlet-saml2login-opensamlauthenticationprovider-decryption[decrypts any `EncryptedID` or `EncryptedAttribute` elements].
219219
If any decryptions fail, authentication fails.
220220

221221
image:{icondir}/number_8.png[] Next, the provider validates each assertion's `ExpiresAt` and `NotBefore` timestamps, the `<Subject>` and any `<AudienceRestriction>` conditions.
@@ -1039,4 +1039,4 @@ You can see a completed example of this in {gh-samples-url}/servlet/spring-boot/
10391039

10401040
In the event that you are migrating from the Spring Security SAML Extension, there may be some benefit to configuring your application to use the SAML Extension URI defaults.
10411041

1042-
For more information on this, please see {gh-samples-url}/servlet/spring-boot/java/saml2/custom-urls[our `custom-urls` sample] and {gh-samples-url}/servlet/spring-boot/java/saml2/saml-extension-federation[our `saml-extension-federation` sample].
1042+
For more information on this, please see {gh-samples-url}/servlet/spring-boot/java/saml2/saml-extension-urls[our `saml-extension-urls` sample] and {gh-samples-url}/servlet/spring-boot/java/saml2/saml-extension-federation[our `saml-extension-federation` sample].

docs/modules/ROOT/pages/servlet/saml2/logout.adoc

Lines changed: 48 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -439,14 +439,14 @@ Java::
439439
----
440440
@Bean
441441
public Saml2LogoutResponseResolver logoutResponseResolver(RelyingPartyRegistrationRepository registrations) {
442-
OpenSaml5LogoutResponseResolver logoutRequestResolver =
442+
OpenSaml5LogoutResponseResolver resolver =
443443
new OpenSaml5LogoutResponseResolver(registrations);
444-
logoutRequestResolver.setParametersConsumer((parameters) -> {
444+
resolver.setParametersConsumer((parameters) -> {
445445
if (checkOtherPrevailingConditions(parameters.getRequest())) {
446-
parameters.getLogoutRequest().getStatus().getStatusCode().setCode(StatusCode.PARTIAL_LOGOUT);
446+
parameters.getLogoutResponse().getStatus().getStatusCode().setCode(StatusCode.PARTIAL_LOGOUT);
447447
}
448448
});
449-
return logoutRequestResolver;
449+
return resolver;
450450
}
451451
----
452452
@@ -456,13 +456,13 @@ Kotlin::
456456
----
457457
@Bean
458458
open fun logoutResponseResolver(registrations: RelyingPartyRegistrationRepository?): Saml2LogoutResponseResolver {
459-
val logoutRequestResolver = OpenSaml5LogoutResponseResolver(registrations)
460-
logoutRequestResolver.setParametersConsumer { LogoutResponseParameters parameters ->
461-
if (checkOtherPrevailingConditions(parameters.getRequest())) {
462-
parameters.getLogoutRequest().getStatus().getStatusCode().setCode(StatusCode.PARTIAL_LOGOUT)
459+
val resolver = OpenSaml5LogoutResponseResolver(registrations)
460+
resolver.setParametersConsumer { parameters ->
461+
if (checkOtherPrevailingConditions(parameters.request)) {
462+
parameters.logoutResponse.status.statusCode.code = StatusCode.PARTIAL_LOGOUT
463463
}
464464
}
465-
return logoutRequestResolver
465+
return resolver
466466
}
467467
----
468468
======
@@ -477,8 +477,8 @@ Java::
477477
----
478478
http
479479
.saml2Logout((saml2) -> saml2
480-
.logoutRequest((request) -> request
481-
.logoutRequestResolver(this.logoutRequestResolver)
480+
.logoutResponse((request) -> request
481+
.logoutResponseResolver(this.logoutResponseResolver)
482482
)
483483
);
484484
----
@@ -489,8 +489,8 @@ Kotlin::
489489
----
490490
http {
491491
saml2Logout {
492-
logoutRequest {
493-
logoutRequestResolver = this.logoutRequestResolver
492+
logoutResponse {
493+
logoutResponseResolver = logoutResponseResolver
494494
}
495495
}
496496
}
@@ -513,12 +513,17 @@ public class MyOpenSamlLogoutRequestValidator implements Saml2LogoutRequestValid
513513
private final Saml2LogoutRequestValidator delegate = new OpenSaml5LogoutRequestValidator();
514514
515515
@Override
516-
public Saml2LogoutRequestValidator logout(Saml2LogoutRequestValidatorParameters parameters) {
516+
public Saml2LogoutValidatorResult validate(Saml2LogoutRequestValidatorParameters parameters) {
517517
// verify signature, issuer, destination, and principal name
518-
Saml2LogoutValidatorResult result = delegate.authenticate(authentication);
518+
Saml2LogoutValidatorResult result = delegate.validate(authentication);
519519
520-
LogoutRequest logoutRequest = // ... parse using OpenSAML
520+
if(result.hasErrors()){
521+
return result;
522+
}
523+
521524
// perform custom validation
525+
526+
return result;
522527
}
523528
}
524529
----
@@ -528,16 +533,21 @@ Kotlin::
528533
[source,kotlin,role="secondary"]
529534
----
530535
@Component
531-
open class MyOpenSamlLogoutRequestValidator: Saml2LogoutRequestValidator {
536+
open class MyOpenSamlLogoutRequestValidator : Saml2LogoutRequestValidator {
532537
private val delegate = OpenSaml5LogoutRequestValidator()
533538
534539
@Override
535-
fun logout(parameters: Saml2LogoutRequestValidatorParameters): Saml2LogoutRequestValidator {
540+
fun validate(parameters: Saml2LogoutRequestValidatorParameters): Saml2LogoutValidatorResult {
536541
// verify signature, issuer, destination, and principal name
537-
val result = delegate.authenticate(authentication)
542+
val result = delegate.validate(authentication)
543+
544+
if (result.hasErrors()) {
545+
return result
546+
}
538547
539-
val logoutRequest: LogoutRequest = // ... parse using OpenSAML
540548
// perform custom validation
549+
550+
return result
541551
}
542552
}
543553
----
@@ -589,12 +599,17 @@ public class MyOpenSamlLogoutResponseValidator implements Saml2LogoutResponseVal
589599
private final Saml2LogoutResponseValidator delegate = new OpenSaml5LogoutResponseValidator();
590600
591601
@Override
592-
public Saml2LogoutValidatorResult logout(Saml2LogoutResponseValidatorParameters parameters) {
602+
public Saml2LogoutValidatorResult validate(Saml2LogoutResponseValidatorParameters parameters) {
593603
// verify signature, issuer, destination, and status
594-
Saml2LogoutValidatorResult result = delegate.authenticate(parameters);
604+
Saml2LogoutValidatorResult result = delegate.validate(parameters);
605+
606+
if (result.hasErrors()) {
607+
return result;
608+
}
595609
596-
LogoutResponse logoutResponse = // ... parse using OpenSAML
597610
// perform custom validation
611+
612+
return result;
598613
}
599614
}
600615
----
@@ -604,16 +619,20 @@ Kotlin::
604619
[source,kotlin,role="secondary"]
605620
----
606621
@Component
607-
open class MyOpenSamlLogoutResponseValidator: Saml2LogoutResponseValidator {
622+
open class MyOpenSamlLogoutResponseValidator : Saml2LogoutResponseValidator {
608623
private val delegate = OpenSaml5LogoutResponseValidator()
609624
610-
@Override
611-
fun logout(parameters: Saml2LogoutResponseValidatorParameters): Saml2LogoutResponseValidator {
625+
override fun validate(parameters: Saml2LogoutResponseValidatorParameters): Saml2LogoutValidatorResult {
612626
// verify signature, issuer, destination, and status
613-
val result = delegate.authenticate(authentication)
627+
val result = delegate.validate(authentication)
614628
615-
val logoutResponse: LogoutResponse = // ... parse using OpenSAML
629+
if (result.hasErrors()) {
630+
return result
631+
}
632+
616633
// perform custom validation
634+
635+
return result
617636
}
618637
}
619638
----
@@ -630,7 +649,7 @@ Java::
630649
http
631650
.saml2Logout((saml2) -> saml2
632651
.logoutResponse((response) -> response
633-
.logoutResponseAuthenticator(myOpenSamlLogoutResponseAuthenticator)
652+
.logoutResponseValidator(myOpenSamlLogoutResponseValidator)
634653
)
635654
);
636655
----

0 commit comments

Comments
 (0)