TIL - JWT와 API

박지민·2022년 6월 26일
2

TIL

목록 보기
20/25
post-thumbnail

1. JWT란 무엇인가?


  JWT란 Json Web Token의 약자로 모바일 혹은 웹에서 사용자 인증을 위해 사용되는 암호화 된 토큰을 의미한다. JWT는 토큰 자체를 정보로 사용하는 Self-Contained 방식으로 정보를 안전하게 전달하며 주로 회원 인증 및 정보 전달에 사용된다.

2. JWT의 구성


  JWT는 크게 점( . )으로 구성된 세부분으로 구성되는데 이는 각각 'header', 'payload', 'signature'로 불리며 각 부분은 Base64Url로 인코딩 되어 표현된다.

2.1 Header

  토큰의 첫번째 부분인 header는 typ과 alg 두 가지 정보로 구성된다. typ은 토큰의 타입을 지정하며 alg는 알고리즘에 방식을 지정하여 signature 및 토큰 검증에 사용된다.

2.2 payload

  두번째 부분 페이로드에는 토큰에서 사용할 정보의 조각들인 클레임(Claim)이 담겨 있으며
클레임은 Registered claims, Public claims, Private claim으로 나뉜다.

2.3 Signature

  Signature는 토큰을 인코딩하거나 유효성 검증을 할 때 사용하는 고유한 암호화 코드이다. Signature는 위에서 만든 Header와 Payload의 값을 각각 BASE64Url로 인코딩하고, 인코딩한 값을 비밀 키를 이용해 Header에서 정의한 알고리즘으로 해싱을 하고, 이 값을 다시 BASE64Url로 인코딩하여 생성한다.

  이렇게 생성된 3가지의 값을 합쳐 JWT를 만들게 된다.

3. JWT 장단점


장점

  • 세션/쿠키 방식과 달리 서버측 부하를 낮출 수 있다.
  • 확장성 및 유지보수에도 용이하다.
  • 토큰 기반 인증 시스템에 접근이 가능히다.

단점

  • 서버가 아닌 클라이언트에서 token을 관리하기 때문에, 세션과 달리 변조의 위협이 생겨도 만료시간까지 토큰을 삭제하지 못한다.
  • 토큰 탈취 시, PayLoad안의 데이터가 유출될 수 있기 때문에 담을 수 있는 데이터가 한정적이다.
  • 저장할 필드 수에 따라서 토큰이 커질 수 있어 커진 필드 수 만큼 네트워크 대역폭 낭비가 심해진다.



4. API란 무엇인가?


  API란 Application Programming Interface의 약자로 컴퓨터와 소프트웨어를 연결하는 역할을 담당한다. 예를 들어 간단하게 설명하자면 우리가 은행에 돈을 찾으러 간다면 금고는 DB, 은행창구는 API라고 할 수 있다. 은행원이 내가 비밀번호를 모르거나 다른사람의 통장을 통해 돈을 인출하려고 한다면 거절하는 것과 같이 API도 마찬가지로 허용된 사람들에게만 DB 접근성을 부여한다.

5. API의 역할


4.1 위에서 설명한 것과 같이 API는 서버와 데이터베이스에 대한 창구 역할을 한다. API는 허가 받지 않은 사람이 DB에 접근하는 것을 를 방지하기 위해 여러분이 가진 서버와 데이터베이스에 대한 출입구 역할을 하며, 허용된 사람들에게만 접근성을 부여해준다.

4.2 API는 애플리케이션과 기기가 데이터를 원활하게 주고 받을 수 있도록 한다.

4.2 API는 모든 접속을 표준화한다. API는 모든 접속을 표준화하기 때문에 기계/운영체제 등과 상관없이 누구나 동일한 액세스를 얻을 수 있다.

6. API유형


6.1 private API : private API는 내부 API로, 회사 개발자가 자체 제품과 서비스를 개선하기 위해 내부적으로 발행하며 3자에게 노출되지 않는다.

6.2 public API : public API는 개방형 API로, 모두에게 공개되며 누구나 제한 없이 API를 사용할 수 있다.

6.3 partner API :partner API는 기업이 데이터 공유에 동의하는 특정인들만 사용할 수 있다. 비즈니스 관계에서 사용되는 편이며, 종종 파트너 회사 간에 소프트웨어를 통합하기 위해 사용된다.

7. API 사용의 장점


  Private API를 이용할 경우, 개발자들이 애플리케이션 코드를 작성하는 방법을 표준화함으로써, 간소화되고 빠른 프로세스 처리를 가능하게 한다. 또한, 소프트 웨어를 통합하고자 할 때는 개발자들 간의 협업을 용이하게 한다. public API와 partner API 를 사용하면, 기업은 타사 데이터를 활용하여 브랜드 인지도를 높일 수 있으며 뿐만 아니라 고객 데이터베이스를 확장하여 전환율까지 높일 수 있다.

8. API 사용의 단점


  API 사양이 변경될 때마다 조정이 필요하며. 사양변경에 대응하지 않을 경우 시스템 오류가 발생 할 수 있다.




9. 한주를 마치며

  이번 한주는 정말 도움만 받은 것 같다. 웹 개발 풀스택 미니 프로젝트부터 지금 진행하고 있는 알고리즘 주차까지 누군가에 도움을 받지 않은 적이 없는 것 같다. 항해를 준비하면서부터 했어야하는 것들을 그 동안 일했던 것에 대한 보상이라는 핑계로 공부를 소홀이 한 것이 문제였을까? 20살때부터 지금까지 한번도 쉰 적이 없이 일만 했었지만 그래도 짬짬이 공부는 할 수 있었을텐데 말이다. 늘 블로그에 글을 적을 때마다 말하지만 부족함을 느끼며 열심히 하려고 한다. 그리고 그간 지나갔던 팀원분들과 현재의 팀원분들께 감사하다는 인사를 드리고 싶다.

  이번 주에 배운 것은 수도 없이 많은 것 같다. github를 제대로 사용하는 법부터 시작해서 현재에 Javascript의 메소드의 사용 방법 간단한 것으로는 지금 작성하고 있는 벨로그의 기반인 MD을 작성하는 법까지 말이다. 이러한 내용들은 나중에 블로그에 TIL로 정리하려고 한다.

profile
프론트엔드 개발자

2개의 댓글

comment-user-thumbnail
2022년 6월 27일

맥북 M1 프로 구매 축하드려요!

1개의 답글