💐 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토큰 검증으로 제일 먼저 걸러낼 수 있습니다.
반응형