@ -16,6 +16,13 @@
@@ -16,6 +16,13 @@
package org.springframework.security.saml2.provider.service.servlet.filter ;
import java.io.IOException ;
import java.util.function.Function ;
import javax.servlet.FilterChain ;
import javax.servlet.ServletException ;
import javax.servlet.http.HttpServletRequest ;
import javax.servlet.http.HttpServletResponse ;
import org.springframework.http.MediaType ;
import org.springframework.security.saml2.provider.service.authentication.OpenSamlAuthenticationRequestFactory ;
import org.springframework.security.saml2.provider.service.authentication.Saml2AuthenticationRequestContext ;
@ -34,12 +41,6 @@ import org.springframework.web.util.HtmlUtils;
@@ -34,12 +41,6 @@ import org.springframework.web.util.HtmlUtils;
import org.springframework.web.util.UriComponentsBuilder ;
import org.springframework.web.util.UriUtils ;
import javax.servlet.FilterChain ;
import javax.servlet.ServletException ;
import javax.servlet.http.HttpServletRequest ;
import javax.servlet.http.HttpServletResponse ;
import java.io.IOException ;
import static java.lang.String.format ;
import static java.nio.charset.StandardCharsets.ISO_8859_1 ;
import static org.springframework.util.StringUtils.hasText ;
@ -137,22 +138,20 @@ public class Saml2WebSsoAuthenticationRequestFilter extends OncePerRequestFilter
@@ -137,22 +138,20 @@ public class Saml2WebSsoAuthenticationRequestFilter extends OncePerRequestFilter
private Saml2AuthenticationRequestContext createRedirectAuthenticationRequestContext (
RelyingPartyRegistration relyingParty ,
HttpServletRequest request ) {
String localSpEntityId = Saml2ServletUtils . getServiceProviderEntityId ( relyingParty , request ) ;
return Saml2AuthenticationRequestContext
. builder ( )
String applicationUri = Saml2ServletUtils . getApplicationUri ( request ) ;
Function < String , String > resolver = templateResolver ( applicationUri , relyingParty ) ;
String localSpEntityId = resolver . apply ( relyingParty . getLocalEntityIdTemplate ( ) ) ;
String assertionConsumerServiceUrl = resolver . apply ( relyingParty . getAssertionConsumerServiceUrlTemplate ( ) ) ;
return Saml2AuthenticationRequestContext . builder ( )
. issuer ( localSpEntityId )
. relyingPartyRegistration ( relyingParty )
. assertionConsumerServiceUrl (
Saml2ServletUtils . resolveUrlTemplate (
relyingParty . getAssertionConsumerServiceUrlTemplate ( ) ,
Saml2ServletUtils . getApplicationUri ( request ) ,
relyingParty . getProviderDetails ( ) . getEntityId ( ) ,
relyingParty . getRegistrationId ( )
)
)
. assertionConsumerServiceUrl ( assertionConsumerServiceUrl )
. relayState ( request . getParameter ( "RelayState" ) )
. build ( )
;
. build ( ) ;
}
private Function < String , String > templateResolver ( String applicationUri , RelyingPartyRegistration relyingParty ) {
return template - > Saml2ServletUtils . resolveUrlTemplate ( template , applicationUri , relyingParty ) ;
}
private String htmlEscape ( String value ) {