[QnA 게시판] Security적용 : 로그인 issue + 토큰 생성 안됨

Updated:

Categories:

Tags: , ,

📌 개인적인 공간으로 공부를 기록하고 복습하기 위해 사용하는 블로그입니다.
정확하지 않은 정보가 있을 수 있으니 참고바랍니다 :😸
[틀린 내용은 댓글로 남겨주시면 복받으실거에요]

로그인 issue + 토큰 생성 안됨

로그인이 안됨

  1. member 회원가입은 잘 되고 DB에도 잘 들어오지만

    로그인을 하면 Not Found 에러 발생한다.

  2. path문제인 것 같아서 SecurityConfiguration 찾아서 경로봤더니

    또 앞에 대시 안 쳤다… 전에 실습 할 때도 실수했는데..또 실수함. (”/v1/auth/login”) 으로 수정하였다.

  3. 로그인 성공!!

로그인 성공, But, header에 token 생성이 안됨

이제 로그인은 성공했는데 header에 Authorization 키의 값으로 Access Token이, Refresh 키의 값이 나와야하는데, 나오지 않는다…

근데 사실 헤더에 값이 나오지 않을 뿐, 로그인은 잘되니까 상관없지 않을까 생각했는데 다시 생각해보면 이게 header에 토큰이 나오는 건데 없다면 지금은 문제가 없긴 한데, 이게 서비스로 구현된다면 서비스를 운영에 큰 문제가 발생되는 것이나 마찬가지다.. 인증 토큰을 받지 못하면 계속 로그인을 다시 해야 하고 이건 사용자 경험을 크게 저하시키는 것과 마찬가지 이기 때문,

헤더에 존재하지 않는 것은 토큰에 헤더를 추가하는 로직이 누락되었을 것 같아서 관련된 코드를 찾아보니 2가지 실수 한 것이 있었다

  1. 첫번째는 SecurityConfiguration 클래스에서 configuration.setAllowedMethods(Arrays.asList( ~~~~) 부분에 큰 따옴표로 다 이어져서 1개의 값만 들어가 있다…

    [Before]

    [After]

    → 이걸 수정해서는 딱히 달라지지는 않았다, 여전히 헤더에 토큰이 생성되지 않았고, GET이나 POST 요청도 잘 진행되었다.

  2. 2번째는 JwtAuthenticationFilter 클래스의 successfulAuthentication 메서드에서
    Filter Chain은 왜 사용을 안하지 하고 안 넣어봐야겠다…했는데 까먹고 있었다…

    [Before]

    [After]

    이제 잘 나온다.

FilterChain에 대한 이해 부족

filter chain은 필터를 순차적으로 호출하는 역할을 하고, 서블릿 필터는 HTTP 요청과 응답을 처리하기 위한 인터셉터로
요청이 서블릿이나 다른 리소스에 도달하기 전에 전처리하거나 응답이 클라이언트에 전달되기 전에 후처리를 할 수 있다.
해당 successfulAuthentication 메서드는 인증에 성공되었을 때 호출 되는 메서드로 인증이 성공한 후에 필터체인의 나머지 필터를 실행할 수 있게 흐름을 제공해주는 메서드이다. 그런데 FilterChain을 지워서 다음 filter인 JwtVerifiedFilter의 doFilter로 이동하지 않았고, 토큰은 만들어졌지만 전달이 되지 않은 것이 원인인 것 같다.

Project 카테고리 내 다른 글 보러가기

Leave a comment