토큰 관리가 어렵긴 하네요ㅠ_ㅠ! 정보
토큰 관리가 어렵긴 하네요ㅠ_ㅠ!본문
이거 아닙니다 하하...
는 농담이고
정말 1주일 내내 머리를 쓰고 쓰고 아이디어를 쥐어 짜내도 안되네요 ㅠ
결국 종착지로 선택한 경로는
억세스 + 리프레시 > 쿠키 저장 + 레디스 저장
억세스 토큰을 강제로 수정하거나 / 만료되거나 / 삭제 되었다면 리프레시 토큰을 쿠키에 가져오기는 하지만,
레디스에 내장된 리프레시 토큰을 비교해서 같지 않다면 집에 보냄....
그리고 맞다면 다시 리프레시 토큰을 api 서버에 리프레시를 통한 억세스 + 리프레시 재발급
형태로 도착했습니다.
혹시라도 임의 수정할 것을 감안해 1차적으로 레디스와 함께 검증하도록 한다는 게 어렵고 돌고 돌았습니다.
결론 ... 어렵고 어렵습니다.
어제 오늘 좀 바빠서 글 하나 못 남겼네요
처음으로 포.경 당첨되어서 좋은 도메인도 제 품으로 들어왔습니다.
그누6를 활용한 웹페이지 2개를 개발해야 하는 노선이군요
1
댓글 10개
토큰을 아실 정도면 나이... 아니 연세가?
@리자 저번에 울라프님 게시글에 40대라고 밝힌..ㅎㅎ
수고하십니다.
@잠실삼촌 감사합니당.
저는 DynamoDB + ttl 설정으로 토큰을 짧게 짧게 관리 하는것으로 설계 하였습니다.
서비스 운영 하다보면 토큰이 노출될수 밖에 없는데 토큰 유효기간이 길어지면 악용될 소지가 있어서 30분~1시간 이내로 토큰을 관리하고 있습니다.
리프레시 같은 부분은 또 다른 방법을 써서...
@똥싼너구리 PostgreSQL 이건 써본적이 없어서 ㅠㅠ 못 써봤지만,
몽고디비라면 아예 별도 설계해야 하지 않나요? 지원하는 디비가 아니라서요?
몽고디비 / 파베는 써봤는데...s3 형식의 오브젝트가 편하기는 편한데
또 헤갈리긴 헤갈리더라구요 ㅠㅠㅠ
억세스 30분 / 리프레시 1일 로 해놨습니다.
@미니님a
DynamoDB는 AWS 에서 제공하는 NoSQL Database 입니다.
서버리스로 구성되어 있어서 관리 포인트도 없구요
주로 응답 속도가 중요한 게임회사 FPS 게임등에서 많이 사용합니다.
@똥싼너구리 아 스펠링이 몽고가 아니였군요 (도망 도망)
ㅋㅋㅋㅋ 좋은 정보 감사합니다. 뭔지 확인해봐야겠습니다.
php(redis session) 을 타 플랫폼과 연동하는 방식만 써서
토큰 관리를 따로 만들어본적이 없네요.
만든다면, oauth2 기준으로 refresh token 까지 생성하는 방식을 쓸것 같습니다.
첫번째 방식은
front 에서는 브라우저 쿠키값중에 PHPSESSID 값을 추출하여 서버로 전송하고, 서버에서는 redis key 를 조회합니다. reids의 session 키는 PHPREDIS:{PHPSESSID} 형태로 저장되어 있습니다. 이 값을 읽은 다음에 파싱로직을 사용하여 해당 플랫폼(node, java, python) 에서 사용하는 객체나 배열구조로 변경합니다.
변경된값을 기준으로 SessionManager 를 만들고 값을 조회하거나 set 하도록 추가 코드를 작성합니다.
php session 스트링을 파싱하는 코드는 chatgpt 에 요청하여 작성합니다.
(예전에는 이걸 한땀한땀 테스트하면서 만들었는데, 요즘은 chatgpt가 더 잘 만듦)
기존 그누보드(PHP나 워드프레스) 로 된 웹사이트와 session 연동은 이정도로 처리하는게 좋다고 봅니다. jwt 등을 사용하면, 배보다 배꼽이 큰 상황이 생겨서...
@솔그루 그누6가 rest api 를 지원해서 억세스/리프레시 그 이외에 api 를 지원하고 있어서
분리하는 과정이랍니다.
현재 개발 된 사이트도 추후 그누6로 마이그레이션할 계획이구요
조금 어려운 php 보다는 제게 익숙한 javascript 가 더 좋아서요...
추후 그누5(플러그인+관리자) + 그누6(백) + 프론트 형태로 운영할 계획입니다.