TIL)23.07.17(JWT 사용)

주민·2023년 7월 17일
0

TIL

목록 보기
40/84

JWT 사용

JwtUtil

  • Jwt 사용하는데 필요한 기본 세팅이나 메서드를 만드는 class
    (라이브러리 같은 느낌임)

** 헷갈리는 부분만 가져와서 정리함

  1. 필드 선언
 * Header KEY 값(F12로 봤을 때 Name)
public static final String AUTHORIZATION_HEADER = "Authorization";

* Token 식별자 = > Token임을 구분하기 위해 "Bearer "을 붙여줌
	=> 실제로 토큰을 사용할 때는 제외하고 사용
public static final String BEARER_PREFIX = "Bearer ";
  1. jwt.secret.key 사용 세팅
* application.properties 에 있는 jwt.secret.key  값을 가져옴
@Value("${jwt.secret.key}")

* 사용할 변수 선언
private String secretKey;
private Key key;

* "Header + Payload + secret 값" 을 HS256 알고리즘으로 암호화
private final SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256;
  1. secret.key 복호화(Base64 알고리즘은 복호화)하여 Key에 담음
public void init() {
    byte[] bytes = Base64.getDecoder().decode(secretKey);
    key = Keys.hmacShaKeyFor(bytes);
}
  1. 토큰에서 사용자 정보 가져오는 메서드
public Claims getUserInfoFromToken(String token) {
    // 토큰의 위변조, 만료 체크 후 body 의 값을 가져옴
    return Jwts.parserBuilder().setSigningKey(key).build().parseClaimsJws(token).getBody();
}
  • Claims란? => 참고블로그
    => JWT는 header, payload, signature 으로 구성되어 있는데 그중 payload의에 들어가 있는 정보를 뜻한다.
    => 페이로드 구성에 담을 key와 value의 한쌍으로 이루어 진 형태를 클레임이라고 합니다.
    => ex) "name":"jumin" 가 하나의 클레임
  • HttpServletRequest / HttpServletResponse

0개의 댓글

관련 채용 정보