JWT SECRET KEY 생성 방법

kinkin_a·2025년 3월 13일
0

내일배움캠프 TIL

목록 보기
74/100

secret key 생성할 때마다 매번 까먹고 검색하기도 지침

공통: build.gradle

build.gradle에 jwt 의존성 추가.

compileOnly group: 'io.jsonwebtoken', name: 'jjwt-api', version: '0.11.5'
runtimeOnly group: 'io.jsonwebtoken', name: 'jjwt-impl', version: '0.11.5'
runtimeOnly group: 'io.jsonwebtoken', name: 'jjwt-jackson', version: '0.11.5'

1. Terminal에 명령어 입력

  1. 터미널에서 secret.key 생성 명령어 입력해 application 파일에 추가

jwtUtil.class : hs256 base64 로 설정(개발자 임의 설정 가능)

    @Value("${jwt.secret.key}")
    private String secretKey;
    private Key key;
    private final SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256; //hs256

    @PostConstruct
    public void init() {
        byte[] bytes = Base64.getDecoder().decode(secretKey);
        key = Keys.hmacShaKeyFor(bytes);
    }

Terminal : base64의 64비트로 함 32비트도 가능한데, 비트 수가 높을수록 보안성이 높아짐.

application.properties

jwt.secret.key = 0ydHRc8EG9P/RJDjjPbE8dezJ0IXc8z61Y7hDZRJKkkrDW81g9FPKb0XdU5Knun3kIBEabqtzGnsNSqbufv79g==

2. 사이트에서 복사(HS256)

https://randomkeygen.com/

사이트에서 가져오기 (HS256 대칭키만 가능)

여기서 CodeIgniter Encryption Keys - Can be used for any other 256-bit key requirement 에서 복붙하면 됨.

3. 코드로 직접 생성

import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import java.util.Date;

public class JwtUtil {
    private static final String SECRET_KEY = "your-secret-key"; // 적절한 키로 변경

    public static String generateToken(String username) {
        return Jwts.builder()
                .setSubject(username) // 사용자 정보 저장
                .setIssuedAt(new Date()) // 발급 시간
                .setExpiration(new Date(System.currentTimeMillis() + 1000 * 60 * 60)) // 1시간 유효
                .signWith(SignatureAlgorithm.HS256, SECRET_KEY) // 서명
                .compact();
    }
}


...        

String token = JwtUtil.generateToken("testUser");

JWT 토큰 코드 구조 확인 사이트

https://jwt.io/

0개의 댓글