11package com .mycom .socket .auth .jwt ;
22
3- import com .mycom .socket .auth .config .JWTProperties ;
43import com .mycom .socket .auth .service .MemberDetailsService ;
54import jakarta .servlet .FilterChain ;
65import jakarta .servlet .ServletException ;
7- import jakarta .servlet .http .Cookie ;
86import jakarta .servlet .http .HttpServletRequest ;
97import jakarta .servlet .http .HttpServletResponse ;
108import lombok .RequiredArgsConstructor ;
2119@ RequiredArgsConstructor
2220public class JWTFilter extends OncePerRequestFilter {
2321
24- private final JWTProperties jwtProperties ;
22+
2523 private final JWTUtil jwtUtil ;
2624 private final MemberDetailsService memberDetailsService ;
2725
26+ private static final String BEARER_PREFIX = "Bearer " ;
27+ private static final String TOKEN_TYPE = "ACCESS_TOKEN" ;
28+
2829 @ Override
2930 protected void doFilterInternal (HttpServletRequest request ,
3031 HttpServletResponse response ,
3132 FilterChain filterChain ) throws ServletException , IOException {
3233 try {
33- String token = resolveTokenFromCookie (request );
34- if (StringUtils .hasText (token ) && jwtUtil .validateToken (token , "ACCESS_TOKEN" )) {
35- setAuthentication (token );
34+ // Bearer 토큰 확인
35+ String bearerToken = resolveTokenFromHeader (request );
36+ if (isValidBearerToken (bearerToken )) {
37+ setAuthentication (bearerToken );
3638 }
3739 } catch (Exception e ) {
3840 log .warn ("인증 처리 실패" , e );
@@ -42,14 +44,10 @@ protected void doFilterInternal(HttpServletRequest request,
4244 filterChain .doFilter (request , response );
4345 }
4446
45- private String resolveTokenFromCookie (HttpServletRequest request ) {
46- Cookie [] cookies = request .getCookies ();
47- if (cookies != null ) {
48- for (Cookie cookie : cookies ) {
49- if (jwtProperties .getAccessTokenCookieName ().equals (cookie .getName ())) {
50- return cookie .getValue ();
51- }
52- }
47+ private String resolveTokenFromHeader (HttpServletRequest request ) {
48+ String bearerToken = request .getHeader ("Authorization" );
49+ if (StringUtils .hasText (bearerToken ) && bearerToken .startsWith (BEARER_PREFIX )) {
50+ return bearerToken .substring (7 );
5351 }
5452 return null ;
5553 }
@@ -67,4 +65,10 @@ private void setAuthentication(String token) {
6765
6866 SecurityContextHolder .getContext ().setAuthentication (authentication );
6967 }
68+
69+ private boolean isValidBearerToken (String token ) {
70+ return StringUtils .hasText (token ) &&
71+ token .matches ("^[A-Za-z0-9-_=]+\\ .[A-Za-z0-9-_=]+\\ .?[A-Za-z0-9-_.+/=]*$" ) &&
72+ jwtUtil .validateToken (token , TOKEN_TYPE );
73+ }
7074}
0 commit comments