회원가입과 로그인을 진행하면서 Token 방식의 인증 인가를 구현하였고 이 방식을 구현하기 위해 JWT를 사용 하게되었다.
ACCES TOKEN을 생성하는 기술
클라이언트와 서버 서비스와 서비스 사이 권한 인가 를 위해 사용하는 토큰 이다.
URL에 대해 안전한 문자열로 구성이 되어있어 HTTP어디든 위치할수 있다.(URL,Header등)
HEADER.PAYLOAD.SIGNATURE
해더(HEADER), 페이로드(PAYLOAD), 서명(SIGNATURE) 세부분을 점으로 구분하는 구조이다.
- Header
- JWT를 검증하는데 필요한 정보를 가진곳
- alg는 서명시 사용하는 알고리즘이고 typ는 타입이다.
- kid도 있다고는 하는데 일단 kid는 서명시 사용하는 키를 식별하는 값이다.
- Payload
- JWT의 내용
- 페이로드에 있는속성을 클레임 셋(Clamim Set)이라고 부른다.
- 클레임셋은 JWT에 대한 내용(토큰 생성자(클라이언트)정보, 생성일시등)이나 클라이언트와 서버간 주고 받기로한 값들로 구성된다.
- Signature
- 점(.)을 구분해서 헤더와 페이로드를 합친 문자열을 서명한 값
- 서명은 헤더의 alg에 정의된 알고리즘과 비밀키를 이용해 생성하고 Base64 URL-Safe 로 인코딩한다.
이렇게 완성된 JWT는 헤더의 alg, kid 속성과 공개 키를 이용해 검증할 수 있다. 서명 검증이 성공하면 JWT의 모든 내용을 신뢰할 수 있게되고, 페이로드의 값으로 접근 제어나 원하는 처리를 할 수 있게된다.
'Django' 카테고리의 다른 글
쿼리 스트링 불러오기 (0) | 2022.07.06 |
---|---|
CSV Uploader (0) | 2022.07.06 |
Why convert saveDB byte → String (0) | 2022.07.06 |
Bcrypt 사용? (0) | 2022.07.06 |
암호화의 종류 (0) | 2022.07.06 |