[WIL] 항해99 1주차 (2022-01-10~2022-01-16)

miri·2022년 1월 16일
0

WIL

목록 보기
1/6

1. JWT(JSON Web Token)

JWT란?

▶️ 인증에 필요한 정보들을 암호화 시킨 토큰

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

▶️ JWT는 회원인증에 많이 사용됨, 로그인 성공 후 개인정보를 token형식으로 encode하여 사용자가 가지고 있다가 인증이 필요할때 JWT를 다시 decode 후 AUTH인증 함

JWT구조 : Header, Payload, Verify Signature

▶️ Header : 위 3가지 정보를 암호화할 방식(alg), 타입(type) 등이 들어감

▶️ Payload : 서버에서 보낼 데이터가 들어감(일반적으로 유저의 고유 ID값, 유효기간)

▶️ signature : Header와 Payload를 가지고 발급해준 서버가 지정한 시크릿키로 암호화함

JWT는 어떻게 인증에 사용되는가?

  1. 사용자 로그인
  2. 서버는 계정 정보를 읽어 사용자를 확인 후, 사용자의 고유ID값을 부여한 후, 기타 정보와 함께 Payload에 넣음
  3. JWT토큰 유효기간 설정
  4. 암호화할 SECRET KEY를 이용해 ACCESS TOKEN을 발급
  5. 사용자는 Access Token을 받아 저장한 후, 인증이 필요한 요청마다 토큰을 헤더에 실어 보냄
  6. 서버는 해당 토큰의 Verify Signature를 SECRET KEY로 복호화한 후, 조작 여부, 유효기간을 확인
  7. 검증완료시, Payload를 디코딩해 사용자의 ID에 맞는 데이터를 가져옴

JWT 장단점

▶️ 장점

  1. 간편함. 세션/쿠키는 별도의 저장소의 관리가 필요하지만, JWT는 발급한 후 검증만 하면 되기 때문에 추가 저장소가 필요 없음. 서버를 확장하거나 유지,보수하는데 유리함.

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

▶️ 단점

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

    해결책
    기존의 Access Token의 유효기간을 짧게 하고 Refresh Token이라는 새로운 토큰을 발급함. 그렇게 되면 Access Token을 탈취당해도 상대적으로 피해를 줄일 수 있음

  2. Payload 정보가 제한적임. Payload는 따로 암호화되지 않아 디코딩하면 누구나 정보를 확인할 수 있음. 유저의 중요한 정보는 Payload에 넣을 수 없음

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

2. API (Application Programming Interface)

API란?

▶️ 어떠한 응용프로그램에서 데이터를 주고 받기 위한 방법

▶️ 어떤 특정사이트에서 특정 데이터를 공유할 경우 어떤 방식으로 정보를 요청해야 하는지, 어떤 데이터를 제공 받을 수 있을지에 대한 규격들을 API라고 함

API의 역할

1) API는 서버와 데이터베이스에 대한 출입구 역할을 함
: DB에는 소중한 정보들이 저장되는데, 모든 사람들이 이 DB에 접근할 수 있으면 안 되기에 API는 이를 방지하기 위해 서버와 DB에 대한 출입구 역할을 하며, 허용된 사람들에게만 접근성을 부여해줌

2) API는 애플리케이션과 기기가 원활하게 통신할 수 있도록 함
: 여기서 애플리케이션이란 우리가 흔히 알고 있는 스마트폰 어플이나 프로그램을 말하며, API는 애플리케이션과 기기가 데이터를 원활히 주고받을 수 있도록 돕는 역할을 함

3) API는 모든 접속을 표준화함
: API는 모든 접속을 표준화하기 때문에 기계/운영체제 등과 상관없이 누구나 동일한 액세스를 얻을 수 있음. 쉽게 말해, API는 범용 플러그처럼 작동한다고 볼 수 있음

API를 사용하면 좋은점

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

▶️ public API와 partner API를 이용하면, 기업은 타사 데이터를 활용해 브랜드 인지도를 높일수 있고, 고객DB를 확장해 전활율도 높일 수 있음

3. 마무리

항해99를 시작하고 일주일이 지났다. 처음 시작하는 프로젝트부터 팀장을 맡게 되었고, 팀원들과 S.A도 작성하고, 새로운 기능들도 구현해보았다. 막상 첫 프로젝트를 끝내니 "아..더 잘할수 있었을텐데.."라는 생각도 들고 시원 섭섭하면서 한단계를 마무리 지었다는 생각에 뿌듯하기도 하다. 앞으로도 더욱 성장해나갈 미래를 생각하면서 기분좋게 한주를 마무리해본다!

0개의 댓글