[Springboot] JWT(Json Web Token)를 사용하여 안전하게 Json데이터를 전송하자(1)
2024. 3. 31. 01:29ㆍ프로그래밍(Backend)/Spring Boot
JSON Web Token (JWT)은 정보를 안전하게 전송하기 위한 방법으로, JSON 형식의 객체를 사용합니다.
JWT는 Header, Payload, Verify Signnature으로 구성되어 있습니다.
- 헤더(Header): 토큰의 유형(JWT)과 사용되는 서명 알고리즘(HMAC SHA256 또는 RSA 등)으로 구성됩니다.
- 페이로드(Payload): 클레임을 포함하며, 클레임은 엔터티(일반적으로 사용자) 및 추가 데이터에 대한 진술입니다. 클레임에는 등록된 클레임, 공개 클레임, 비공개 클레임이 있습니다.
- 서명(Signature): 서명은 인코딩된 헤더, 페이로드, 비밀, 헤더에서 지정된 알고리즘을 사용하여 생성됩니다.
JWT는 주로 사용자 로그인 후에 발급되며, 보호된 리소스에 액세스하려는 경우 사용됩니다. 클라이언트는 JWT를 Authorization 헤더를 통해 보내고, 서버는 해당 토큰의 유효성을 확인하여 액세스를 허용합니다.
장점
JWT의 장점은 JSON 형식이 XML보다 더 작고 전달하기 쉬우며, 공개/비공개 키 쌍을 사용하여 보안을 제공할 수 있다는 것입니다. 따라서 JWT는 웹 및 API 인증에 널리 사용되는 방법입니다.
JWT의 흐름
JWT 생성(Encoding) -> Request Header의 일부를 통해 JWT 전송 -> JWT 검증(Decoding)
JWT 사용법
###Dependency###
# Maven
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-oauth2-resource-server</artifactId>
</dependency>
# Gradle
implementation 'org.springframework.boot:spring-boot-starter-oauth2-resource-server'
1. 키 쌍 생성/사용 클래스 KeyPairGenerator
2. 키 쌍을 사용하여 RSA 키 생성/사용 패키지 nimbusds
3. JWK(Json Web Key) 생성/ 사용 패키지 nimbusds
4. Decoing/사용 클래스 NimbusJwtDecoder
5. Encoding
https://growjong.tistory.com/23
'프로그래밍(Backend) > Spring Boot' 카테고리의 다른 글
[Springboot] JWT(Json Web Token)를 사용하여 안전하게 Json데이터를 전송하자(2) (0) | 2024.03.31 |
---|---|
[Springboot] JUnit5를 통한 단위(unit) 테스트 작성 (0) | 2024.03.28 |
[RestApi] Versioning 버전 관리 방법 (0) | 2024.03.19 |
[RestApi] 유효성 검사(spring-boot-starter-validation) (0) | 2024.03.19 |
[Springboot] Logger로 로그 출력하기 (0) | 2024.03.16 |