JWT 발급해보기

JWT 가 무엇인지는 이 글에 정리해두었으니 개념이 부족하다면 참고하자.

우선 스프링에서 JWT 를 쓰기 위해서는 JWT 라이브러리의 의존성을 추가해야한다.

build.gradle

// JWT
implementation 'io.jsonwebtoken:jjwt-api:0.12.0'
runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.12.0'
runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.12.0'

SecretKey 발급

아래와 같은 방법으로 SecretKey 를 발급할 수 있다.

하지만 실행할때마다 매번 바뀌기 때문에 한번 발급하고 출력하여 고정값으로 사용해야한다.

SecretKey 발급 로직만 추출해서 모듈화 하는것도 좋을것 같다.

 

SecretKey key = Jwts.SIG.HS256.key().build();
String strKey = Encoders.BASE64.encode(key.getEncoded());
log.info("secretKey = {}",strKey);

ㄴ Jwts.SIG.HS256.key().build()

SecretKey 를 생성한다.

ㄴ Encoders.BASE64.encode(key.getEncoded());

선택한 알고리즘으로 암호화된 SecretKey 를 BASE64로 인코딩한다.

 

SecretKey 가 위처럼 발급된걸 확인할 수 있다.

이 SecretKey 로 JWT 를 발급하므로 노출되지 않게 잘 관리하자.


JWT 발급

아래처럼 Jwt 빌더로 원하는 Claim 을 설정하면 위에서 발급한 SecretKey 로 JWT 를 발급한다.

Jwts.builder()
    .subject(name)
    .issuedAt(new Date())
    .signWith(secretKey)
    .compact());

 

위처럼 JWT가 잘 발급된것을 확인할 수 있다.

발급된 JWT를 검증하는 과정은 이 글을 참고하자.

'백엔드 > 연습' 카테고리의 다른 글

QueryDSL 적용하기: gradle-kotlin  (0) 2024.05.13
포트원 API 사용해보기  (0) 2024.04.04
plain-jar 파일 생성 방지  (0) 2024.01.16
QueryDSL 적용하기: gradle-groovy  (0) 2023.09.25
H2 DB 사용해보기  (0) 2023.09.24

+ Recent posts