💐 Spring/Spring Security

9. JWT 임시 토큰으로 필터 테스트

iseunghan 2021. 11. 1. 19:20
반응형

이 포스트는 데어 프로그래밍님의 유튜브 강의를 듣고 나서 정리한 글입니다.

 

토큰을 검증 할 필터 생성

필터를 이용하여 토큰 검증을 했을 때, 유효하지 않다면 해당 컨트롤러로 더 이상 접근하지 못하도록 할 수 있습니다.

public class MyFilter3 implements Filter {

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest req = (HttpServletRequest) servletRequest;
        HttpServletResponse res = (HttpServletResponse) servletResponse;
        res.setCharacterEncoding("utf-8");

        // 만약, token을 검증하여, Controller에 접근 여부 설정!
        if (req.getMethod().equals("POST")) {
            String auth_header = req.getHeader("Authorization");

            if(auth_header.equals("secret")) {
                filterChain.doFilter(req, res);
            } else {
                PrintWriter writer = res.getWriter();
                writer.println("인증 안됨");
            }
        } else {
        	filterChain.doFilter(servletRequest, servletResponse);
        }
    }
}
  • POST로 요청이 왔다면
    • 헤더에 Authorization 값을 꺼냅니다.
    • 해당 값이 임시로 만들어놓은 키 값인 secret이 맞는지 확인합니다.
      • 맞다면, 계속 필터를 타게 끔 하고
      • 틀리다면, "인증 안됨" 이라는 메세지를 응답합니다.

 

해당 필터를 Security 설정에 등록

http.addFilterBefore(new MyFilter3(), SecurityContextPersistenceFilter.class);  // securityFilter가 실행되기 전에!

 

 

Postman 으로 테스트

잘못된 토큰으로 요청했을 때

  • 우리가 생성한 필터에 걸려서 controller에 접근하지 못했습니다.

 

올바른 토큰으로 요청했을 때

  • controller에서 올바른 응답을 받았습니다.

 

이런식으로 사용자가 최초로 로그인할 때, JWT를 서버에서 생성해서 주면
이후에 클라이언트에서 JWT 토큰을 담아 다시 서버로 로그인 요청을 보낸다면 JWT토큰 검증으로 제일 먼저 걸러낼 수 있습니다.
반응형
댓글수0