|
@@ -22,7 +22,6 @@ import jakarta.servlet.FilterChain;
|
|
import jakarta.servlet.ServletRequest;
|
|
import jakarta.servlet.ServletRequest;
|
|
import jakarta.servlet.ServletResponse;
|
|
import jakarta.servlet.ServletResponse;
|
|
import jakarta.servlet.http.HttpServletResponse;
|
|
import jakarta.servlet.http.HttpServletResponse;
|
|
-import org.apache.commons.codec.binary.Base64;
|
|
|
|
import org.junit.jupiter.api.AfterEach;
|
|
import org.junit.jupiter.api.AfterEach;
|
|
import org.junit.jupiter.api.BeforeEach;
|
|
import org.junit.jupiter.api.BeforeEach;
|
|
import org.junit.jupiter.api.Test;
|
|
import org.junit.jupiter.api.Test;
|
|
@@ -38,6 +37,7 @@ import org.springframework.security.core.Authentication;
|
|
import org.springframework.security.core.authority.AuthorityUtils;
|
|
import org.springframework.security.core.authority.AuthorityUtils;
|
|
import org.springframework.security.core.context.SecurityContext;
|
|
import org.springframework.security.core.context.SecurityContext;
|
|
import org.springframework.security.core.context.SecurityContextHolder;
|
|
import org.springframework.security.core.context.SecurityContextHolder;
|
|
|
|
+import org.springframework.security.test.web.CodecTestUtils;
|
|
import org.springframework.security.web.authentication.WebAuthenticationDetails;
|
|
import org.springframework.security.web.authentication.WebAuthenticationDetails;
|
|
import org.springframework.security.web.context.SecurityContextRepository;
|
|
import org.springframework.security.web.context.SecurityContextRepository;
|
|
import org.springframework.web.util.WebUtils;
|
|
import org.springframework.web.util.WebUtils;
|
|
@@ -104,7 +104,7 @@ public class BasicAuthenticationFilterTests {
|
|
public void testInvalidBasicAuthorizationTokenIsIgnored() throws Exception {
|
|
public void testInvalidBasicAuthorizationTokenIsIgnored() throws Exception {
|
|
String token = "NOT_A_VALID_TOKEN_AS_MISSING_COLON";
|
|
String token = "NOT_A_VALID_TOKEN_AS_MISSING_COLON";
|
|
MockHttpServletRequest request = new MockHttpServletRequest();
|
|
MockHttpServletRequest request = new MockHttpServletRequest();
|
|
- request.addHeader("Authorization", "Basic " + new String(Base64.encodeBase64(token.getBytes())));
|
|
|
|
|
|
+ request.addHeader("Authorization", "Basic " + CodecTestUtils.encodeBase64(token));
|
|
request.setServletPath("/some_file.html");
|
|
request.setServletPath("/some_file.html");
|
|
request.setSession(new MockHttpSession());
|
|
request.setSession(new MockHttpSession());
|
|
final MockHttpServletResponse response = new MockHttpServletResponse();
|
|
final MockHttpServletResponse response = new MockHttpServletResponse();
|
|
@@ -134,7 +134,7 @@ public class BasicAuthenticationFilterTests {
|
|
public void testNormalOperation() throws Exception {
|
|
public void testNormalOperation() throws Exception {
|
|
String token = "rod:koala";
|
|
String token = "rod:koala";
|
|
MockHttpServletRequest request = new MockHttpServletRequest();
|
|
MockHttpServletRequest request = new MockHttpServletRequest();
|
|
- request.addHeader("Authorization", "Basic " + new String(Base64.encodeBase64(token.getBytes())));
|
|
|
|
|
|
+ request.addHeader("Authorization", "Basic " + CodecTestUtils.encodeBase64(token));
|
|
request.setServletPath("/some_file.html");
|
|
request.setServletPath("/some_file.html");
|
|
// Test
|
|
// Test
|
|
assertThat(SecurityContextHolder.getContext().getAuthentication()).isNull();
|
|
assertThat(SecurityContextHolder.getContext().getAuthentication()).isNull();
|
|
@@ -150,7 +150,7 @@ public class BasicAuthenticationFilterTests {
|
|
public void doFilterWhenSchemeLowercaseThenCaseInsensitveMatchWorks() throws Exception {
|
|
public void doFilterWhenSchemeLowercaseThenCaseInsensitveMatchWorks() throws Exception {
|
|
String token = "rod:koala";
|
|
String token = "rod:koala";
|
|
MockHttpServletRequest request = new MockHttpServletRequest();
|
|
MockHttpServletRequest request = new MockHttpServletRequest();
|
|
- request.addHeader("Authorization", "basic " + new String(Base64.encodeBase64(token.getBytes())));
|
|
|
|
|
|
+ request.addHeader("Authorization", "basic " + CodecTestUtils.encodeBase64(token));
|
|
request.setServletPath("/some_file.html");
|
|
request.setServletPath("/some_file.html");
|
|
// Test
|
|
// Test
|
|
assertThat(SecurityContextHolder.getContext().getAuthentication()).isNull();
|
|
assertThat(SecurityContextHolder.getContext().getAuthentication()).isNull();
|
|
@@ -165,7 +165,7 @@ public class BasicAuthenticationFilterTests {
|
|
public void doFilterWhenSchemeMixedCaseThenCaseInsensitiveMatchWorks() throws Exception {
|
|
public void doFilterWhenSchemeMixedCaseThenCaseInsensitiveMatchWorks() throws Exception {
|
|
String token = "rod:koala";
|
|
String token = "rod:koala";
|
|
MockHttpServletRequest request = new MockHttpServletRequest();
|
|
MockHttpServletRequest request = new MockHttpServletRequest();
|
|
- request.addHeader("Authorization", "BaSiC " + new String(Base64.encodeBase64(token.getBytes())));
|
|
|
|
|
|
+ request.addHeader("Authorization", "BaSiC " + CodecTestUtils.encodeBase64(token));
|
|
request.setServletPath("/some_file.html");
|
|
request.setServletPath("/some_file.html");
|
|
assertThat(SecurityContextHolder.getContext().getAuthentication()).isNull();
|
|
assertThat(SecurityContextHolder.getContext().getAuthentication()).isNull();
|
|
FilterChain chain = mock(FilterChain.class);
|
|
FilterChain chain = mock(FilterChain.class);
|
|
@@ -200,7 +200,7 @@ public class BasicAuthenticationFilterTests {
|
|
public void testSuccessLoginThenFailureLoginResultsInSessionLosingToken() throws Exception {
|
|
public void testSuccessLoginThenFailureLoginResultsInSessionLosingToken() throws Exception {
|
|
String token = "rod:koala";
|
|
String token = "rod:koala";
|
|
MockHttpServletRequest request = new MockHttpServletRequest();
|
|
MockHttpServletRequest request = new MockHttpServletRequest();
|
|
- request.addHeader("Authorization", "Basic " + new String(Base64.encodeBase64(token.getBytes())));
|
|
|
|
|
|
+ request.addHeader("Authorization", "Basic " + CodecTestUtils.encodeBase64(token));
|
|
request.setServletPath("/some_file.html");
|
|
request.setServletPath("/some_file.html");
|
|
final MockHttpServletResponse response1 = new MockHttpServletResponse();
|
|
final MockHttpServletResponse response1 = new MockHttpServletResponse();
|
|
FilterChain chain = mock(FilterChain.class);
|
|
FilterChain chain = mock(FilterChain.class);
|
|
@@ -212,7 +212,7 @@ public class BasicAuthenticationFilterTests {
|
|
// NOW PERFORM FAILED AUTHENTICATION
|
|
// NOW PERFORM FAILED AUTHENTICATION
|
|
token = "otherUser:WRONG_PASSWORD";
|
|
token = "otherUser:WRONG_PASSWORD";
|
|
request = new MockHttpServletRequest();
|
|
request = new MockHttpServletRequest();
|
|
- request.addHeader("Authorization", "Basic " + new String(Base64.encodeBase64(token.getBytes())));
|
|
|
|
|
|
+ request.addHeader("Authorization", "Basic " + CodecTestUtils.encodeBase64(token));
|
|
final MockHttpServletResponse response2 = new MockHttpServletResponse();
|
|
final MockHttpServletResponse response2 = new MockHttpServletResponse();
|
|
chain = mock(FilterChain.class);
|
|
chain = mock(FilterChain.class);
|
|
this.filter.doFilter(request, response2, chain);
|
|
this.filter.doFilter(request, response2, chain);
|
|
@@ -228,7 +228,7 @@ public class BasicAuthenticationFilterTests {
|
|
public void testWrongPasswordContinuesFilterChainIfIgnoreFailureIsTrue() throws Exception {
|
|
public void testWrongPasswordContinuesFilterChainIfIgnoreFailureIsTrue() throws Exception {
|
|
String token = "rod:WRONG_PASSWORD";
|
|
String token = "rod:WRONG_PASSWORD";
|
|
MockHttpServletRequest request = new MockHttpServletRequest();
|
|
MockHttpServletRequest request = new MockHttpServletRequest();
|
|
- request.addHeader("Authorization", "Basic " + new String(Base64.encodeBase64(token.getBytes())));
|
|
|
|
|
|
+ request.addHeader("Authorization", "Basic " + CodecTestUtils.encodeBase64(token));
|
|
request.setServletPath("/some_file.html");
|
|
request.setServletPath("/some_file.html");
|
|
request.setSession(new MockHttpSession());
|
|
request.setSession(new MockHttpSession());
|
|
this.filter = new BasicAuthenticationFilter(this.manager);
|
|
this.filter = new BasicAuthenticationFilter(this.manager);
|
|
@@ -244,7 +244,7 @@ public class BasicAuthenticationFilterTests {
|
|
public void testWrongPasswordReturnsForbiddenIfIgnoreFailureIsFalse() throws Exception {
|
|
public void testWrongPasswordReturnsForbiddenIfIgnoreFailureIsFalse() throws Exception {
|
|
String token = "rod:WRONG_PASSWORD";
|
|
String token = "rod:WRONG_PASSWORD";
|
|
MockHttpServletRequest request = new MockHttpServletRequest();
|
|
MockHttpServletRequest request = new MockHttpServletRequest();
|
|
- request.addHeader("Authorization", "Basic " + new String(Base64.encodeBase64(token.getBytes())));
|
|
|
|
|
|
+ request.addHeader("Authorization", "Basic " + CodecTestUtils.encodeBase64(token));
|
|
request.setServletPath("/some_file.html");
|
|
request.setServletPath("/some_file.html");
|
|
request.setSession(new MockHttpSession());
|
|
request.setSession(new MockHttpSession());
|
|
assertThat(this.filter.isIgnoreFailure()).isFalse();
|
|
assertThat(this.filter.isIgnoreFailure()).isFalse();
|
|
@@ -262,7 +262,7 @@ public class BasicAuthenticationFilterTests {
|
|
public void skippedOnErrorDispatch() throws Exception {
|
|
public void skippedOnErrorDispatch() throws Exception {
|
|
String token = "bad:credentials";
|
|
String token = "bad:credentials";
|
|
MockHttpServletRequest request = new MockHttpServletRequest();
|
|
MockHttpServletRequest request = new MockHttpServletRequest();
|
|
- request.addHeader("Authorization", "Basic " + new String(Base64.encodeBase64(token.getBytes())));
|
|
|
|
|
|
+ request.addHeader("Authorization", "Basic " + CodecTestUtils.encodeBase64(token));
|
|
request.setServletPath("/some_file.html");
|
|
request.setServletPath("/some_file.html");
|
|
request.setAttribute(WebUtils.ERROR_REQUEST_URI_ATTRIBUTE, "/error");
|
|
request.setAttribute(WebUtils.ERROR_REQUEST_URI_ATTRIBUTE, "/error");
|
|
MockHttpServletResponse response = new MockHttpServletResponse();
|
|
MockHttpServletResponse response = new MockHttpServletResponse();
|
|
@@ -286,7 +286,7 @@ public class BasicAuthenticationFilterTests {
|
|
String token = "rod:äöü";
|
|
String token = "rod:äöü";
|
|
MockHttpServletRequest request = new MockHttpServletRequest();
|
|
MockHttpServletRequest request = new MockHttpServletRequest();
|
|
request.addHeader("Authorization",
|
|
request.addHeader("Authorization",
|
|
- "Basic " + new String(Base64.encodeBase64(token.getBytes(StandardCharsets.UTF_8))));
|
|
|
|
|
|
+ "Basic " + CodecTestUtils.encodeBase64(token.getBytes(StandardCharsets.UTF_8)));
|
|
request.setServletPath("/some_file.html");
|
|
request.setServletPath("/some_file.html");
|
|
MockHttpServletResponse response = new MockHttpServletResponse();
|
|
MockHttpServletResponse response = new MockHttpServletResponse();
|
|
// Test
|
|
// Test
|
|
@@ -315,7 +315,7 @@ public class BasicAuthenticationFilterTests {
|
|
String token = "rod:äöü";
|
|
String token = "rod:äöü";
|
|
MockHttpServletRequest request = new MockHttpServletRequest();
|
|
MockHttpServletRequest request = new MockHttpServletRequest();
|
|
request.addHeader("Authorization",
|
|
request.addHeader("Authorization",
|
|
- "Basic " + new String(Base64.encodeBase64(token.getBytes(StandardCharsets.ISO_8859_1))));
|
|
|
|
|
|
+ "Basic " + CodecTestUtils.encodeBase64(token.getBytes(StandardCharsets.ISO_8859_1)));
|
|
request.setServletPath("/some_file.html");
|
|
request.setServletPath("/some_file.html");
|
|
MockHttpServletResponse response = new MockHttpServletResponse();
|
|
MockHttpServletResponse response = new MockHttpServletResponse();
|
|
// Test
|
|
// Test
|
|
@@ -344,7 +344,7 @@ public class BasicAuthenticationFilterTests {
|
|
String token = "rod:äöü";
|
|
String token = "rod:äöü";
|
|
MockHttpServletRequest request = new MockHttpServletRequest();
|
|
MockHttpServletRequest request = new MockHttpServletRequest();
|
|
request.addHeader("Authorization",
|
|
request.addHeader("Authorization",
|
|
- "Basic " + new String(Base64.encodeBase64(token.getBytes(StandardCharsets.UTF_8))));
|
|
|
|
|
|
+ "Basic " + CodecTestUtils.encodeBase64(token.getBytes(StandardCharsets.UTF_8)));
|
|
request.setServletPath("/some_file.html");
|
|
request.setServletPath("/some_file.html");
|
|
MockHttpServletResponse response = new MockHttpServletResponse();
|
|
MockHttpServletResponse response = new MockHttpServletResponse();
|
|
// Test
|
|
// Test
|
|
@@ -377,7 +377,7 @@ public class BasicAuthenticationFilterTests {
|
|
this.filter.setSecurityContextRepository(securityContextRepository);
|
|
this.filter.setSecurityContextRepository(securityContextRepository);
|
|
String token = "rod:koala";
|
|
String token = "rod:koala";
|
|
MockHttpServletRequest request = new MockHttpServletRequest();
|
|
MockHttpServletRequest request = new MockHttpServletRequest();
|
|
- request.addHeader("Authorization", "Basic " + new String(Base64.encodeBase64(token.getBytes())));
|
|
|
|
|
|
+ request.addHeader("Authorization", "Basic " + CodecTestUtils.encodeBase64(token));
|
|
request.setServletPath("/some_file.html");
|
|
request.setServletPath("/some_file.html");
|
|
MockHttpServletResponse response = new MockHttpServletResponse();
|
|
MockHttpServletResponse response = new MockHttpServletResponse();
|
|
// Test
|
|
// Test
|