API서버에서 JWT

NellDora·2024년 4월 3일
0

스프링

목록 보기
9/10

JWT란 무엇인가?

JSON Web Token의 약자이며 말 그대로 JSON 데이터 형식의 웹 토큰이며 토큰 중 한 가지이다.
인증 중에 데이터를 쉽게 전송 가능하고 물결성을 검증하기 위해 데이터에 서명을 할 수 있는 장점을 가지고 있는 토큰이다.

JWT를 사용하기 위해서 라이브러리를 추가

Key 설정

서버측에서 가지고 있는 고유의 key을 설정해둔다.

메서드 설명

Keys.hmacShaKeyFor(JWTUtil.key.getBytes("UTF-8"));
-> Keys 클래스는 JJWT 라이브러리에서 제공하는 클래스
-> hmacShaKeyFor는 HMAC-SHA 알고리즘에 필요한 비밀 키를 생성
-> JWTUtil.key.getBytes("UTF-8")은 static으로 설정하였던 JWTUtil.key를 UTF-8 문자 인코딩으로 바이트 배열로 변환하고 이거는 위에 비밀 키의 베이스로 사용

그럼 HMAC-SHA가 무엇일까?
HMAC-SHA는 Hash-based Message Authentication Code - Secure Hash Algorithm (SHA)의 결합된 암호화 기술이며 메시지의 무결성 확인용

Jwts

설명

JWT를 생성하고 파싱하는데 사용되는 클래스 JWT 생성 및 검증 기능을 제공한다.

메서드의 기능

setHeader : JWT의 헤더 설정
setClaims : JWT의 클레임을 설정하는 것이며 클레임은 Payload에 포함되는 정보. 즉, 내가 날려보내는 정보
setIssue : JWT의 발행 시간을 설정함
setExpiration : JWT 만료시간을 설정
setWith : JWT를 서명, 무결성을 보장하는 key 값 지정
compact : JWT를 문자열로 변환 -> 클라이언트에 제공되어 인증 또는 권한 부여에 사용


로그인 성공 시 동작하는 SuccessHandler에서 토큰을 생성하여 전송처리 한다.
이때 JWT에는 전송할 정보 claims 추가

지금 동작하는 프로젝트에서는 claims은 아래와 같이 설정해두었음

결과는 정상동작!

profile
불타오르는 백엔드 개발자

0개의 댓글