[Ieum] Auth 관련 기록

LeeJaeJun·2022년 2월 24일
0

ieum

목록 보기
2/3

🔒 JWT 활용

JWT, Json Web Token ( https://jwt.io/ ) 기술을 도입하기로했다. RESTAPI로 카카오 로그인 후 클라이언트에 저장할 수단이 필요했다. 기존에는 세션을 사용하였으나 트렌드를 배우고자 사용했다.

JWT의 장점을 요약하면 이렇다. 로드벨런서를 사용하면 여러개의 서버를 운영하게 되고, 사용자는 어떤 서버에 어떻게 배정 받을지 모름으로 모든 서버에 동일한 세션을 작동시켜야한다. 결과적으로 세션 데이터베이스를 생성하고, 서버는 사용자가 접속하면 매번 세션 데이터베이스에 접근하여 값을 가져와야한다. 이는 서버 자원의 낭비로 이어지게 된다.

따라서 JWT는 클라이언트에 저장한다. 다만 클라이언트에서 조작이 일어나지 못하게 암호화하여 진행한다. 유효시간까지 존재하여 일정기간이 지나면 만료된다. 다만 클라이언트에 저장되는 값 자체가 암호화가 되는건 아니다. 헤더, 페이로드, 서명으로 나눠진 JWT의 구조에서 페이로드는 홈페이지에 값을 넣으면 누구나 볼 수 있다. 서명을 통해 값이 원본인지, 유효한지만 확인하는 것이다. 중요한 정보는 저장할 수 없다.

결과적으로 Ieum 에서는 id, nickname, accesstoken, refreshtoken을 담아 저장했다.

❓ 쿠키의 Path 설정

JWT 내용을 쿠키에 담아서 클라이언트에 저장 하였다. /auth 경로에서 쿠키를 생성하고 상위 경로에서 쿠키를 불러왔으나 실패했다. 개발자 도구를 확인해보니 하위 경로에서 작성한 쿠키는 활용할 수 없다고 한다. 원인은 Set-Cookie를 헤더로 설정할때 path는 루트로 적용해야 사용할 수 있다고한다. Set-Cookie: cookie=cookie; Path=/ 이런식으로 말이다.

0개의 댓글