지난 시간에 이어 JWT 에 대해서 이야기 해보겠습니다.
Json 포맷을 사용하여, 토큰 자체를 정보로 사용하는 방식으로 주로 회원 인증이나, 정보 전달에 사용된다.
- JWT 구조
- Header, Payload, Signature 의 3 부분으로 이루어지며, JSON 형태인 Base64Url 로 인코딩 되어 표현된다.
- 각각의 부분을 이어 주기 위해서 . 구분자를 사용하여 구분한다.
- Header
- 토큰의 헤더는 typ, alg 두 가지 정보로 구성된다.
- alg 는 헤더를 암호화 하는 것이 아니라, signature 를 해싱하기 위한 알고리즘을 지정하는 것이다.
- typ : 토큰의 타입을 지정 ex)JWT
- alg : 알고리즘 방식을 지정하며, signature 및 토큰 검증에 사용
- payload
- 토큰의 페이로드에는 토큰에서 사용할 정보의 조각들인 클래임(Claim)이 담겨있다.
- signature
- signature 는 토큰을 인코딩 하거나, 유효성 검증을 할 때 사용하는 고유한 암호화 코드이다.
- signature 은 헤더와 페이로드의 값을 각각 Base64Url 로 인코딩하고, 인코딩 한 값을 비밀 키를 이용해 헤더에서 정의한 알고리즘으로 해싱하고, 다시 Base64Url 로 인코딩 하여 생성한다
- JWT 단점 및 고려사항
- 토큰 자체의 정보를 담고 있기에 양날의 검이 될 수 있다.
⇒ 토큰의 목적은 정보 전달이 아니다!! 인증의 목적이 있다!! - Payload 인코딩 : 페이로드 자체는 암호화 된 것이 아니라, Base64Url 로 인코딩 된 것이다. 중간의 payload 를 탈취하여 디코딩 하면 바로 볼 수가 있기에, 중요 데이터를 포함하지 않아야 한다.
- JWT 는 상태를 저장하지 않기 때문에, 한번 만들어지면 제어가 불가능하다. 즉 토큰을 임의로 삭제하는 것이 불가능하기 때문에, 토큰 만료 시작을 꼭 넣어주어야 한다.
- 토큰을 클라이언트에서 관리해야 하기 때문에, 토큰을 저장해야 한다.
- 토큰 자체의 정보를 담고 있기에 양날의 검이 될 수 있다.
'CS > 네트워크' 카테고리의 다른 글
[IT 엔지니어를 위한 네트워크 입문] Chapter2. 네트워크 연결과 구성요소 (0) | 2023.01.10 |
---|---|
[IT 엔지니어를 위한 네트워크 입문] Chapter1 네트워크 시작하기 (1) | 2023.01.10 |
세션과 토큰 (0) | 2022.06.27 |
리다이렉션? (0) | 2022.06.01 |
컴퓨터는 인터넷에서 어떻게 통신할까? (0) | 2022.05.30 |