2022. 5. 26. 10:24ㆍWeb
1. JWT(JSON WEB TOKEN)
- jwt는 유저를 인증하고 식별하기 위한 토큰 기반 인증 수단이다.
- 토큰은 세션과는 달리 서버가 아닌 클라이언트에 저장되기 때문에 서버의 부담을 덜 수 있다.
- 특징은 토큰 자체에 사용자의 정보나 서비스를 사용하기 위한 정보가 포함된다.
2. 일반적인 JWT 인증 순서
- 클라이언트가 로그인을 통한 서비스 인증
- 서버에서 서명 된 JWT를 생성하여 클라이언트에 Response(응답)으로 돌려준다.
- 클라이언트가 서버에 데이터를 요청할 때 HTTP Header에 JWT를 첨부한다.
- 서버에서 URL로 맵핑되기 전 Intercepter(인터셉터)하여 Header에 담긴 JWT를 검증한 후 데이터를 응답한다.
3. JWT 구조
- Header : JWT에서 사용할 타입과 해시 알고리즘 종류
- Payload : 서버에서 첨부한 사용자 권한 정보와 데이터
- Signature : Header와 Payload를 Base64 URL-safe Encode를 한 이후 Header에 명시된 해시함수를 적용하고,
개인키(Private Key)로 서명한 전자서명이 담겨있다.
4. Java - Spring에서 구현방법
- build.gradle
- application.propertise 에 개인키를 정의해준다.
- interceptor
5. 느낀점
- JWT는 최근 웹서비스에서 범용적으로 사용되고있으며, 규격이 정해져있어 다양한 클라이언트에서 호환성이 뛰어나다.
- 웹의 경우 Cookie-Session으로 처리를 해도 되는 부분이 많아 리소스를 따져 개발을 할 필요가 있을거같다.
'Web' 카테고리의 다른 글
[Git Hub] 깃허브 프로필 꾸미기[READMe.md] (0) | 2022.06.24 |
---|---|
[JAVA] JPA 1:N(일대다) JSON 직렬화 순환 참조 문제 (0) | 2022.06.15 |
[Web] 자바(JAVA) 셀레니움(Selenium)을 통해 크롤링하기 (0) | 2022.05.30 |
[Web] 세션(Session), 쿠키(Cookie) (0) | 2022.05.26 |