상황
- REST API로 로그인/회원가입 기능을 구현하기 위해 스프링부트 코딩중
- JWT 활용한 코드 사용
- Postman을 이용해 아이디와 비밀번호를 입력해준 후, 정상작동되는지 확인하기 위해 테스트 중 (일치시 토큰 발급됨)
- 오류와 함께 메시지가 출력됨.
- 메시지 내용 : The signing key's size is 72 bits which is not secure enough for the HS512 algorithm.
The JWT JWA Specification (RFC 7518, Section 3.2) states that keys used with HS512 MUST have a size >= 512 bits (the key size must be greater than or equal to the hash output size). Consider using the io.jsonwebtoken.security.Keys class's 'secretKeyFor(SignatureAlgorithm.HS512)' method to create a key guaranteed to be secure enough for HS512. See https://tools.ietf.org/html/rfc7518#section-3.2 for more information.
문제 발생 원인
- 토큰 생성할 때 해쉬 함수를 이용하는데, 거기서 문제가 발생했던 것이였다.
- 번역기를 돌려보니, "서명키의 크기가 72비트로 HS512 알고리즘에 충분히 안전하지 않다. JWT JWA 사양(RFC 7518, 섹션 3.2)에 따르면 HS512와 함께 사용되는 키의 크기는 512비트 이상이어야 합니다(키 크기는 해시 출력 크기보다 크거나 같아야 함)" 라고 나왔다.
- 요약 : singing key 비트 수가 해쉬함수에서 요구하는 비트 수보다 작아서 일어나는 문제였다.
내가 입력한 비트 수 : 72비트 / 해쉬함수 요구 비트 수 : 512비트
- 해결법 : siging key 비트 수를 512비트 이상으로 늘려주면 된다.
해결방법
- 해쉬함수와 함께 사용하고 있는 비트 수를 늘려주면 됨.
- 번역기를 돌려보니, "서명키의 크기가 72비트로 HS512 알고리즘에 충분히 안전하지 않다. JWT JWA 사양(RFC 7518, 섹션 3.2)에 따르면 HS512와 함께 사용되는 키의 크기는 512비트 이상이어야 합니다(키 크기는 해시 출력 크기보다 크거나 같아야 함)" 라고 나왔다.
- 요약 : singing key 비트 수가 해쉬함수에서 요구하는 비트 수보다 작아서 일어나는 문제였다.
내가 입력한 비트 수 : 72비트 / 해쉬함수 요구 비트 수 : 512비트
- 해결법 : siging key 비트 수를 512비트 이상으로 늘려주면 된다.
과정
- 오류가 생긴 부분의 코드다. 맨 밑줄을 보면 secret 변수가 활용되고 있는 것을 볼 수 있다.
- secret 키가 있는 application.properties에 가서 secret 길이를 바꿔주니까 해결되었다.
결과
- 토큰이 잘 발급되는 모습을 볼 수 있다. ㅠㅠ 행복하다
출처 : https://limm-jk.tistory.com/50
'spring boot 공부' 카테고리의 다른 글
[Spring Boot] 컨트롤러 (0) | 2022.07.30 |
---|---|
[Spring Boot] Spring Boot와 AWS RDS (MySQL) 연동 (0) | 2022.07.28 |
[Spring Boot] 구조 파악하기 (0) | 2022.07.28 |
[Spring Boot] 스프링부트 개발 도구 설치 (0) | 2022.07.20 |
[Spring Boot] 스프링 부트 시작하기 (브라우저에 Hello World 문구 출력) (0) | 2022.07.20 |