SMALL
사이드 프로젝트를 하며 로그인 부분을 JWT로 구현을 했습니다.
그런데요,,
백엔드 말고도 프론트엔드를 같이 구현하며 많은 고민을 하고 삽질을 하여
누군가에게는 이 글이 도움이 되기를 바라며,, 기록을 해보겠습니다🐥
JWT(Json Web Token)란?
- 선택적 서명 및 선택적 암호화를 사용하여 데이터를 만들기 위한 인터넷 표준으로, payload는 몇몇 클레임(claim) 표명(assert)을 처리하는 JSON을 보관한다.
- 예를 들어 서버는 '관리자로 로그인됨'이라는 클레임이 있는 토큰을 생성하여 이를 클라이언트에 제공할 수 있다. 그러면 클라이언트는 해당 토큰을 사용하여 관리자로 로그인됨을 증명한다.
- 토큰은 크기가 작고 URL 안전으로 설계되어 있으며 특히 웹 브라우저 통합 인증(SSO) 컨텍스트에 유용하다.
- 출처 : 위키백과
JWT를 구현하며 발급된 토큰이 JWT 토큰의 형식과 일치하는지는 아래 공식 사이트에 들어가 확인하면 된다.
JWT 구조
설명 | 예 | |
Header | 토큰 유형과 사용한 서명 알고리즘의 두 부분으로 구성 | { "alg": "HS256", "typ": "JWT" } |
Payload | 사용자 및 추가 데이터에 대한 설명인 Claim을 포함 Payload에는 사용자의 비밀번호와 같은 중요한 정보는 포함시키지 않음 |
{ "sub": "1234567890", "name": "John Doe", "admin": true } |
Signature | 토큰이 전달되는 도중에 변경되지 않았는지 확인 | HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret) |
Authorization Header에 대하여
로그인을 한 후 발급 받은 Access token을 클라이언트에서 API를 요청할 때 Header에 넣어서 아래와 같이 보내준다.
Authorization: <type> <credentials>
1. Type
- 인증 타입으로 보통 Basic으로 이용
- 다른 타입으로는 아래와 같이 있다고 하는데 여러 코드들을 구경한 결과 'Bearer'를 주로 쓰는것 같아 저도 사용했습니다ㅎㅎ
- IANA registry of Authentication schemes
- Authentification for AWS servers (AWS4-HMAC-SHA256)
2. Credentials
- 여기다 JWT 토큰을 넣으면 된다.
Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l
결과 예시입니다 😀
참고
다음글
2022.02.20 - [Backend/Spring] - Spring boot에서 JWT 구현(2)
2022.02.20 - [Backend/Spring] - Spring boot에서 JWT 구현(3)
'Backend > Spring' 카테고리의 다른 글
Spring boot에서 JWT 구현(3) (2) | 2022.02.20 |
---|---|
Spring boot에서 JWT 구현(2) (3) | 2022.02.20 |
Spring boot에서 첨부파일 업로드 (Apache Tika 파일 변조 체크) (0) | 2021.11.14 |
Spring boot에 lucy-xss-servlet-filter 적용하기 (0) | 2021.07.11 |
[Spring boot] Swagger (0) | 2020.05.20 |