JWT(JSON Web Token)는 RFC 7519 웹 표준으로 지정이 되어있고 JSON 객체를 사용해서 토큰 자체에 정보들을 저장하고 있는 Web Token이라고 정의 할 수 있습니다.

Header, Payload, Signature로 구성되어있다.
aaaaaa.bbbbbbb.ccccccc -> (header.payload.signature)
- Header : Signature를 해싱하기 위한 알고리즘 정보들이 담겨 있다.
- Payload : 서버와 클라이언트가 주고받는, 시스템에서 실제로 사용될 정보에 대한 내용들을 담고 있습니다.
- Signature : 토큰의 유효성 검증을 위한 문자열입니다. 이 문자열을 통해 서버에서는 이 토큰이 유효한 토큰인지를 검증할 수 있습니다.
장점
- 중앙의 인증 서버, 데이터 스토어에 대한 의존성 없음, 시스템 수평 확장 유리
- Base64 URL Safe Encoding > URL, Cookie, Header 어디에서든 사용 가능
단점
- Payload의 정보가 많아지면 네트워크 사용량 증가, 데이터 설계 고려 필요
- 토큰이 각 클라이언트에 저장되기 때문에 서버에서 클라이언트의 토큰을 조작할 수 없음
예제 프로젝트 생성
plugins {
id 'org.springframework.boot' version '2.6.7'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'com.h2database:h2'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.security:spring-security-test'
}
tasks.named('test') {
useJUnitPlatform()
}
'Spring > JWT' 카테고리의 다른 글
회원가입, 권한검증 (0) | 2022.05.27 |
---|---|
DTO, Repository, 로그인 (0) | 2022.05.25 |
JWT 코드, Security 설정 추가 (0) | 2022.05.19 |
Security 설정, Data 설정 (0) | 2022.05.18 |