Notice
Recent Posts
Recent Comments
Link
«   2026/09   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Archives
Today
Total
관리 메뉴

helloworld

jwt 임시 토큰 만들어보기 본문

jwt

jwt 임시 토큰 만들어보기

hellojava 2023. 10. 19. 16:54

우선 필터에 대한 이해가 필요하다.

 

필터를 간단하게

 

public class MyFilter1 implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
System.out.println("필터1");
chain.doFilter(request,response);

}
}

이런 식으로 만든후 

 

filterConfig이라는 파일을 생성한다

 

@Configuration
public class FilterConfig {

@Bean
public FilterRegistrationBean<MyFilter1> filter1() {
FilterRegistrationBean<MyFilter1> bean = new FilterRegistrationBean<>(new MyFilter1());
bean.addUrlPatterns("/*");
bean.setOrder(0);//낮은 번호가 필터중 가장 먼저 실행 됨
return bean;

}

필터가 많아질 경우에는 빈을 더 추가하여 setOrder 안에 파라미터로 그 순서를 조절 할 수 있다.

 

securityConfig 파일에 

http.addFilterBefore(new MyFilter3(), SecurityContextPersistenceFilter.class);//filterConfig보다 빨리 실행됨

이런식으로 코드를 작성하면 filterConfig보다 빠르게 실행된다. 또한 springSecurity 보다 빨리 실행되게 된다.

 

우선 대충 컨트롤러에

 

@PostMapping("/token")
public String token() {
return "<h1>home</h1>";
}

post 메서드를 만든다.

 

@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;

//토큰 : cos 이걸 만들어줘야함. id,pw 정상적으로 들어와서 로그인이 완료되면 토큰을 만들어주고 그걸 응답해준다.
//요청 할 때마다 header Authorizaion value 값으로 토큰을 가지고 온다.
//그때 토큰이 넘어오면 이 토큰이 내가 만든 토큰이 맞는지 검증만 하면 된다. (RSA, HS256)
if (req.getMethod().equals("POST")) {
System.out.println("POST요청됨");
String headerAuth = req.getHeader("Authorization");
System.out.println("headerAuth = " + headerAuth);
System.out.println("필터3");

if (headerAuth.equals("cos")) {
chain.doFilter(req,res);
}else{
PrintWriter out = res.getWriter();
out.println("인증안됨");
}
}
}

내가 정해둔 cos라는 토큰?을 만들고 포스트맨에 headers에 밸류값으로 cos가 들어오지 않으면 필터가 작동하지 않고

인증안됨. 이라는 문자만 나온다.

 

 

이걸 지금은 내가 지정한 cos로 하였지만 나중엔 RSA나 HS256로 암호화된 토큰을 보내주고 받으며 검증을 해주면 된다.

'jwt' 카테고리의 다른 글

jwt토큰 만들어서 응답해주기  (0) 2023.10.20
jwt를 위한 강제 로그인  (1) 2023.10.20
JWT 를 위한 Security 설정  (0) 2023.10.19
JWT 구조 이해  (2) 2023.10.18
RFC 문서  (0) 2023.10.18