Skip to content

Commit c3ae1f8

Browse files
committed
feat/OPS-324 : session 등록을 위한 OAuth2LoginSourceFilter 클래스 추가.
1 parent ce0eb5a commit c3ae1f8

File tree

4 files changed

+42
-5
lines changed

4 files changed

+42
-5
lines changed
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.tuna.zoopzoop.backend.domain.auth.resolver;
1+
package org.tuna.zoopzoop.backend.domain.auth.global;
22

33
import jakarta.servlet.http.HttpServletRequest;
44
import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository;
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package org.tuna.zoopzoop.backend.domain.auth.global;
2+
3+
import jakarta.servlet.FilterChain;
4+
import jakarta.servlet.ServletException;
5+
import jakarta.servlet.http.HttpServletRequest;
6+
import jakarta.servlet.http.HttpServletResponse;
7+
import org.springframework.stereotype.Component;
8+
import org.springframework.web.filter.OncePerRequestFilter;
9+
10+
import java.io.IOException;
11+
12+
@Component
13+
public class OAuth2LoginSourceFilter extends OncePerRequestFilter {
14+
@Override
15+
protected void doFilterInternal(
16+
HttpServletRequest request,
17+
HttpServletResponse response,
18+
FilterChain filterChain)
19+
throws ServletException, IOException {
20+
21+
String uri = request.getRequestURI();
22+
String source = request.getParameter("source");
23+
24+
// OAuth2 로그인 시작 URL이면 세션에 저장
25+
if (uri.startsWith("/oauth2/authorization") && source != null) {
26+
request.getSession().setAttribute("loginSource", source);
27+
}
28+
29+
filterChain.doFilter(request, response);
30+
}
31+
}

src/main/java/org/tuna/zoopzoop/backend/domain/auth/handler/OAuth2SuccessHandler.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,9 @@ public void onAuthenticationSuccess(HttpServletRequest request, HttpServletRespo
6060
String accessToken = jwtUtil.generateToken(member);
6161
String refreshToken = jwtUtil.generateRefreshToken(member);
6262

63-
String state = request.getParameter("state");
64-
boolean isExtension = state != null && state.contains("source:extension");
63+
String source = (String) request.getSession().getAttribute("loginSource");
64+
boolean isExtension = "extension".equals(source);
65+
6566

6667
// 확장 프로그램에서 로그인 했을 경우.
6768
if(isExtension){

src/main/java/org/tuna/zoopzoop/backend/global/security/SecurityConfig.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,12 @@
55
import org.springframework.context.annotation.Configuration;
66
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
77
import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository;
8+
import org.springframework.security.oauth2.client.web.OAuth2AuthorizationRequestRedirectFilter;
89
import org.springframework.security.web.SecurityFilterChain;
910
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
11+
import org.tuna.zoopzoop.backend.domain.auth.global.CustomOAuth2AuthorizationRequestResolver;
12+
import org.tuna.zoopzoop.backend.domain.auth.global.OAuth2LoginSourceFilter;
1013
import org.tuna.zoopzoop.backend.domain.auth.handler.OAuth2SuccessHandler;
11-
import org.tuna.zoopzoop.backend.domain.auth.resolver.CustomOAuth2AuthorizationRequestResolver;
1214
import org.tuna.zoopzoop.backend.domain.auth.service.CustomOAuth2UserService;
1315
import org.tuna.zoopzoop.backend.global.security.jwt.CustomAuthenticationEntryPoint;
1416
import org.tuna.zoopzoop.backend.global.security.jwt.JwtAuthenticationFilter;
@@ -21,6 +23,7 @@ public class SecurityConfig {
2123
private final CustomOAuth2UserService customOAuth2UserService;
2224
private final OAuth2SuccessHandler oAuth2SuccessHandler;
2325
private final ClientRegistrationRepository clientRegistrationRepository;
26+
private final OAuth2LoginSourceFilter oauth2LoginSourceFilter;
2427

2528
@Bean
2629
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
@@ -46,6 +49,7 @@ public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Excepti
4649
).permitAll()
4750
.anyRequest().authenticated()
4851
)
52+
.addFilterBefore(oauth2LoginSourceFilter, OAuth2AuthorizationRequestRedirectFilter.class)
4953
.oauth2Login(oauth2 -> oauth2
5054
.authorizationEndpoint(authorization -> authorization
5155
.authorizationRequestResolver(
@@ -68,7 +72,8 @@ public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Excepti
6872
.exceptionHandling(ex -> ex
6973
.authenticationEntryPoint(customAuthenticationEntryPoint)
7074
)
71-
.addFilterBefore(jwtAuthenticationFilter, UsernamePasswordAuthenticationFilter.class);;
75+
.addFilterBefore(jwtAuthenticationFilter, UsernamePasswordAuthenticationFilter.class);
76+
7277
return http.build();
7378
}
7479
}

0 commit comments

Comments
 (0)