JWT

동키·2022년 12월 1일
0

JWT(JSON Web Token)
=>https://jwt.io
=>JSON 데이터 구조로 표현한 토큰
=>API Server 나 로그인을 이용하는 시스템에서 매번 인증을 하지 않고 서버와 클라이언트가 정보를 주고받을 때 HttpRequest Header 에 JSON 토큰을 넣은 후 인증하는 방식
=>HMAC 알고리즘을 사용하여 비밀키 나 RSA 기법을 이용해서 Public Key 와 Private Key를 이용해서 서명
=>구성
HEADER: 토큰 종류 와 해시 알고리즘 정보
PAYLOAD: 토큰의 내용물이 인코딩 된 부분
SIGNATURE: 토큰이 변조되었는지 여부를 확인할 수 있는 부분

=>클라이언트가 서버에게 데이터를 요청할 때 키 와 domain을 json token 에 포함시켜 전송하고 서버를 이를 확인해서 유효한 요청인지 판단하고 데이터를 전송


쿠키는 동일한 도메인 내에서만 읽을 수 있습니다.
서버와 클라이언트 애플리케이션의 도메인이 다르면 쿠키는 사용할 수 없습니다.
설정을 하면 서로 다릉 도메인 간에도 쿠키를 공유할 수는 있지만 위험합니다.
서버와 클라이언트 애플리케이션의 도메인이 다른 경우는 세션을 이용해서 사용자 인증을 할 수 없습니다. 이 경우에는 서버에서 클라이언트에게 키를 발급하고 클라이언트는 서버에 요청을 할 때 키를 전송 해서 인증된 사용자라는 것을 알려줘야 합니다. 이때 키를 평문으로 전송하게 되면 중간에 가로채서 사용할 수 있습니다. 따라서 키와 클라이언트 URL을 합쳐 하나의 암호화된 문장을 생성해 전송합니다. 서버는 이러한 문장을 해독하고 키와 인가된 클라이언트의 URL을 확인합니다.
다른 곳에서 문장을 탈취해서 데이터를 요청한 경우, URL이 다르기 때문에 인가된 사용자가 아님을 확인하고 데이터를 전송해주지 않습니다.

=> API 서버 인증 방식은 이런 흐름으로 구성됩니다.

profile
안녕하시와리

0개의 댓글