[WIL] 항해99 1주차 (7일차)

돼지·2022년 1월 16일
0

항해99

목록 보기
12/104

1월 10일부터 1월 15일까지 주 6일차 일정이 마무리 됐다.
첫날부터 3.5일간 미니프로젝트를 진행하면서 발생한 문제점들을 먼저 짚어보겠다.

미니 프로젝트

CSS

  • 부트스트랩이나 불마를 사용
  • 여기서 문제는 쉽게 사용 될 줄 알았으나 오작동이 빈번했다.
  • 프로그램은 정상이니 사용한 내가 잘못인게 분명하다.
  • 아직도 스타일 효과를 이해못하거나 인지하지 못한것들이 너무 많았다.
  • 이를 개선하기 위해 내가 직접 써보면서 필요할 때 찾아보는 식을 해야겠다.

HTML

  • 개발관련 영상을 찾아볼 때 주로 하던 이야기 시멘틱 태그
  • 이 또한 아직 태그정의를 몰라 div 밭을 만들었다.

js

  • 회원가입 파트를 맡았는데 강의 속 코드를 갖다 쓴다.
  • 몰랐던 메서드들을 보며 이렇게 쓰는거구나 하며 사용했다.
  • 그래도 너무 부족하다. 내가 쓴거라곤 for문과 if문이 다였으니..

JWT

  • JSON Web Token (JWT) 은 웹표준 (RFC 7519) 으로서
    두 개체에서 JSON 객체를 사용하여 가볍고 자가수용적인 (self-contained) 방식으로
    정보를 안전성 있게 전달해줍니다.
  • 자가 수용적 (self-contained)
    JWT 는 필요한 모든 정보를 자체적으로 지니고 있습니다. JWT 시스템에서 발급된 토큰은, 토큰에 대한 기본정보, 전달 할 정보 그리고 토큰이 검증됐다는것을 증명해주는 signature 를 포함하고있습니다.

jwt 구조

  • Header, Payload, Signature의 3부분으로 이루어져 있다.
    Json 형태인 각 부분은 Base64로 인코딩 되어 표현된다. 각 부분을 이어주기 위해 .구분자를 반환한다.
  • Base64는 암호화된 문자열이 아니고, 같은 문자열에 대해 항상 같은 문자열을 반환한다

Header - 두가지(타입, 알고리즘)의 정보를 지니고 있다.
Typ : 토큰의 타입을 지정한다.
alg : 해싱 알고리즘을 지정한다.
해싱 알고리즘은 보통 HMAC SHA256(HS256) 혹은 RSA가 사용되며 알고리즘은 토큰을 검증할 때 사용되는 Signature 부분에서 사용된다.

Payload - 전달하려고 하는 정보가 저장된다. 크게 3가지로 구분된다. 여기에 담는 정보의 한'조각'을 클레임이라 부른다.

등록된 클레임
-이름이 정해진 클레임이다.
-모두 선택적으로 사용 가능하다.
-구글링하면 사진이 나옴.
공개 클레임

  • 사용자 정의 클레임으로 공개용 정보를 위해 사용된다.
  • 충돌이 방지된 이름이 있어야 하고 충돌 방지를 위해 URl형식으로 짓는다.
    비공개 클레임
  • 서버와 클라이언트 간 협의하에 사용되는클레임이다.
  • 이름이 중복되어 충돌이 될 수 있으니 사용에 유의해야 한다

signature(서명) - 헤더의 인코딩값과 정보(페이로드)의 인코딩 값을 (base64) 합친 후 주어진 비밀키로 해쉬를 하여 생성한다.

나중에 https://jwt.io/에 값을 넣어 확인해보자.

JWT 장단점

장점
1. statelsee이며 확장성이 있다.

  • 서버와 클라이언트 간에 상태 정보를 저장하지 않으며 토큰을 가지고 있고 유효하다면 서버로부터 데이터를 요청 할수 있다.
  • 서버를 여러대 사용하거나 클라이언트 단말의 종류(pc,모바일 등)가 다양할 경우에도 토큰만 유효하다면 어떤 단말이든 서버로부터 데이터를 받을수 있다.
  1. 사용자 인증에 필요한 인증 저장소가 필요없다.
  • 인증정보가 토큰자체에 포함되어 있기 때문에 별도의 인증 저장소가 필요 없다.

단점
1. 한번 발급된 토큰은 수정 및 삭제 할 수 없다.

  • jwt는 stateless하기 떄문에 토큰에 대한 정보를 관리하지 않는다.
    그래서 한번 만들어진 토큰은 삭제, 수정 할수 없다
  • 만약 토큰이 유출된다면 토큰이 만료될 때 까지 토큰을 가로챈 사용자가 서비스를 이용할 수 있다.
  1. Payload 인코딩
  • payload값이 암호화 된 값이 아닌 Base64로 인코딩 된 값이라 누구나 확인할수 있다.
    그래서 중요한 정보를 payload에 저장해서는 안된다.

API

Application Programming Interface
응용 프로그램 프로그래밍 인터페이스

나에게 첫 인상은 오픈api 라는 문구로 받아들여져 강의때 나온 실시간 미세먼지 정보 같은 것인줄 알았다.

그러다 강의 중 은행창구라는 비유를 들면서 이해 가기 시작했고,
이번에 포스팅하면서 완전 이해는 아니지만 흐름을 이해했다.

API는 어떠한 응용프로그램에서 데이터를 주고 받기 위한 방법을 의미한다. 어떤 특정 사이트에서 특정 데이터를 공유할 경우 어떠한 방식으로 정보를 요청해야 하는지, 그리고 어떠한 데이터를 제공 받을 수 있을지에 대한 규격들을 API라고 하는것이다.

나는 리그오브 레전드를 너무 좋아한다..
2012년부터 현재까지도 즐겨하는데 내가 좋아하는 게임 관련 업무를 하고싶다는 생각이 들게되면서 OP.GG 에서 일하고 싶은 생각을 자주 한다.

관련하여 리그오브레전드에도 api가 있고 이를 바탕으로 웹사이트를 만드는것 또한 내 미니프로젝트 목록 중 하나이다.

개발자라는 직업을 생각하기 전에는 몰랐던 개념들이 자주 접하면서 알게되니 세상을 보는 눈이 또 달라지는건 진짜 신기하다.

각 직업 및 업무에 있는 오픈api들을 찾아보고 그를 활용하여 서비스를 내는것.. 내 포트폴리오 목적보다 조촐한 내꿈이 됐다.

알고리즘

1월15일 업로드한 포스팅에 2일동안 알고리즘 문제를 풀면서 몰랐던 매소드를 작성해 두었다.

뭐.. 그래서 여기에는 생략할 생각이다.

회고

지난 일주일 진짜 너무 빠르게 지나갔다.
위 정리를 통해 많은 것을 배웠구나 라는 생각을 하지만 다른이들에 비해 새발의 피같다.
앞으로 일정은 지금보다 더 어려워 질테고 끊임없이 막혀 나를 지치게 하겠지만 목표를 되새기고 움직이자.

....

항상 포스팅 하면서 드는 생각은 나중에 이 글들을 보면 얼마나 한심할지 걱정된다.
회고록과 배운것 포스팅 구분이 너무 없어... 그래도 꾸준하게 써보자 그러면 언젠가 나도 모르게 잘 구분 하겠지
믿는다 미래의 나

profile
먐미

0개의 댓글

관련 채용 정보