JWT 생성하기

private fun createToken(accountId: String, tokenType: String, tokenExpiredAt: Long) =
        Jwts.builder()
            .signWith(SignatureAlgorithm.HS256, securityProperties.secretKey)
            .setSubject(accountId)
            .setHeaderParam(JWT_TYPE, tokenType)
            .setIssuedAt(Date())
            .setExpiration(Date(System.currentTimeMillis() + tokenExpiredAt))
            .compact()

private fun createAccessToken(accountId: String) =
        createToken(accountId, JwtProperty.ACCESS, securityProperties.accessExp)

fun getToken(accountId: String) = TokenResponse(
    accessToken = createAccessToken(accountId),
    accessTokenExpiredAt = LocalDateTime.now().plusSeconds(securityProperties.accessExp)
)

jwt를 생성해주는 코드를 작성합니다.

secretkey와 만료 시간은 코드상에서 확인할 수 없게 설정 파일로 따로 관리합니다.

jwt:
  access_exp: ${ACCESS_EXP}
  refresh_exp: ${REFRESH_EXP}
  secret_key: ${SECRET_KEY}

로그인했을때 JWT 발급하기

return jwtProvider.getToken(request.accountId)

스크린샷 2023-08-02 오후 3.53.57.png

기존 로그인 API에 성공했을경우 토큰을 발급하는 코드를 추가합니다.