Kimyeongkyung
항해99_1주차 회고(feat.미니 프로젝트) 본문
항해99를 시작하고 맞이한 첫 일요일이다.
이번 한 주가 어떻게 지나갔는지 모를 정도로 집중했던 것 같다.
월요일부터 목요일까지 4일간은 웹미니프로젝트 기간이었는데
항해 전 사전스터디 이후로 공식적인 첫 협업 경험이었다.
팀원분들과 의견을 나누고, 어떤 기능을 담당할것인지 정하면서
협업이 이런거구나에 대해 알 수 있었던 뜻깊은 시간이었다.
하루에 15시간 이상을 앉아 프로젝트에만 매진했고, 결국 결과물을 만들어 냈을 때 다같이 박수쳤다.
다같이 4일간 고생한걸 누구보다 잘 알기에 더 뿌듯했던 것 같다.
미니프로젝트가 끝나고 금요일부터는 바로 다음 일정이 시작되었다.
알고리즘 기초를 다지는 기간인데 첫날인 금요일에는 하루종일 알고리즘이 뭔지에 대해 파악하느라 하루를 보낸 것 같다. 프로그래머스가 뭘 하는 곳인지, replit가 어떨때 사용하는 건지, 어떻게 써야하는건지, 문제는 어떻게 접근을 해야하는건지 등등 혼란스러움의 연속이었지만 오후 되어서부터는 조금은 알 것 같았다. 알고리즘 주차는 미니 프로젝트 때처럼 새로운 팀원분들을 꾸려주셔서 다같이 각자 맡은 문제를 돌아가면서 풀이법을 설명하는 방식이었다. 사실 누군가에게 설명을 하는걸 어색해하는 성격이기도 하고, 경험해본적도 없을 뿐더러 아직 문제풀이를 할때 완전히 이해를 하지못한 상태이다 보니 설명하기가 어려웠다. 팀원분들에게 도움이 되고 싶은데 그러지 못하고 있는 것 같아서 더 노력해야겠다는 생각이 많이 든다.
좋은 팀원분들 덕분에 동기부여도 되고 참 좋은 것 같다. 앞으로 남은 기간도 결코 쉽지만은 않겠지만 함께 달리고 있는 분들이 있고, 하루하루 나아지고 있는게 느껴져서 마지막까지 잘 해낼 수 있을거라 생각한다.
이번 WIL의 키워드
1. JWT(JSON Web Token)
: JSON 형식의 데이터를 저장하는 토큰.
- HEADER : 토큰의 종류, 해시 정보 알고리즘을 담는 곳
- PAYLOAD : 실질적인 토큰의 내용물을 인코딩하여 담는 곳
- SIGNATURE : 일련의 문자열로서, 이것을 통해 토큰이 변조되었는지를 확인
인증과정
- 클라이언트 로그인 요청이 들어오면, 서버는 검증 후 클라이언트 고유 ID 등의 정보를 Payload에 담습니다.
- 암호화할 비밀키를 사용해 Access Token(JWT)을 발급합니다.
- 클라이언트는 전달받은 토큰을 저장, 서버에 요청할 때 마다 토큰을 요청하고, 서버는 헤더 Authorization에 포함시켜 함께 전달
- 서버는 토큰의 Signature를 비밀키로 복호화한 다음, 위변조 여부 및 유효 기간 확인
- 유효한 토큰이라면 요청에 응답
장점
1. Header와 Payload를 가지고 Signature를 생성하므로 데이터 위변조를 막을 수 있음
2. 인증 정보에 대한 별도의 저장소가 필요없음
단점
1. JWT는 토큰의 길이가 길어, 인증 요청이 많아질수록 네트워크 부하가 심해짐
2. 토큰을 탈취(해킹)당할경우 대처하기 어려움(한 번 발급되면 유효기간이 만료될 때 까지 계속 사용이 가능)
2-1) 해결책
1. 토큰의 만료 시간을 짧게 설정하는 방법.
=> 토큰이 탈취되더라도 빠르게 만료되기 때문에 피해 최소화. 그러나 사용자가 자주 로그인해야 하는 불편함 수반.
=> Sliding Session : 서비스를 지속적으로 이용하는 클라이언트에게 자동으로 토큰 만료 기한을 늘려주는 방법.
3. 특정 사용자의 접속을 강제로 만료하기 어려움
VS cookie/session 비교
유사점 : JWT 토큰(Access Token)을 HTTP 헤더에 실어 서버가 클라이언트 식별
인증과정
- 서버는 클라이언트의 로그인 요청에 대한 응답을 작성할 때, 인증 정보는 서버에 저장하고(비밀번호 등) 클라이언트 식별자인 JSESSIONID를 쿠키에 담음
- 이후 클라이언트는 요청을 보낼 때마다, JSESSIONID 쿠키를 함께 보냄
- 서버는 JSESSIONID 유효성을 판별해 쿠키에 담긴 정보를 바탕으로 클라이언트 식별
장점
1. 서버에서 세션 통제 가능
단점
1. 보안에 취약함
2. API(Application Programming Interface)
: 상호간의 소통을 위한 매개체, 방법(ex. 사람-사람 / 사람-사물 / 사물-사물)
= 데이터를 주고받기 위한
'TIL & WIL' 카테고리의 다른 글
항해99_4주차 회고 (0) | 2022.04.03 |
---|---|
항해99_3주차 회고록 (0) | 2022.03.27 |
TIL 2022.03.24 (0) | 2022.03.24 |
TIL ) 2022.3.23 (0) | 2022.03.23 |
[스파르타 코딩클럽] 웹개발 종합반 5주간의 여정_항해99 사전 준비 (0) | 2022.02.11 |