JWT와 API
JWT
json web token
인증(authentication)
로그인, 내가 이 사이트에 가입된 회원임을, 특정 서비스에 일정 권한이 주어진 사용자임을 아이디와 패스워드로 인증을 받는다.
인가(Authorization )
로그인을 하고 나서 어떠한 서비스를 이용할때 서버가 로그인 한 사람을 알아보는 것이다.
세션 방식
1. 로그인이 된다면 서버는 seccion ticket을 반쪽의 나누어 한 개는 클라이언트에게 보내고 클라이언트는 이 것을 웹 세션 스토리지에 저장하며, 나머지 한 개는 서버 메모리에 저장한다.
2. api 요청을 보낼때마다 http에 seccion ticket을 실어서 자동으로 보낸다.
3. 서버는 메모리에 저장되어있는 또 다른 반쪽 seccion ticket 으로 인가 처리를 완료한다.
그러나 서버가 재부팅 되면 메모리에 있던 게 다 날아가게 된다.
또한 만약에 서버가 여러대라면 각 서버 메모리마다 seccion ticket이 보관되고 client의 seccion ticket은 어떤 서버메모리에 또 다른 반쪽의 seccion ticket이 있는지 몰라 인가를 받는데 오랜 시간이 걸리게 된다.
이 점을 보완하기 위한것이 jwt 방식이다.
JWT
1. 로그인이 되면 서버는 한 개의 jwt 토큰을 클라이언트에 보내 저장한다.
2 클라이언트는 서버의 요청이 필요할 때마다 이 jwt 토큰을 자동으로 실어서 인가를 받아옵니다.
jwt 토큰은 json 형식의 정보를 인코딩(암호화)한 후 보낸다.
안에는 이 토큰이 누구에게 발급 됬는지, 이 토큰이 언제까지 유효한지가 들어있으며, 즉 서버의 메모리에 들어가야 할 정보들이 암호화 되서 클라이언트 보내므로 서버가 메모리에 저장하는 일을 없앨 수 있게 된다.
추가로 암호화는 서버의 "시크릿 키"가 추가로 들어있어 보안에도 문제가 없다.
API
Appication Programming Interface
내부의 구현 사항을 잘 숨겨두고 외부에서 사용하는 사람이 필요한 것만 노출해 두고 사용하는 인터페이스를 api라고 한다. 즉, 사용자가 규격에 맞추어 요청(request)을 하면 서버는 그에 맞는 결과물만을 응답(response)만 해준다. 내부에 서버가 어떻게 작동하는지는 사용자가 알필요가 없다.
open api
회사 내부에서 사용하는 api를 외부의 다른 개발자가 이용할 수 있도록 공개적으로 오픈한 것을 open api이다.
대표적으로 한국 정보에서 제공하는 공공 api와 naver api, kakao api가 있다.
HTTP
hyper text transfer protocol
다양한 기기들을 서버에 있는 데이터를 읽고 쓰기 위해서는 서버가 제공하는 web api를 이용하여 처리한다.
네트워크에서 기기들간의 web api 요청은 http 라는 hyper text transfer protocol 규격사항을 맞추어 보낸다.
REST
Representational State Transfer
네트워크를 이용하는 api의 설계는 rest 규칙에 따라서 설계해야한다.
총 4가지로 구성되어 있으며
get, post, put, delete 가 포함 되어있다. 이는 http에 포스팅 된 내용을 참고한다.
참고)
- JWT) https://www.youtube.com/watch?v=1QiOXWEbqYQ&ab_channel=%EC%96%84%ED%8C%8D%ED%95%9C%EC%BD%94%EB%94%A9%EC%82%AC%EC%A0%84
- HTTP) https://www.youtube.com/results?search_query=api