[상황]
소셜 로그인된 사용자가 5번모임을 클릭해 상세정보창으로 이동한다.
모임에 대한 정보를 읽어본 후 참여하기 버튼을 눌러 참여하기를 신청한다. (POST)
참여하기 버튼을 눌렀을때 POST로 넘어 가야할 필요한 정보
1. 로그인된 사용자의 PK
2. 사용자가 선택한 방의 PK
[질문]
사용자가 선택한 방의 PK값은 빼내올 수 있는데, 로그인된 사용자의 정보는 토큰에 담겨있다고 하는데 토큰은 어디에 위치해 있나요? 클라이언트 브라우저의 쿠키인가요 세션인가요?
[답변]
>> JWT 기반 인증은 JWT 토큰(Access Token)을 HTTP 헤더에 실어 서버가 클라이언트를 식별하는 방식이다
출처: https://inpa.tistory.com/entry/WEB-📚-JWTjson-web-token-란-💯-정리#Token_인증_방식 [👨💻 Dev Scroll:티스토리]
정답은 쿠키도 세션도 아니었다. 기존에 쿠키와 세션에 저장해두고 로그인 하는 방식에 얽매여 있어서 생각이 거기까지만 닿았었는데 JWT 인증방식은 달랐다.
[인증방식]
클라이언트는 서버 측에서 전달받은 토큰을 쿠키나 스토리지에 저장해 두고, 서버에 요청을 할 때마다 해당 토큰을 서HTTP 요청 헤더에 포함시켜 전달한다.
서버는 전달받은 토큰을 검증하고 요청에 응답한다.
토큰에는 요청한 사람의 정보가 담겨있기에 서버는 DB를 조회하지 않고 누가 요청하는지 알 수 있다.
<검색해서 얻은 정보>
- 회원 인증: JWT 를 사용하는 가장 흔한 시나리오 입니다. 유저가 로그인을 하면, 서버는 유저의 정보에 기반한 토큰을 발급하여 유저에게 전달해줍니다. 그 후, 유저가 서버에 요청을 할 때 마다 JWT를 포함하여 전달합니다. 서버가 클라이언트에게서 요청을 받을때 마다, 해당 토큰이 유효하고 인증됐는지 검증을 하고, 유저가 요청한 작업에 권한이 있는지 확인하여 작업을 처리합니다.
서버측에서는 유저의 세션을 유지 할 필요가 없습니다. 즉 유저가 로그인되어있는지 안되어있는지 신경 쓸 필요가 없고, 유저가 요청을 했을때 토큰만 확인하면 되니, 세션 관리가 필요 없어서 서버 자원을 많이 아낄 수 있죠.
'프로젝트 > 창업 프로젝트 (DRF + AWS)' 카테고리의 다른 글
[프로젝트][에러][uWSGI] 클라이언트 연결 닫음 [해결] (0) | 2022.08.29 |
---|---|
[회고][Django][DRF][RestAPI] 아이디어 '캐밋'을 구현하며 (4) | 2022.08.23 |
[아이디어톤][멋쟁이사자처럼] 본선 진출 회고 (2) | 2022.07.26 |
[아이디어톤] 내 눈앞에 보이던 것 보다 더 큰 숲이 있었고, 나는 좀 더 진지해졌다. (0) | 2022.07.08 |
[백준] 3107 (0) | 2022.07.01 |