이 코드 조각은 JWT (JSON Web Token)를 사용하여 토큰을 서명할 때 사용되는 서명 키를 생성하는 메서드입니다. JWT를 생성하거나 검증할 때, 서명 알고리즘을 통해 토큰의 무결성과 신뢰성을 보장하기 위해 서명 키가 필요합니다. 이 메서드는 HMAC (Hash-based Message Authentication Code) 서명 알고리즘을 사용하여 서명 키를 생성합니다.
여기서 Keys.hmacShaKeyFor 메서드와 관련된 코드의 동작을 자세히 설명하겠습니다.
private Key getSigningKey() {
return Keys.hmacShaKeyFor(SECRET_KEY.getBytes());
}
SECRET_KEYSECRET_KEY는 비밀 서명 키를 나타내는 문자열입니다. 이 값은 일반적으로 환경 변수 또는 설정 파일에서 가져옵니다. 실제 애플리케이션에서는 이 값을 안전하게 관리하는 것이 중요합니다.SECRET_KEY.getBytes()SECRET_KEY.getBytes()는 SECRET_KEY 문자열을 바이트 배열로 변환합니다. getBytes() 메서드는 문자열을 바이트 배열로 변환하여, 이를 서명 키로 사용할 수 있도록 합니다.Keys.hmacShaKeyFor(byte[] keyBytes)Keys.hmacShaKeyFor는 바이트 배열을 사용하여 HMAC SHA 알고리즘에 필요한 서명 키를 생성하는 유틸리티 메서드입니다. 이 메서드는 바이트 배열을 입력으로 받아 Key 객체를 반환합니다. Key 객체는 JWT 서명 또는 검증에 사용됩니다.JWT의 서명 과정은 다음과 같습니다:
SECRET_KEY를 사용하여 HMAC SHA 알고리즘을 적용하여 서명을 생성합니다. 이 서명은 JWT의 세 번째 부분으로 추가됩니다.서명 키를 사용하여 JWT를 생성하거나 검증하는 코드 예시는 다음과 같습니다: