항해99 이노베이션캠프가 이제 한주가 지났다
시작하자마자 팀 프로젝트를 4일동안 진행하고, 5일째인 금요일부터 팀 바뀌고 알고리즘 테스트 진행
노베이스에 첫프로젝트라 팀원끼리도 어색하고, 진행 흐름도 모르겠고, 코드도 모르겠고, 구동은 안되고,
게다가 팀장도 맡아버려서 신경도 써야겠고 아무튼 정신없고 갑갑한 상황이였다.
하지만 팀원도 다 좋고 분위기도 으쌰으쌰하면서 하니까 좋았다
코드 짤때는 머리 터지는 줄 알았지만, 팀원 도움도 많이 받아가면서, 강의도 보고 맡은 기능들 구현도 성공했고,
합칠때 각자 만들고 나중에 github로 합치려니까 난리나서 고생했지만
다같이 합친 웹사이트도 너무 잘나와서 완전 뿌듯했다!
금요일부터는 알고리즘스터디
모르는상태에서 할라니까 답을 봐도 헷갈린다.
토요일에 JS 기초 공부 진행하고 일요일에 문제를 다시 풀어보았다.
조금 나은데 매서드 쓰는거나 얼추 비슷한데 틀리게 쓰는거나 숙련도 이슈가 있다.
코드 안쳐본 티가 난다ㅜㅠ 최대한 풀이 많이 해봐야겠다.
이번주 주요 개념 정리
1. JWT
JWT(Json Web Token)은 토큰 기반 인증 방식으로, 사용자의 세션 상태를 저장하는 게 아니라 필요한 정보를 토큰 body에 저장해 사용자가 가지고 있고 그것을 증명서처럼 사용합니다. 사용자는 Access Token(JWT Token)을 헤더에 실어 서버로 보내게 됩니다.
[ JWT의 인증 방식 ]
- 클라이언트가 로그인을 위해 해당 정보를 서버에 전달
- 서버에서는 전달된 데이터로 사용자를 확인하고 사용자의 고유한 ID값을 부여한 후, 기타 필요한 정보와 함께 Payload에 추가
- JWT 토큰의 유효기간을 설정
- 암호화할 SECRET KEY를 이용해 Access Token을 발급
- 사용자는 Access Token을 받아 저장한 후, 인증이 필요한 요청마다 토큰을 헤더에 추가하여 전달
- 서버에서는 해당 토큰의 Verify Signature를 SECRET KEY로 복호화한 후, 조작 여부, 유효기간을 확인
- 해당 토큰이 유효하면 Payload를 디코딩하여 사용자의 ID에 맞는 데이터를 호출
세션/쿠키 방식과 가장 큰 차이점은 세션/쿠키는 세션 저장소에 유저의 정보를 넣는 반면, JWT는 토큰 안에 유저의 정보를 넣는다는 점입니다. 사용자 입장에서는 헤더에 세션ID나 토큰을 실어서 보내준다는 점에서는 동일하나, 서버 측에서는 인증을 위해 암호화를 하냐, 별도의 저장소를 이용하냐는 차이가 발생합니다.
[ 장점 ]
- 서버 기반 인증 시스템은 저장소의 관리가 필요하지만, 토큰 기반은 Access Token을 발급해준 후 요청이 들어오면 검증만 해주면 되기 때문에 추가 저장소가 필요 없다. 즉 Stateless 하다.
- 쿠키를 사용함으로 인해 발생하는 취약점이 사라진다. 하지만, 토큰을 사용하는 환경에서의 취약점에 대비해야 한다.
- 확장성이 뛰어나다. 토큰 기반으로 하는 다른 인증 시스템에 접근이 가능하다. Ex) facebook, Google 등
[ 단점 ]
- 이미 발급된 JWT를 돌이킬 수 없다. 서버 기반 인증 시스템처럼 저장소를 사용하는 경우에는 해당 세션이 악의적으로 사용될 경우 지워버리면 되지만, JWT는 한 번 발급되면 유효기간이 완료될 때 까지는 계속 사용이 가능하다.
- 즉, 유효기간이 지나기 전까지 실컷 털릴 수 있다.
- JWT의 길이가 길다. 인증이 필요한 요청이 많아질수록 서버의 자원 낭비가 발생한다.
2. API
API는 서버와 클라이언트가 요청과 응답을 사용하여 서로 통신하는 방법인데
어떻게 통신을 할 거냐에 따라 방식이 달라진다.
- SOAP API
이 API는 단순 객체 접근 프로토콜을 사용합니다. 클라이언트와 서버는 XML을 사용하여 메시지를 교환합니다. 과거에 더 많이 사용되었으며 유연성이 떨어지는 API입니다.
- RPC API
이 API를 원격 프로시저 호출이라고 합니다. 클라이언트가 서버에서 함수나 프로시저를 완료하면 서버가 출력을 클라이언트로 다시 전송합니다.
- Websocket API
Websocket API는 JSON 객체를 사용하여 데이터를 전달하는 또 다른 최신 웹 API 개발입니다. WebSocket API는 클라이언트 앱과 서버 간의 양방향 통신을 지원합니다. 서버가 연결된 클라이언트에 콜백 메시지를 전송할 수 있어 REST API보다 효율적입니다.
- REST API
오늘날 웹에서 볼 수 있는 가장 많이 사용되고 유연한 API입니다. 클라이언트가 서버에 요청을 데이터로 전송합니다. 서버가 이 클라이언트 입력을 사용하여 내부 함수를 시작하고 출력 데이터를 다시 클라이언트에 반환합니다.
REST API에서 자원에 대한 행위를 표현할 때 HTTP Method를 사용하고,
method는 HTTP Method를 말하고 GET, POST, PUT, PATCH, DELETE 등이 있다.
'TIL & WIL' 카테고리의 다른 글
[ React ] DOM과 ref (0) | 2022.08.12 |
---|---|
TIL : 숫자를 배열로 만드는 법 (0) | 2022.08.10 |
TIL - JWT(Json Web Token) /openAPI (0) | 2022.08.04 |
TIL - Flask web framework (0) | 2022.08.02 |
TIL - api 명세 (0) | 2022.08.01 |