12. User-Service JWT 생성

| User-Service에 JWT 생성 (JSON Web Token)


JWT Dependency 추가

 <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt</artifactId>
            <version>0.9.1</version>
        </dependency>

AuthenticationFilter.java 

protected void successfulAuthentication(HttpServletRequest request,
                                            HttpServletResponse response,
                                            FilterChain chain,
                                            Authentication authResult) throws IOException, ServletException {
        log.debug( ((User)authResult.getPrincipal()).getUsername() );

        String userName = ((User)authResult.getPrincipal()).getUsername();
        UserDto userDetails = userService.getUserDetaisByEmail(userName);

         String token = Jwts.builder()
                .setSubject(userDetails.getUserId())
                .setExpiration(new Date(System.currentTimeMillis()
                        + Long.parseLong(env.getProperty("token.expiration_time")) ))
                .signWith(SignatureAlgorithm.HS512, env.getProperty("token.secret"))
                .compact();

        response.addHeader("token", token);
        response.addHeader("userId", userDetails.getUserId());
    }

WebSecurity.java

 private AuthenticationFilter getAuthenticationFilter() throws Exception {
        AuthenticationFilter authenticationFilter =
                                new AuthenticationFilter(authenticationManager(), userService, env);
        //authenticationFilter.setAuthenticationManager(authenticationManager());

        return authenticationFilter;
    }

 

테스트 결과

 

 


로그인 순서

  1. AuthenticationFilter의 attemptAuthentication 
  2. UserServiceImpl의 loadUserByUsername
  3. AuthenticationFilter의 successfulAuthentication
 

 

댓글

Designed by JB FACTORY