Hello

24. JWT 임시 토큰 만들어서 테스트 해보기

by 볼빵빵오춘기

MyFilter1.java - filter1() 코드 추가

코드추가1

요청 시 header에 Authorization 키에 무엇이 담겨오는지 확인 한다.

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

        HttpServletRequest req = (HttpServletRequest) request;
        HttpServletResponse res = (HttpServletResponse) response;

        String headerAuth= req.getHeader("Authorization");
        System.out.println("headerAuth : "+headerAuth);
        chain.doFilter(req, res);
    }

 

실행결과1

get방식으로 http://localhost:8080/home 을 URL에 쳐본다. 

⇒ headerAuth 가 null 인 것을 확인 가능하다.

 

코드추가2

post 요청일 때만 Authorization 키에 무엇이 담겨있는지 확인할 수 있도록 한다. 

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

        HttpServletRequest req = (HttpServletRequest) request;
        HttpServletResponse res = (HttpServletResponse) response;
        
        // 토큰 : cos 라고 가정하에 진행 test
        if(req.getMethod().equals("POST")){
            String headerAuth= req.getHeader("Authorization");
            System.out.println("headerAuth : "+headerAuth);
        }

        chain.doFilter(req, res);
    }

 

실행결과2

postman 을 이용하여 header부분에 key값은 Authorization, value에는 cos 라고 넣어서 post방식으로 test한다. 

⇒ post로 요청할 시 headerAuth에 cos 출력된다.

+ 추가로 postman에서 405가 뜨는 것을 확인하면서 error에 “Method Not Allowed”가 뜨는데 컨트롤러에 post로 요청이 들어왔을 때 코드는 작성하지 않았기때문

 

RestApiController.java - token() 추가

‘MyFilter1.java - filter1() 코드 추가’ - ‘코드 추가2’ - ‘실행 결과’ 에서 postman error 때문에 추가하는 코드이다.

기존에 controller에 /home 부분만 추가했기 때문에 그 전에는 http://localhost:8080/home 으로만 test 하였다.

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

 

실행결과

  • postman에서 test
    • url : http://localhost:8080/token
    • header - key : Authorization, value : cos
    • post 방식

⇒ 정상적으로 응답하는 것을 확인한다.(+ sysout해서 cos도 나오는 것도 같이 확인)

 

MyFilter1.java - filter1() 코드 추가

headerAuth가 cos 일경우에만 체인이 실행되도록 코드 추가한다.

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

        HttpServletRequest req = (HttpServletRequest) request;
        HttpServletResponse res = (HttpServletResponse) response;

        // 토큰 : cos 라고 가정하에 진행 test
		
        if(req.getMethod().equals("POST")){ 
            String headerAuth= req.getHeader("Authorization");
            System.out.println("headerAuth : "+headerAuth);


            if(headerAuth.equals("cos")){
                chain.doFilter(req, res);
            }else{
                PrintWriter out = res.getWriter();
                out.println("no certification");
            }
        }
    }

 

실행결과

  • 키 Authorization에 value를 cos가 아닌 값을 넣을 경우

 

  • 키 Authorization에 value를 cos를 넣었을 경우

 

결과적으로

임의로 Authorization에 값을 cos라고 넣어서 진행하였으나

→ id, pw 정상적으로 들어와서 로그인이 완료 되면 토큰을 만들어주고 그걸 응답을 해준다.

→ 요청할 때 마다 header에 Authorization에 value 값으로 토큰을 가지고 온다.

→ 그 때 토큰이 넘어오면 이 토큰이 내가 만든 토큰이 맞는지만 검증하면 된다.(RSA, HS256)

 

'강의 따라하기 > JWT' 카테고리의 다른 글

26. 회원가입 로직 누락  (0) 2024.08.25
25. JWT를 위한 로그인 시도  (0) 2024.08.25
23. JWT Filter 등록 테스트  (0) 2024.08.25
22. JWT Bearer 인증 방식  (0) 2024.08.25
21. JWT를 위한 security 설정  (0) 2024.08.25

블로그의 정보

Hello 춘기's world

볼빵빵오춘기

활동하기