항해99 1주차 WIL [9/19]

이지연·2021년 9월 19일
0

항해99 주차별 WIL

목록 보기
1/3
post-thumbnail

항해99 코딩 부트캠프를 시작하고 그야말로 폭풍과 같던 1주일이 지났다. 아직은 많은 것이 부족한 자신이기에 모자란 지식을 총동원하여 지낸 1주일은 '더 잘할 수 있었을텐데'의 향연이었던 것 같다. 그리고 고작 1주일이 지났을 뿐인데, 너무나 많은 일들이 몰아쳐서 마치 몇 주는 금새 지나간 기분도 든다. 하지만, 이 시간이 지나면 분명 더 발전한 나 자신과 마주하리라 믿고 1주차 WIL을 작성해보고자 한다.

JWT (Json Web Token)

▶JWT는 세션/쿠키와 함께 모바일과 웹의 인증을 책임지는 대표주자로서, 인증에 필요한 정보들을 암호화시킨 토큰.

▶사용자는 Access Token(JWT 토큰)을 HTTP 헤더에 실어 서버로 보냄.

토큰을 만들기 위해 필요한 3가지!

  • Header : Header, Payload, Verify Signature의 정보를 암호화할 방식(alg), 타입(type) 등이 들어감.
  • Payload : 서버에서 보낼 데이터가 들어가며, 일반적으로 유저의 고유 ID값, 유효기간이 들어감.
  • Verify Signature : Base64 방식으로 인코딩한 Header,payload 그리고 SECRET KEY를 더한 후 서명됨.

JWT가 인증에 사용되는 방식

세션/쿠키 방식과 가장 큰 차이점과 장단점

▶세션/쿠키는 세션 저장소에 유저의 정보를 넣는 반면, JWT는 토큰 안에 유저의 정보들을 넣는다는 점이 큰 차이!

(장점)

  1. 간편함. 세션/쿠키는 별도의 저장소의 관리가 필요하나, JWT는 발급한 후 검증만 하면 되기 때문에 추가 저장소가 필요없고 이는 Stateless 한 서버를 만드는 입장에서는 큰 강점이 될 수 있음. 여기서 Stateless는 어떠한 별도의 저장소도 사용하지 않는, 즉 상태를 저장하지 않는 것을 의미하며, 이는 서버를 확장하거나 유지,보수하는데 유리함.

  2. 확장성이 뛰어남. 즉, 토큰을 기반으로 하는 다른 인증 시스템에 접근이 가능함. 예를 들어 Facebook 로그인, Google 로그인 등은 모두 토큰을 기반으로 인증을 하며, 선택적으로 이름이나 이메일 등을 받을 수 있는 권한도 받을 수 있음.

(단점)

  1. 이미 발급된 JWT에 대해서는 돌이킬 수 없음. 세션/쿠키의 경우 만일 쿠키가 악의적으로 이용된다면 해당하는 세션을 지워버리면 되지만, JWT는 한 번 발급되면 유효기간이 완료될 때 까지는 계속 사용이 가능함. 따라서 악의적인 사용자는 유효기간이 지나기 전까지 신나게 정보들을 털어갈 수 있음.

  2. Payload 정보가 제한적임. 위에서 언급했다시피 Payload는 따로 암호화되지 않기 때문에 디코딩하면 누구나 정보를 확인할 수 있고, 따라서 유저의 중요한 정보들은 Payload에 넣을 수 없음. (세션/쿠키 방식에서는 유저의 정보가 전부 서버의 저장소에 안전하게 보관됨)

  3. JWT의 길이. 세션/쿠키 방식에 비해 JWT의 길이는 김. 따라서 인증이 필요한 요청이 많아질 수록 서버의 자원낭비가 발생하게 됨.

API (Application Programming Interface)

▶ API는 애플리케이션 소프트웨어를 구축하고 통합하기 위한 정의 및 프로토콜 세트

API 쉽게 이해하기

▶ API는 손님(프로그램)이 주문할 수 있게 메뉴(명령 목록)를 정리하고, 주문(명령)을 받으면 요리사(응용프로그램)와 상호작용하여 요청된 메뉴(명령에 대한 값)를 전달.

▶ 쉽게 말해, API는 프로그램들이 서로 상호작용하는 것을 도와주는 매개체.

API의 역할

  • API는 서버와 데이터베이스에 대한 출입구 역할을 하며, 데이터베이스에 저장된 민감한 정보들을 보호하기 위해 허용된 사람들에게만 접근성을 부여함.
  • API는 애플리케이션과 기기가 원활하게 통신할 수 있도록 하며, 여기서 애플리케이션이란 우리가 흔히 알고 있는 스마트폰 어플이나 프로그램을 말함.
  • API는 모든 접속을 표준화하기 때문에 기계/ 운영체제 등과 상관없이 누구나 동일한 액세스를 얻을 수 있음. 즉, API는 범용 플러그처럼 작동함.

API의 유형

  • private API : 내부 API로, 회사 개발자가 자체 제품과 서비스를 개선하기 위해 내부적으로 발행하며 제 3자에게 노출되지 않음.
  • public API : 개방형 API로, 모두에게 공개되며 누구나 제한 없이 API를 사용할 수 있는 것이 특징임.
  • partner API : 기업이 데이터 공유에 동의하는 특정인들만 사용할 수 있음. 비즈니스 관계에서 사용되는 편이며, 종종 파트너 회사 간에 소프트웨어를 통합하기 위해 사용됨.

API의 장점

▶ Private API를 이용할 경우, 개발자들이 애플리케이션 코드를 작성하는 방법을 표준화함으로써 간소화되고 빠른 프로세스 처리를 가능하게 함. 또한, 소프트 웨어를 통합하고자 할 때는 개발자들 간의 협업을 용이하게 만들어줄 수도 있음.

▶ public API와 partner API 를 사용하면, 기업은 타사 데이터를 활용하여 브랜드 인지도를 높일 수 있으며 고객 데이터베이스를 확장하여 전환율까지 높일 수 있음.

profile
개발하는 디자이너입니다.

0개의 댓글