7/99 API, JWT

2022. 5. 15. 23:46항해99 일지

오늘은 항해99 과정에서 처음으로 맞는 휴일이다.

과연 휴일이였을까 ? 

나만 휴일처럼 보내고있었다.

드라마도 좀 보고 느지막히 일어나서 카페가서 오후의 여유를 만끽하고 자전거도 타고  산책 겸 쇼핑도 하고 ..

여튼 슬랙에 자정까지 WIL을 쓰는 과제를 공지하셔서  강제로 맥북을 켰다. (원래 있었던 과제일걸)

출석현황판을 보니 나만 휴일이더라. 그래도 오늘 행복했으니 됐다 🐷

 

WIL 에 포함되어야 하는 내용 첫번째는 API.

일단 내가 1주차에서 체험한 걸 얘기하자면, 웹미니 개발 프로젝트 시작 단계에서

기능과 메소드, url, request, response 로 분류되어 있는 표를 채우는 과정이였다.

API 설계는 무작정을 작정으로 만들어주는 과정이라고 해야하나 ?

구현하고 싶은 기능들을 차례대로 적고 그것들이 어떤 메소드 인지 어느 url에 들어갈지

어떤걸 요청하고 어떤걸 받아야 하는지를  구체화 했다.

내 생각에 이건 어떻게 할지 룰을 정하는 것 같다. 프로젝트가 끝나갈 때즘 느꼈던건  룰을 아주 촘촘히  정할수록

과정에서 헤매는 시간이 적어진다는 것이다.

 

두번째는 JWT.

나는 로그인, 회원가입 담당이 아니였기에. 물론 이 프로젝트에서 가장 중요했던 파트(필수포함사항)는 이쪽이지만.

그래서 대충 아 이런거구나 하고 넘어가는 정도였다. 이후에 팀원분께서 설명해주는 시간을 가졌는데 그림까지 그려가면서

열띤 설명을 해주셨다. 그래서 머릿속에 어느정도 개념은 잡혀있다. 그래도 글로 쓰고자 하려면 좀 찾아보고..쓴다.

JWT 란 

유저를 인증하고 식별하기 위한 토큰기반 인증이다.

서버는 유저를 인증하는데  필요한 정보를 알고리즘을 거쳐 토큰에 저장하고 해당 토큰을 유저에게 준다.

이후 페이지를 요청하면 서버에 해당 토큰이 유효한지만 확인하면 검증하면 된다. 

세션 방식과 다르게 DB를 거치지 않는다. 세션 방식이 유저의 모든 정보를 담고있는 것과 달리

JWT는 암호화 되지 않았기 때문에 그렇지 않다.

이번 프로젝트에서는 클라이언트에서 로그인 정보를 서버에 전송하고 서버에서는 패스워드만 해쉬함수로 암호화하여 DB에서 값을 찾는다.

일치하는 값을 발견했다면 JWT 토큰을 발급한다. 이 토큰은 브라우저에 있는 쿠키에 저장된다.

 

한주동안 꽤 오랜시간 의자에 앉아있었는데 집중한 시간도 있었고 피곤해서 딴짓한 시간도 꽤 있었다.

그래도 혼자서라면 자리에서 박차고 밖으로 나갔을텐데 날 의자에 앉혀놓는 이 과정과 팀원들에 고맙다.

특히 열띤 설명 해주신 창민님께 감사드리며 첫주 WIL 끝.