일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- grid
- Photoshop
- REM
- pandas
- float
- 알고리즘
- transform
- skt membership
- JSX
- 통신사할인
- box-sizing
- 수학
- react
- 백준
- 강화학습
- 반응형 웹
- 미디어 쿼리
- c++
- Codility
- 소수
- SK바이오사이언스
- CSS
- Gap
- Javascript
- c
- stl
- 확률
- 상태
- 포토샵
- spring
- Today
- Total
sliver__
[Spring security] JWT(Json Web Token) 본문
Token은 왜 사용될까?
Client가 서버에 접근할 때, 해당 client가 올바른 계정 정보를 가지고 접근했는지 판단하기 위해 사용된다.
- Client가 username, password를 server로 전송하면
- Server는 username, password를 검증하고 token을 발급하여 client에게 전달한다.
- Client는 전달받은 token을 header에 추가하여 원하는 API에 접근하면
- Server는 token을 검증하고, 유효하다면 데이터를 return한다.
여러 Token 방식이 있는데, 그 중 JWT는 Json 형식의 데이터를 사용하여 token을 생성한다.
JWT 방식은 인증 서버 없이도 Client/Server app에서 유효한 지 검증이 가능하다.
구성은 아래와 같다.
{header}.{payload}.{signature}
header, payload의 정보는 base64로 encode하고 signature는 hmac(header + "." + payload, secret key)로 hashing한다.
hashing 하기 위한 secret key값은 고유한 key 값이므로 키 값에 대한 보안이 중요하다.
만약, client가 요청한 header와 payload의 정보가 바뀌면 token의 값도 변경되기 때문에 해당 token이 유효한지 검증이 가능하다.
이 사이트에서 JWT token을 생성해볼 수 있다.
JWT.IO
JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties.
jwt.io
========================================================================================
JWT Token 생성/검증하기 위해서는
- Login 시, JWT Token 생성 및 Client로 전송
- API 요청 시, JWT Token 유효성 검사
위 두 로직을 필터에 추가해야한다.
백엔드에서 생성 및 검증용 필터를 추가하고, 프론트엔드에서 백엔드로부터 전달받은 JWT token을 저장하도록 한다.
또한 API로 login을 제공하는 경우에, DTO를 통해 Response body 또는 header에 JWT token을 전송할 수 있다.
'Backend > Spring Security' 카테고리의 다른 글
Spring security - UserDetailsService, PasswordEncoder (6) (0) | 2025.03.02 |
---|---|
[Spring security] Custom FilterChain (0) | 2025.01.31 |
[Spring security] debug security filter (0) | 2025.01.30 |
[Spring security] 권한 저장 방식 (0) | 2025.01.27 |
[Spring security] Authority vs Role (0) | 2025.01.27 |