43
43
import org .springframework .security .web .authentication .AuthenticationSuccessHandler ;
44
44
import org .springframework .security .web .context .SecurityContextRepository ;
45
45
import org .springframework .security .web .savedrequest .HttpSessionRequestCache ;
46
+ import org .springframework .security .web .servlet .util .matcher .PathPatternRequestMatcher ;
46
47
import org .springframework .test .util .ReflectionTestUtils ;
47
48
48
49
import static org .assertj .core .api .Assertions .assertThat ;
@@ -78,7 +79,7 @@ public void testGettersSetters() {
78
79
79
80
@ Test
80
81
public void testNormalOperation () throws Exception {
81
- MockHttpServletRequest request = new MockHttpServletRequest ();
82
+ MockHttpServletRequest request = new MockHttpServletRequest ("POST" , "/login/cas" );
82
83
request .setServletPath ("/login/cas" );
83
84
request .addParameter ("ticket" , "ST-0-ER94xMJmn6pha35CQRoZ" );
84
85
CasAuthenticationFilter filter = new CasAuthenticationFilter ();
@@ -103,7 +104,7 @@ public void testRequiresAuthenticationFilterProcessUrl() {
103
104
String url = "/login/cas" ;
104
105
CasAuthenticationFilter filter = new CasAuthenticationFilter ();
105
106
filter .setFilterProcessesUrl (url );
106
- MockHttpServletRequest request = new MockHttpServletRequest ();
107
+ MockHttpServletRequest request = new MockHttpServletRequest ("POST" , url );
107
108
MockHttpServletResponse response = new MockHttpServletResponse ();
108
109
request .setServletPath (url );
109
110
assertThat (filter .requiresAuthentication (request , response )).isTrue ();
@@ -132,10 +133,11 @@ public void testRequiresAuthenticationAuthAll() {
132
133
CasAuthenticationFilter filter = new CasAuthenticationFilter ();
133
134
filter .setFilterProcessesUrl (url );
134
135
filter .setServiceProperties (properties );
135
- MockHttpServletRequest request = new MockHttpServletRequest ();
136
+ MockHttpServletRequest request = new MockHttpServletRequest ("POST" , url );
136
137
MockHttpServletResponse response = new MockHttpServletResponse ();
137
138
request .setServletPath (url );
138
139
assertThat (filter .requiresAuthentication (request , response )).isTrue ();
140
+ request = new MockHttpServletRequest ("POST" , "/other" );
139
141
request .setServletPath ("/other" );
140
142
assertThat (filter .requiresAuthentication (request , response )).isFalse ();
141
143
request .setParameter (properties .getArtifactParameter (), "value" );
@@ -170,7 +172,7 @@ public void testDoFilterAuthenticateAll() throws Exception {
170
172
given (manager .authenticate (any (Authentication .class ))).willReturn (authentication );
171
173
ServiceProperties serviceProperties = new ServiceProperties ();
172
174
serviceProperties .setAuthenticateAllArtifacts (true );
173
- MockHttpServletRequest request = new MockHttpServletRequest ();
175
+ MockHttpServletRequest request = new MockHttpServletRequest ("POST" , "/authenticate" );
174
176
request .setParameter ("ticket" , "ST-1-123" );
175
177
request .setServletPath ("/authenticate" );
176
178
MockHttpServletResponse response = new MockHttpServletResponse ();
@@ -266,4 +268,20 @@ void successfulAuthenticationWhenSecurityContextHolderStrategySetThenUses() thro
266
268
verify (securityContextRepository ).setContext (any (SecurityContext .class ));
267
269
}
268
270
271
+ @ Test
272
+ public void requiresAuthenticationWhenProxyRequestMatcherThenMatches () {
273
+ CasAuthenticationFilter filter = new CasAuthenticationFilter ();
274
+ MockHttpServletRequest request = new MockHttpServletRequest ("GET" , "/pgtCallback" );
275
+ MockHttpServletResponse response = new MockHttpServletResponse ();
276
+ request .setServletPath ("/pgtCallback" );
277
+ assertThat (filter .requiresAuthentication (request , response )).isFalse ();
278
+ filter .setProxyReceptorMatcher (PathPatternRequestMatcher .withDefaults ().matcher (request .getServletPath ()));
279
+ assertThat (filter .requiresAuthentication (request , response )).isFalse ();
280
+ filter .setProxyGrantingTicketStorage (mock (ProxyGrantingTicketStorage .class ));
281
+ assertThat (filter .requiresAuthentication (request , response )).isTrue ();
282
+ request .setRequestURI ("/other" );
283
+ request .setServletPath ("/other" );
284
+ assertThat (filter .requiresAuthentication (request , response )).isFalse ();
285
+ }
286
+
269
287
}
0 commit comments