✔️ JWT
JWT(JSON Web Token)란?
- 인증 흐름의 규약이 아닌, JSON 형태를 활용한 토큰 작성에 대한 인증 규약
- 웹표준으로서 두 개체에서 JSON 객체를 사용하여 가볍고 자가수용적인 방식으로 정보를 안정성 있게 전달함
- 로그인 인증 시 유효기간이 짧은 토큰을 발급하게 되면 사용자 입장에서 자주 로그인을 해야하기 때문에 번거롭고,
대신 유효기간이 긴 토큰을 발급하게 되면 제 3자게에 토큰을 탈취당할 경우 보안에 취약하므로
유효기간이 긴 리프레쉬 토큰을 사용해 유효기간이 짧은 액세스 토큰의 유효기간이 만료되었을 때, 새로 발급해주도록 함
이때 유효기간이 긴 리프레쉬 토큰 또한 만료되었다면, 사용자는 새로 로그인해야 함
이를 이용해 탈취당한다고 더 짧은 유효기간 때문에 탈취되는 가능성이 적게 됨

JWT의 구성 요소
- '.'을 구분자로 헤더, 내용, 서명으로 구성됨
- 헤더 (Header)
토큰의 타입을 지정하는 typ와 해싱 알고리즘을 지정하는 alg 두 가지 정보를 가짐 - 내용 (Payload)
토큰을 담을 정보가 들어 있으며, 정보의 한 조각을 클레임이라고 부르고, 이는 name, value의 한 쌍으로 이뤄져 있음
토큰에는 여러 개의 클레임들을 넣을 수 있지만 너무 많아질 경우 토큰의 길이가 길어질 수 있음
클레임의 종류로는 등록된 클레임, 공개 클레임, 비공개 클레임이 존재
- 등록된 클레임 : 서비스에서 필요한 정보들이 아닌, 토큰에 대한 정보들을 담기 위하여 이름이 이미 정해진 클레임들
iss(토큰 발급자), sub(토큰 제목), aud(토큰 대상자),
exp(토큰 만료시간), nbf(토큰 활성시간), iat(토큰 발급시간), jti(JWT의 고유 식별자)등이 존재 - 공개 클레임 : 충돌이 방지된 이름을 가지고 있어야 하므로 URI 형식으로 짓게 됨
- 비공개 클레임 : 클라이언트와 서버 양 측간에 합의하에 사용되는 클레임 이름들
- 등록된 클레임 : 서비스에서 필요한 정보들이 아닌, 토큰에 대한 정보들을 담기 위하여 이름이 이미 정해진 클레임들
- 서명 (Signature)
헤더의 인코딩값과 정보의 인코딩값을 합친 후 주어진 비밀키로 해쉬를 하여 생성하게 되며 base64 형태로 나타나게 됨

'Tech Interview > Web' 카테고리의 다른 글
[Web] UI와 UX (0) | 2024.02.14 |
---|---|
[Web] 로깅 레벨 (0) | 2024.02.13 |
[Web] 인증 방식 (0) | 2024.02.12 |
[Web] OAuth (0) | 2024.02.10 |
[Web] 패스워드 암호화 방법 (0) | 2024.02.09 |
✔️ JWT
JWT(JSON Web Token)란?
- 인증 흐름의 규약이 아닌, JSON 형태를 활용한 토큰 작성에 대한 인증 규약
- 웹표준으로서 두 개체에서 JSON 객체를 사용하여 가볍고 자가수용적인 방식으로 정보를 안정성 있게 전달함
- 로그인 인증 시 유효기간이 짧은 토큰을 발급하게 되면 사용자 입장에서 자주 로그인을 해야하기 때문에 번거롭고,
대신 유효기간이 긴 토큰을 발급하게 되면 제 3자게에 토큰을 탈취당할 경우 보안에 취약하므로
유효기간이 긴 리프레쉬 토큰을 사용해 유효기간이 짧은 액세스 토큰의 유효기간이 만료되었을 때, 새로 발급해주도록 함
이때 유효기간이 긴 리프레쉬 토큰 또한 만료되었다면, 사용자는 새로 로그인해야 함
이를 이용해 탈취당한다고 더 짧은 유효기간 때문에 탈취되는 가능성이 적게 됨

JWT의 구성 요소
- '.'을 구분자로 헤더, 내용, 서명으로 구성됨
- 헤더 (Header)
토큰의 타입을 지정하는 typ와 해싱 알고리즘을 지정하는 alg 두 가지 정보를 가짐 - 내용 (Payload)
토큰을 담을 정보가 들어 있으며, 정보의 한 조각을 클레임이라고 부르고, 이는 name, value의 한 쌍으로 이뤄져 있음
토큰에는 여러 개의 클레임들을 넣을 수 있지만 너무 많아질 경우 토큰의 길이가 길어질 수 있음
클레임의 종류로는 등록된 클레임, 공개 클레임, 비공개 클레임이 존재
- 등록된 클레임 : 서비스에서 필요한 정보들이 아닌, 토큰에 대한 정보들을 담기 위하여 이름이 이미 정해진 클레임들
iss(토큰 발급자), sub(토큰 제목), aud(토큰 대상자),
exp(토큰 만료시간), nbf(토큰 활성시간), iat(토큰 발급시간), jti(JWT의 고유 식별자)등이 존재 - 공개 클레임 : 충돌이 방지된 이름을 가지고 있어야 하므로 URI 형식으로 짓게 됨
- 비공개 클레임 : 클라이언트와 서버 양 측간에 합의하에 사용되는 클레임 이름들
- 등록된 클레임 : 서비스에서 필요한 정보들이 아닌, 토큰에 대한 정보들을 담기 위하여 이름이 이미 정해진 클레임들
- 서명 (Signature)
헤더의 인코딩값과 정보의 인코딩값을 합친 후 주어진 비밀키로 해쉬를 하여 생성하게 되며 base64 형태로 나타나게 됨

'Tech Interview > Web' 카테고리의 다른 글
[Web] UI와 UX (0) | 2024.02.14 |
---|---|
[Web] 로깅 레벨 (0) | 2024.02.13 |
[Web] 인증 방식 (0) | 2024.02.12 |
[Web] OAuth (0) | 2024.02.10 |
[Web] 패스워드 암호화 방법 (0) | 2024.02.09 |