Hello

28. JWT 토큰 만들어서 응답하기

by 볼빵빵오춘기

JwtAuthenticationFilter.java - successfulAuthentication() - 구현부 코드 추가

    @Override
    protected void successfulAuthentication(HttpServletRequest request, HttpServletResponse response, FilterChain chain, Authentication authResult) throws IOException, ServletException {
        System.out.println("successfulAuthentication run - 인증 완료");

        PrincipalDetails principalDetails = (PrincipalDetails) authResult.getPrincipal();

				// JWT토큰은 라이브러리를 통해 아래코드와 같이 적어 만든다.
				// 기본적으로 빌드업패턴이다. 아래와같이
        // RSA방식은 아니고 Hash암호방식
        String jwtToken = JWT.create()
                //.withSubject(principalDetails.getUsername())
                .withSubject("cos토큰") 
                .withExpiresAt(new Date(System.currentTimeMillis()+(60000)*10)) // 토큰 만료시간. (60000)*10 => 10분 , 1/1000초이기 때문에 60000은 1분을 의미
                .withClaim("id", principalDetails.getUser().getId())
                .withClaim("username", principalDetails.getUser().getUsername())
                .sign(Algorithm.HMAC512("cos"));

        response.addHeader("Authorization","Bearer "+jwtToken);

        // super.successfulAuthentication(request, response, chain, authResult);
    }

 

실행결과

/login 에 정확한 아이디와 비번을 raw에 json으로 넣은 후 send하면 header에 Authorization 이 들어가져있다.

 

블로그의 정보

Hello 춘기's world

볼빵빵오춘기

활동하기