Skip to content

Commit fcaba61

Browse files
authored
refactor: 불필요한 Authentication 상속 관계 통합 및 이름 변경 (#388)
* refactor: 의미상 중요도에 따라 나열 순서 변경 - '스프링 시큐리티의 용어'에 대해 주석으로 추가 설명을 한다. - 의미상 중요한 것을 위에 위치시킨다. * refactor: 토큰 인증 정보 클래스 이름 변경 - JwtAuthentication -> TokenAuthentication - Jwt라는 구체 기술을 드러내지 않도록 한다. * refactor: 토큰 인증 정보 필터 클래스 이름 변경 - JwtAuthenticationFilter -> TokenAuthenticationFilter - Jwt라는 구체 기술을 드러내지 않도록 한다. * refactor: SiteUserAuthentication을 TokenAuthentication으로 통합 - 불필요하게 상속 관계였던 클래스를 하나로 통합한다. - ExpiredTokenAuthentication와 SiteUserAuthentication을 다형성을 이용해 처리하기 위해 상속 관계를 만들었지만, ExpiredTokenAuthentication의 삭제(#308 PR)에 따라, 상속 관계가 필요하지 않게 되었으므로 통합한다. * test: TokenAuthentication 테스트 코드 작성 - SiteUserAuthentication 테스트 코드의 내용을 토대로 작성한다. * refactor: 토큰 인증 정보 provider 클래스 이름 변경 * refactor: 같은 관심사의 파일이 같은 패키지에 있도록 이동 - authentication 객체와 이를 처리하는 provider가 같은 패키지에 오도록 패키지 이동 * refactor: 구체 기술이 들어간 클래스를 다른 패키지로 분리 - "외부의 구체 기술"관련 코드를 모으는 패키지의 관례적인 이름인 'infrastructure'를 사용한다. * test: 테스트에 이름 추가
1 parent 69365db commit fcaba61

File tree

14 files changed

+145
-144
lines changed

14 files changed

+145
-144
lines changed

src/main/java/com/example/solidconnection/security/authentication/SiteUserAuthentication.java

Lines changed: 0 additions & 16 deletions
This file was deleted.

src/main/java/com/example/solidconnection/security/authentication/JwtAuthentication.java renamed to src/main/java/com/example/solidconnection/security/authentication/TokenAuthentication.java

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,28 +4,36 @@
44
import org.springframework.security.authentication.AbstractAuthenticationToken;
55
import org.springframework.security.core.userdetails.UserDetails;
66

7-
public abstract class JwtAuthentication extends AbstractAuthenticationToken {
7+
public class TokenAuthentication extends AbstractAuthenticationToken {
88

9-
private final String credentials;
9+
private final Object principal; // 인증 주체
1010

11-
private final Object principal;
11+
private final String credentials; // 증명 수단
1212

13-
public JwtAuthentication(String token, Object principal) {
13+
public TokenAuthentication(String token) {
14+
super(Collections.emptyList());
15+
this.principal = null;
16+
this.credentials = token;
17+
setAuthenticated(false);
18+
}
19+
20+
public TokenAuthentication(String token, Object principal) {
1421
super(principal instanceof UserDetails ?
1522
((UserDetails) principal).getAuthorities() :
1623
Collections.emptyList());
17-
this.credentials = token;
1824
this.principal = principal;
25+
this.credentials = token;
26+
setAuthenticated(true);
1927
}
2028

2129
@Override
22-
public Object getCredentials() {
23-
return this.credentials;
30+
public Object getPrincipal() {
31+
return this.principal;
2432
}
2533

2634
@Override
27-
public Object getPrincipal() {
28-
return this.principal;
35+
public Object getCredentials() {
36+
return this.credentials;
2937
}
3038

3139
public final String getToken() {

src/main/java/com/example/solidconnection/security/provider/SiteUserAuthenticationProvider.java renamed to src/main/java/com/example/solidconnection/security/authentication/TokenAuthenticationProvider.java

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
1-
package com.example.solidconnection.security.provider;
1+
package com.example.solidconnection.security.authentication;
22

33
import com.example.solidconnection.auth.service.TokenProvider;
4-
import com.example.solidconnection.security.authentication.JwtAuthentication;
5-
import com.example.solidconnection.security.authentication.SiteUserAuthentication;
64
import com.example.solidconnection.security.userdetails.SiteUserDetails;
75
import com.example.solidconnection.security.userdetails.SiteUserDetailsService;
86
import lombok.RequiredArgsConstructor;
@@ -13,23 +11,23 @@
1311

1412
@Component
1513
@RequiredArgsConstructor
16-
public class SiteUserAuthenticationProvider implements AuthenticationProvider {
14+
public class TokenAuthenticationProvider implements AuthenticationProvider {
1715

1816
private final SiteUserDetailsService siteUserDetailsService;
1917
private final TokenProvider tokenProvider;
2018

2119
@Override
2220
public Authentication authenticate(Authentication auth) throws AuthenticationException {
23-
JwtAuthentication jwtAuth = (JwtAuthentication) auth;
24-
String token = jwtAuth.getToken();
21+
TokenAuthentication tokenAuth = (TokenAuthentication) auth;
22+
String token = tokenAuth.getToken();
2523

2624
String username = tokenProvider.parseSubject(token);
2725
SiteUserDetails userDetails = (SiteUserDetails) siteUserDetailsService.loadUserByUsername(username);
28-
return new SiteUserAuthentication(token, userDetails);
26+
return new TokenAuthentication(token, userDetails);
2927
}
3028

3129
@Override
3230
public boolean supports(Class<?> authentication) {
33-
return SiteUserAuthentication.class.isAssignableFrom(authentication);
31+
return TokenAuthentication.class.isAssignableFrom(authentication);
3432
}
3533
}
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.example.solidconnection.security.config;
22

3-
import com.example.solidconnection.security.provider.SiteUserAuthenticationProvider;
3+
import com.example.solidconnection.security.authentication.TokenAuthenticationProvider;
44
import lombok.RequiredArgsConstructor;
55
import org.springframework.context.annotation.Bean;
66
import org.springframework.context.annotation.Configuration;
@@ -11,12 +11,12 @@
1111
@Configuration
1212
public class AuthenticationManagerConfig {
1313

14-
private final SiteUserAuthenticationProvider siteUserAuthenticationProvider;
14+
private final TokenAuthenticationProvider tokenAuthenticationProvider;
1515

1616
@Bean
1717
public AuthenticationManager authenticationManager() {
1818
return new ProviderManager(
19-
siteUserAuthenticationProvider
19+
tokenAuthenticationProvider
2020
);
2121
}
2222
}

src/main/java/com/example/solidconnection/security/config/SecurityConfiguration.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import com.example.solidconnection.common.exception.CustomAccessDeniedHandler;
66
import com.example.solidconnection.common.exception.CustomAuthenticationEntryPoint;
77
import com.example.solidconnection.security.filter.ExceptionHandlerFilter;
8-
import com.example.solidconnection.security.filter.JwtAuthenticationFilter;
8+
import com.example.solidconnection.security.filter.TokenAuthenticationFilter;
99
import com.example.solidconnection.security.filter.SignOutCheckFilter;
1010
import lombok.RequiredArgsConstructor;
1111
import org.springframework.context.annotation.Bean;
@@ -30,7 +30,7 @@ public class SecurityConfiguration {
3030
private final CorsProperties corsProperties;
3131
private final ExceptionHandlerFilter exceptionHandlerFilter;
3232
private final SignOutCheckFilter signOutCheckFilter;
33-
private final JwtAuthenticationFilter jwtAuthenticationFilter;
33+
private final TokenAuthenticationFilter tokenAuthenticationFilter;
3434
private final CustomAuthenticationEntryPoint customAuthenticationEntryPoint;
3535
private final CustomAccessDeniedHandler customAccessDeniedHandler;
3636

@@ -69,8 +69,8 @@ public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
6969
.authenticationEntryPoint(customAuthenticationEntryPoint)
7070
.accessDeniedHandler(customAccessDeniedHandler)
7171
)
72-
.addFilterBefore(jwtAuthenticationFilter, BasicAuthenticationFilter.class)
73-
.addFilterBefore(signOutCheckFilter, JwtAuthenticationFilter.class)
72+
.addFilterBefore(tokenAuthenticationFilter, BasicAuthenticationFilter.class)
73+
.addFilterBefore(signOutCheckFilter, TokenAuthenticationFilter.class)
7474
.addFilterBefore(exceptionHandlerFilter, SignOutCheckFilter.class)
7575
.build();
7676
}

src/main/java/com/example/solidconnection/security/filter/SignOutCheckFilter.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import static com.example.solidconnection.common.exception.ErrorCode.USER_ALREADY_SIGN_OUT;
44

55
import com.example.solidconnection.common.exception.CustomException;
6+
import com.example.solidconnection.security.infrastructure.AuthorizationHeaderParser;
67
import jakarta.servlet.FilterChain;
78
import jakarta.servlet.ServletException;
89
import jakarta.servlet.http.HttpServletRequest;

src/main/java/com/example/solidconnection/security/filter/JwtAuthenticationFilter.java renamed to src/main/java/com/example/solidconnection/security/filter/TokenAuthenticationFilter.java

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.example.solidconnection.security.filter;
22

3-
import com.example.solidconnection.security.authentication.JwtAuthentication;
4-
import com.example.solidconnection.security.authentication.SiteUserAuthentication;
3+
import com.example.solidconnection.security.authentication.TokenAuthentication;
4+
import com.example.solidconnection.security.infrastructure.AuthorizationHeaderParser;
55
import jakarta.servlet.FilterChain;
66
import jakarta.servlet.ServletException;
77
import jakarta.servlet.http.HttpServletRequest;
@@ -19,7 +19,7 @@
1919

2020
@Component
2121
@RequiredArgsConstructor
22-
public class JwtAuthenticationFilter extends OncePerRequestFilter {
22+
public class TokenAuthenticationFilter extends OncePerRequestFilter {
2323

2424
private final AuthenticationManager authenticationManager;
2525
private final AuthorizationHeaderParser authorizationHeaderParser;
@@ -34,14 +34,10 @@ public void doFilterInternal(@NonNull HttpServletRequest request,
3434
return;
3535
}
3636

37-
JwtAuthentication authToken = createAuthentication(token.get());
37+
TokenAuthentication authToken = new TokenAuthentication(token.get());
3838
Authentication auth = authenticationManager.authenticate(authToken);
3939
SecurityContextHolder.getContext().setAuthentication(auth);
4040

4141
filterChain.doFilter(request, response);
4242
}
43-
44-
private JwtAuthentication createAuthentication(String token) {
45-
return new SiteUserAuthentication(token);
46-
}
4743
}

src/main/java/com/example/solidconnection/security/filter/AuthorizationHeaderParser.java renamed to src/main/java/com/example/solidconnection/security/infrastructure/AuthorizationHeaderParser.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.example.solidconnection.security.filter;
1+
package com.example.solidconnection.security.infrastructure;
22

33
import jakarta.servlet.http.HttpServletRequest;
44
import java.util.Optional;

src/test/java/com/example/solidconnection/common/resolver/AuthorizedUserResolverTest.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,12 @@
33
import static com.example.solidconnection.common.exception.ErrorCode.AUTHENTICATION_FAILED;
44
import static org.assertj.core.api.Assertions.assertThat;
55
import static org.assertj.core.api.Assertions.assertThatCode;
6+
import static org.junit.jupiter.api.Assertions.assertAll;
67
import static org.mockito.BDDMockito.given;
78
import static org.mockito.Mockito.mock;
89

910
import com.example.solidconnection.common.exception.CustomException;
10-
import com.example.solidconnection.security.authentication.SiteUserAuthentication;
11+
import com.example.solidconnection.security.authentication.TokenAuthentication;
1112
import com.example.solidconnection.security.userdetails.SiteUserDetails;
1213
import com.example.solidconnection.siteuser.domain.SiteUser;
1314
import com.example.solidconnection.siteuser.fixture.SiteUserFixture;
@@ -87,8 +88,8 @@ class security_context_에_저장된_사용자가_없는_경우 {
8788
}
8889
}
8990

90-
private SiteUserAuthentication createAuthenticationWithUser(SiteUser siteUser) {
91+
private TokenAuthentication createAuthenticationWithUser(SiteUser siteUser) {
9192
SiteUserDetails userDetails = new SiteUserDetails(siteUser);
92-
return new SiteUserAuthentication("token", userDetails);
93+
return new TokenAuthentication("token", userDetails);
9394
}
9495
}

src/test/java/com/example/solidconnection/security/authentication/SiteUserAuthenticationTest.java

Lines changed: 0 additions & 70 deletions
This file was deleted.

0 commit comments

Comments
 (0)