두 개의 서버가 있습니다. DB를 쿼리하고 앱 데이터를 제공하는 Hasura GraphQL api 용 하나입니다. 다른 하나는 인증을위한 노드 서버입니다. 이 두 서버는 동일한 도메인에 있지 않습니다.
리 액트 스파 클라이언트가 있습니다. 사용자가 로그인하면 노드 서버는 hasura graphql 엔드 포인트로 자격 증명의 유효성을 검사하고 jwt 토큰 및 새로 고침 토큰을 클라이언트에 제공합니다. 리 액트 클라이언트와 노드 서버가 동일한 도메인에 있으므로 새로 고침 토큰은 httpOnly 쿠키를 통해 전송됩니다.
이제 jwt 토큰이 만료되면 자동으로 노드 서버에 쿠키로 전송되는 새로 고침 토큰을 사용하여 jwt 토큰을 자동으로 새로 고치고 싶습니다. 어떻게 구현할까요?
내가 생각할 수있는 한 가지 방법은 클라이언트 측에서 jwt를 디코딩하고 만료 된 경우 노드 서버의 새로 고침 토큰 끝점에 요청을 보내고 hasura graphql 서버에 요청을 보내기 전에 새 jwt 토큰을 가져 오는 것입니다. 인증 헤더로 전송 된 액세스 토큰이 필요합니다. 즉, 모든 graphql 요청 전에이 검사를 수행해야합니다. 이것이 최적화 된 방법입니까, 아니면 내 애플리케이션 아키텍처에 따라 토큰을 자동으로 새로 고치는 다른 방법이 있습니까?
공제를 사용합시다. 분명히 클라이언트 측에서 만료 시간을 확인하거나 Hasura가 대신 처리하도록 할 수 있습니다 (토큰이 만료 될 때마다 오류를 반환).
클라이언트 측에서 확인하면 Hasura를 호출하기 전에 몇 밀리 초를 잃게되지만 만료 된 토큰을 감지 할 때마다 단일 Hasura 왕복 시간을 절약하게됩니다. 언제든지 HTTP 호출을 통해 JWT 페이로드의 base64 디코딩을 수행하므로 IMO가 유일한 관심사 인 경우 JWT 자동 새로 고침 을 처리 하는 더 좋은 방법은 없습니다 .
OT이지만 IMHO JWT는 만료, 블랙리스트 등의 문제에있어서 훌륭한 솔루션이 아닙니다. 예 :
나는 그런 많은 경우에 사람들이 쿠키없이 만 일종의 세션을 구현하게 될 것이라고 생각한다 . 이것은 바퀴를 재발 명하는 것과 비슷하다.
가까운 장래에 비슷한 길을 가고 있다면 대신 Hasura의 웹훅 인증 시스템을 살펴 보는 것이 좋습니다. 최적의 선택 일 수 있습니다.
BTW, 그러한 질문은 Software Engineering SE에 더 적합 할 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다