JWT 토큰 발급 - 시큐리티 6편

JaeYeop·2022년 2월 12일
0
post-custom-banner

전체적인 흐름도는 이전 글에서 꼭 확인

https://velog.io/@jjy5349/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%8B%9C%ED%81%90%EB%A6%AC%ED%8B%B0-%EA%B8%B0%EB%B3%B8-%EC%84%A4%EC%A0%95SecurityConfig.class-JwtTokenProvider.class-%EC%8B%9C%ED%81%90%EB%A6%AC%ED%8B%B0-3%ED%8E%B8

JWT 토큰 발급

RefreshToken

    /**
     * methodName : generateRefreshToken
     * author : Jaeyeop Jung
     * description : User를 통해서 RefreshToken을 생성하고 반환한다.
     *
     * @param user User Entity
     * @return RefreshToken 정보
     */
    public String generateRefreshToken(User user){
        Date now = new Date();

        return Jwts.builder()
                .setHeaderParam("typ", "REFRESH_TOKEN")
                .setHeaderParam("alg", "HS256")
                .setSubject(user.getId().toString())
                .setIssuedAt(now)
                .setExpiration(new Date(now.getTime() + REFRESH_TOKEN_EXPIRE_TIME))
                .claim("role", user.getRole().toString())
                .signWith(SignatureAlgorithm.HS256, secretKey)
                .compact();
    }

AccessToken

    /**
     * methodName : generateAccessToken
     * author : Jaeyeop Jung
     * description : User를 통해서 AceesToken 생성하고 반환한다.
     *
     * @param user User Entity
     * @return AccessToken 정보
     */
    public String generateAccessToken(User user){
        Date now = new Date();

        return Jwts.builder()
                .setHeaderParam("typ", "ACCESS_TOKEN")
                .setHeaderParam("alg", "HS256")
                .setSubject(user.getId().toString())
                .setIssuedAt(now)
                .setExpiration(new Date(now.getTime() + ACCESS_TOKEN_EXPIRE_TIME))
                .claim("role", user.getRole().toString())
                .signWith(SignatureAlgorithm.HS256, secretKey)
                .compact();
    }

JwtTokenProvider 클래스에 정의한 JWT 토큰을 만들어내는 메소드 들이다.

Jwt 토큰을 만드는 메소드나 클래스들은 여러개가 만들어져있다. 이 부분은 구글링을하여 참고하면 좋을 것 같다.

나의 프로젝트 에서는

해당 메소드들은 나 같은 경우에 UserController -> UserService에서 회원가입, 로그인을 하는 메소드에서 사용하였다.

고로 사용자는 "/login", "/join" 과 같이 로그인과 회원가입 url을 통해 접근하여 완료하면 토큰을 발급받고 HTTP Response 헤더나 바디에 해당 토큰 값을 받게 된다.

profile
이게 왜 틀리지... (나의 메모용 블로그)
post-custom-banner

0개의 댓글