728x90
JWT(Json Web Token)
데이터를 안전하고 간결하게 전송하기 위해 고안된 인터넷 표준 인증 방식으로 토큰 인증 방식에서 가장 범용적으로 사용된다. JSON 포맷의 토큰 정보를 인코딩 하여 그 정보를 Secret Key로 서명한 메시지를 Web Token으로써 인증 과정에 사용한다.
JWT의 종류
Access Token
- 보호된 정보들에 접근할 수 있는 권한 부여에 사용
- 비교적 짧은 유효 기간으로 탈취되더라도 오래 사용할 수 없게 한다.
Refresh Token
- Access Token이 만료되었을 때 새로운 Access Token을 발급받을 수 있다.
- 유효 기간이 길기 때문에 탈취당하면 큰 피해를 입을 수 있다. 그래서 사용하지 않는 곳이 많다.
JWT의 구조
Header.Payload.Signature의 구조로 이루어져 있다.
Header
- 어떤 종류의 토큰인지, 어떤 알고리즘으로 Sign할 지 정의한다.
- base64로 인코딩한다.
Payload
- 서버에서 활용 가능한 사용자의 정보가 담겨있다.
- base64로 인코딩하므로 쉽게 디코딩도 가능하기 때문에 민감한 정보는 포함하지 않는다.
Signature
- 위 두 부분이 base64로 인코딩된 후 원하는 비밀키와 Header에서 지정한 알고리즘을 사용하여 Header와 Payload에 대한 단방향 암호화를 수행한다.
JWT의 장점
- 상태를 유지하지 않고, 확장에 용이한 애플리케이션을 구현하기에 좋다.
- 클라이언트가 request를 전송할 때마다 자격 증명 정보를 전송할 필요가 없다.
- 인증을 담당하는 시스템을 다른 플랫폼으로 분리하는 것이 쉽다.
- 권한 부여가 쉽다.
JWT의 단점
- Payload의 디코딩이 쉽다.
- 토큰의 길이가 길어지면 네트워크의 부하를 줄 수 있다.
- 토큰이 자동 삭제되지 않는다.(만료 시간을 반드시 추가해야한다.)
728x90
'넓고 얕은 웹 지식 > 보안' 카테고리의 다른 글
세션 기반 자격 증명 방식과 토큰 기반 자격 증명 방식 (0) | 2022.11.22 |
---|