1 minute read

JWT

웹 표준

JSON 객체를 사용하여 가볍고 자가수용적인 방식으로 정보를 안전성 있게 전달해줌

  • 특징

    • 주류 프로그래밍에서 지원함

      대부분의 주류 프로그래밍 언어에서 지원함

    • 자가 수용적임

      필요한 모든 정보를 자체적으로 지니고 있음

      토근에 대한 기본정보, 전달할 정보, 토큰이 검증됐다는 것을 증명해주는 signature를 포함함

    • 쉽게 전달할 수 있음

      자가 수용적이라 두 개체 사이에 손쉽게 전달 가능

  • 사용되는 상황

    • 회원 인증

      유조가 로그인을 하면 서버는 유저의 정보에 기반한 토큰 발급하여 유저에게 전달 유저는 받은 토큰을 서버에 요청할 때 마다 포함시켜서 전달 서버는 전달받은 토큰을 검증 한 뒤 그에 따른 작업 처리

    • 정보 교류

      정보에 sign이 되어있기 때문에 이 정보를 보낸이가 바뀌진 않았는지, 정보가 도중에 조작되지 않았는지 검증할 수 있음

  • 생김새

    ’.’을 구분자로 3가지의 문자열로 되어있음

    • 구조

      aaaaaa.bbbbbb.cccccc

      a는 헤더, b는 내용, c는 서명 으로 이루어짐

    • 헤더

      토큰의 타입을 지정한 typ, 해싱 알고리즘을 지정한 alg로 이루어짐

    • 정보

      토큰에 담을 정보인 클레임이 들어있음

      • 클래임

        담는 정보의 한 ‘조각’

        name/value 의 한 쌍으로 이루어짐

        • 분류

          • 등록된(registered) 클레임

            서비스에서 필요한 정보들이 아닌, 토큰에 대한 정보들을 담기위해 이름이 이미 정해진 클레임

            사용은 선택적

            이름으로 발급자, 제목, 대상자, 만료시간, 활성 날짜, 발급된 시간, JWT의 고유 식별자가 있음

          • 공개(public) 클레임

            충돌이 방지된 이름을 가지고 있어야 함

            클레임 이름을 URI 형식으로 지음

          • 비공개(private) 클레임

            양 측간에 협의하에 사용되는 클레임 이름

    • 서명

      헤더의 인코딩 값과 정보의 인코딩 값을 합친 후 주어진 비밀키로 해쉬를 하여 생성됨

Categories:

Updated: