JWT
JWT는 . 을 구분자로 헤더(Header).내용(payload).서명(signature)의 문자열 조합니다.
- Header 에는 JWT 에서 사용할 타입과 해시 알고리즘의 종류가 담긴다.
- Payload 는 서버에서 첨부한 사용자 권한 정보와 데이터가 담긴다.
토큰에서 사용할 정보의 조각들인 Claim 이 담겨있다. (실제 JWT 를 통해서 알 수 있는 데이터)
즉, 서버와 클라이언트가 주고받는 시스템에서 실제로 사용될 정보에 대한 내용을 담고 있는 섹션이다.
※ Claim : key-value 형식으로 이루어진 한 쌍의 정보
- Signature 에는 Header, Payload 를 Base64 URL-safe Encode 를 한 이후 Header 에 명시된 해시함수를 적용하고, 개인키(Private Key)로 서명한 전자서명이 담겨있다.
전자서명에는 비대칭 암호화 알고리즘을 사용하므로 암호화를 위한 키와 복호화를 위한 키가 다르다. 암호화(전자서명)에는 개인키를, 복호화(검증)에는 공개키를 사용한다
정리하자면, 서버는 토큰 안에 들어있는 정보가 무엇인지 아는게 중요한 것이 아니라 해당 토큰이 유효한 토큰인지 확인하는 것이 중요하기 때문에, 클라이언트로부터 받은 JWT의 헤더, 페이로드를 서버의 key값을 이용해 시그니처를 다시 만들고 이를 비교하며 일치했을 경우 인증을 통과시킨다.
JWT은 서명(인증)이 목적이라는 것을 기억하자 !
API(Application Programing Interface)
API는 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다.
※ 인터페이스 : 말 그대로 어떤 기계간의 장치끼리 정보를 교환하기 위한 수단이나, 방법
API는 응용 프로그램에서 사용할 수 있도록, 운영 체제 혹은 프로그래밍 언어게 제공하는 인터페이스(규격)을 의미합니다.
- API는 사용하는 방법과, 용도에 따라 오픈 API와, 비공개 API 정보가 있습니다.
오픈 API는 말 그대로 누구나 쉽게 접근하여 정보를 공유하기 위해 만들어진 규격이며, 비공개 API는 권한이 있는 일부 사용자들에게만 정보를 제공하기 위해 만들어진 규격이라고 생각하시면됩니다.
Q.
그렇다면 API를 제공하는 이유는 무엇일까요? 정보를 가지고 있는 입장에서, 남들에게 정보를 제공하기 위해서 별도의 규격을 만들어야하고, 그 규격에 대한 설명 문서도 만들어야합니다. 너무 불편하죠.. 하지만 왜 대형 플랫폼들은 수 많은 오픈 API를 제공하고 있을까요?
A.
예를들어 페이스북이나, 네이버, 카카오톡과 같은 대형 플랫폼에서는 대부분 간편 로그인 API 정보를 제공하고 있습니다. 간편 로그인 API의 목적은 사용자가 여러 사이트를 하나식 가입하다보면, 너무 많은 사이트에 가입해야하는 단점이 있으니, 누구나 사용하고 있는 대형 플랫폼의 가입정보를 공유함으로써 간편하게 회원가입을 할 수 있도록 설계된 API입니다.
만약 여러분이 카카오톡 간편 로그인 기능을 통해 여러 사이트를 가입했다고 가정해보겠습니다.
카카오톡을 사용하던 도중에 질려서 탈퇴하고 싶은 마음이 생겼다 하더라도 카카오톡을 탈퇴하는 순간 카카오톡을 통해 가입했던 수 많은 사이트 또한 포기해야되는 상황이 발생하게됩니다.
즉, 간편 로그인 기능을 제공함으로써 플랫폼 이탈율을 현저히 줄일 수 있기 때문에 대형 플랫폼들은 간편 로그인 기능을 제공하고 있습니다. 공유 경제 시대가 흐르면서 정보를 독점하는것보다 공유함으로써 더 많은 이익을 가져갈 수 있는 생태계가 만들어지고 있으며, 이러한 과정에서 다양한 오픈 API와, 비공개 API들이 존재하는것이죠!
'항해99 > TIL' 카테고리의 다른 글
로그인 토큰 저장 (0) | 2022.11.28 |
---|---|
에러 마주하기 (0) | 2022.11.02 |
항해 5주차(주특기 숙련주차)-1 (0) | 2022.10.19 |
서버리스란? (0) | 2022.10.09 |
Virtual DOM 왜 리액트에서 이걸 쓸까? (0) | 2022.10.09 |