본문 바로가기

Weekend I Learend

항해 1 주차 후기

항해 1 주차에서는 미니 프로젝트를 진행 하였다.

미니 프로젝트를 함께 할 팀원들은 총 4명 이였다. 프로젝트 개발 환경은 아래 표와 같다.

개발 언어 python
DB mongoDB
프레임워크 Flask
화면, 디자인 HTML, CSS, Bootstrap
웹서버  AWS (EC2)

 

개발 경험이 있었지만 위 표와 같은 개발환경은 화면, 디자인 쪽 빼고는 처음 써보는 기술이였다. 그래서 처음 써보는 언어로 미니 프로젝트를 무사히 마칠 수 있을지 걱정이 많이 되었었다. 하지만 개발 경험이 나 밖에 없었던 우리팀에게 불안감을 줄 순 없었다. 그래서 주도적으로 프로젝트 계획을 진행했고 팀원들이 부담스럽지 않도록 최대한 양보하자는 마인드를 가졌었다.

 프로젝트를 진행하면서 가장 힘들었던 부분은 개발에 어려움을 느끼고 있는 팀원에게 어떻게 도와주면 좋을지 고민했던 부분이다. 마냥 내가 그 팀원의 기능을 내가 해버린다면 팀원의 마음도 불편하고 공부도 나만 하는 꼴이 되는 것 같았고, 그러자니  팀원에게 조언과 방향성만 제시하기에는 개발을 이해하고 코딩하기에 프로젝트 마감시간이 부족했었다. 그래서 나는 고민 끝내 결론을 내었고, 그 결정은 좋은 결정인지는 모르겠지만 팀원에게 최대한의 마감시간을 부여한 뒤 그래도 갈피를 잡지 못한다면 내가 그 부분을 코딩하기로 했다. 그 후 팀원에게 내가 코딩한 부분을 알려주며 다시 한 번 코딩해보는 방식으로  팀원과 팀 둘다 성공적인 프로젝트가 될 수 있도록 노력했었다.

 이번 프로젝트에서는 기초적인 부분을 다시 한 번 공부 할 수 있었고, 팀원과의 조화를 잘 이룰 수 있는 경험이 되었던 것 같다.

https://github.com/yalla12/miniProjectmumu.git

이번 프로젝트에서 공부한 기술

  • JWT

- JWT란

Json Web Token 약자로 모바일이나 웹의 사용자 인증을 위해 사용하는 암호화된 토큰을 의미합니다. JWT 정보를 request에 담아 사용자응 정보 열람, 수정 등 개인적인 작업 등을 수행할 수 있게한다.

 

-JWT에 담겨진 3가지 정보

HEADER 토큰의 타입과 해시 암호화 알고리즘으로 구성되어 있습니다.
PAYLOAD 토큰에 담을 정보가 들어있습니다. 여기에 담은 정보의 한’조각’을 클레임(claim)이라고 부르고, 이는 name/value 의 한쌍으로 이뤄져있습니다. 클레임의 종류는 등록된(registered)클레임, 공개(public)클레임, 비공개(private)클레임 이 존재합니다.
SIGNATURE 서명은 [헤더 base64 + 페이로드 base64 + SECRET_KEY ] 를 사용하여 JWT 백엔드에서 발행됩니다
각 요청시 서명이 확인됩니다. 헤더 또는 페이로드의 정보가 클라이언트에 의해 변경된 경우 서명이 무효화됩니다.

- JWT 장점

  1. 무상태(stateless), 확장성이 있다. 기존 서버에 세션을 저장하는 방식에서 서버 여러대를 사용하여 요청을 분산하였다면 어떤 유저가 로그인했을 때 그 유저는 처음 로그인한 서버에만 요청을 내보내도록 설정해야합니다. 하지만 토큰을 사용하면 토큰 값만 알고 있다면 어떤 서버로 요청이 들어가던 상관이 없습니다. 즉, 세션스토리지가 필요없다!
  2. 보안성 쿠키를 전달하지 않아도 되므로 쿠키를 사용함으로써 발생하는 취약점이 사라집니다.
  3. 여러 플랫폼 및 도메인 어플리케이션 규모가 커지면 여러 디바이스를 호환 시키고 더 많은 종류의 서비스를 제공합니다. 토큰을 사용한다면 그 어떤 디바이스에서도 그 어떤 도메인에서도 토큰만 유효하다면 요청이 정상적으로 처리 됩니다.

- JWT장점 

  1. 길이 claim에 넣는 데이터가 많아질 수록 JWT토큰이 길어집니다. API호출 시 매 호출마다 토큰 데이터를 서버에 전달해야 하는데 길이가 길다는 것은 그만큼 네트워크 대역폭 낭비가 심할 수 있습니다.                                                                 
  2. 보안 JWT는 기본적으로 Payload에 대한 정보를 암호화 하지 않습니다. 단순히 BASE64로 인코딩만 하기 때문에 중간에 패킷을 가로채거나 기타 방법으로 토큰을 취득했으면 디코딩을 통해 데이터를 볼 수 있습니다. 그래서 JWE(JSON Web Encryption)를 통해 암호화 하거나 중요데이터를 Payload에 넣지 말아야 합니다.

 

  • API

- API란

  • JWT

- API(Application Programming Interface, 응용 프로그램 프로그래밍 인터페이스)는 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다.

=> 위키디피아 

 

'Weekend I Learend' 카테고리의 다른 글

항해 5 주차 후기  (0) 2022.08.21
항해 4 주차 후기  (0) 2022.08.14
항해 3 주차 후기  (0) 2022.07.31
항해 2 주차 후기  (0) 2022.07.24