React Spa에서 새로 고침 토큰을 처리하는 방법은 무엇입니까?

아리 트라 다타 굽타

두 개의 서버가 있습니다. 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를 호출하기 전에 인증 서버에 대한 호출을 시작해야합니다.
  • 당신이 그것을 처리하더라도, 당신이 (어떤 이유로 든) 앱로드에서 자동 로그인을 수행하기로 결정했다면? 아니면 일정 간격으로 자동 새로 고침 하시겠습니까? 단일 탭으로 쉽게 수행 할 수 있지만 사용자가 애플리케이션의 두 개 이상의 탭을 동시에 열면 상황이 매우 빠르게 진행됩니다.

나는 그런 많은 경우에 사람들이 쿠키없이 만 일종의 세션을 구현하게 될 것이라고 생각한다 . 이것은 바퀴를 재발 명하는 것과 비슷하다.

가까운 장래에 비슷한 길을 가고 있다면 대신 Hasura의 웹훅 인증 시스템을 살펴 보는 것이 좋습니다. 최적의 선택 일 수 있습니다.


BTW, 그러한 질문은 Software Engineering SE에 더 적합 할 수 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

vb.net을 사용하여 새로 고침 토큰에서 새 액세스 토큰을 새로 만드는 방법은 무엇입니까?

분류에서Dev

새로 고침 토큰을 보호하는 방법은 무엇입니까?

분류에서Dev

새로 고침 토큰으로 액세스 토큰을 새로 고치는 방법은 무엇입니까?

분류에서Dev

플라스크에서 새로 고침 토큰을 사용하여 새 액세스 토큰을 생성하는 방법은 무엇입니까?

분류에서Dev

Click in React에서 새로 고침 아이콘을 애니메이션하는 방법은 무엇입니까?

분류에서Dev

Azure AD B2C를 통해 타사 IDP의 새로 고침 토큰을 애플리케이션에 전달하는 방법은 무엇입니까?

분류에서Dev

asp.net Core 3.1에서 자동 생성 된 새로 고침 토큰을 사용하는 방법은 무엇입니까?

분류에서Dev

IdentityServer4 새로 고침 토큰 : 만료 시간을 확인하는 방법은 무엇입니까?

분류에서Dev

API 요청 React 방식으로 새로 고침 및 처리없이 상태 배열을 업데이트하는 방법은 무엇입니까?

분류에서Dev

앱이나 브라우저에 JWT 및 새로 고침 토큰을 저장하는 방법은 무엇입니까?

분류에서Dev

동시 환경에서 액세스 토큰을 새로 고치는 방법은 무엇입니까?

분류에서Dev

NodeJS, Google API를 사용하여 새로 고침 토큰으로 새 토큰을 얻는 방법은 무엇입니까?

분류에서Dev

Cognos에서 페이지 새로 고침을 방지하는 방법은 무엇입니까?

분류에서Dev

새로 고침 토큰을 사용하여 백그라운드에서 권한을 부여하고 액세스 토큰을 얻는 방법은 무엇입니까?

분류에서Dev

Android에서 풀다운 새로 고침을 구현하는 방법은 무엇입니까?

분류에서Dev

jsp에서 새로 고침 후 양식 값을 유지하는 방법은 무엇입니까?

분류에서Dev

jqgrid 툴바에 새로 고침 버튼을 추가하는 방법은 무엇입니까?

분류에서Dev

이 스 와이프 새로 고침을 맨 위에 만 제한하는 방법은 무엇입니까?

분류에서Dev

qTreewidget을 업데이트 / 새로 고침하는 방법은 무엇입니까?

분류에서Dev

RC의 OAuth 호출에서 새로 고침 토큰을 제거하는 방법

분류에서Dev

새로 고침 중에 해시 맵을 잠그는 방법은 무엇입니까?

분류에서Dev

passportjs의 새로 고침 토큰에서 새 Google OAuth 액세스 토큰을 얻는 방법

분류에서Dev

Spring Security 5 및 OAuth2 Client를 사용하여 새로 고침 토큰을 얻고 API를 호출하는 방법은 무엇입니까?

분류에서Dev

JQgrid에서 서브 그리드를 다시로드 / 새로 고침하는 방법은 무엇입니까?

분류에서Dev

React로 사용자에게 노출하지 않고 외부 API 액세스 토큰을 사용하는 방법은 무엇입니까?

분류에서Dev

풀에서 새로 고침 라이브러리로 사용자 지정 xml을 편집하는 방법은 무엇입니까?

분류에서Dev

요청 작업으로 미들웨어를 처리하고 react + redux에서 성공 작업을 트리거하는 방법은 무엇입니까?

분류에서Dev

요청 작업으로 미들웨어를 처리하고 react + redux에서 성공 작업을 트리거하는 방법은 무엇입니까?

분류에서Dev

firebase 기능을 사용하여 Google oauth2에서 토큰을 새로 고치는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    vb.net을 사용하여 새로 고침 토큰에서 새 액세스 토큰을 새로 만드는 방법은 무엇입니까?

  2. 2

    새로 고침 토큰을 보호하는 방법은 무엇입니까?

  3. 3

    새로 고침 토큰으로 액세스 토큰을 새로 고치는 방법은 무엇입니까?

  4. 4

    플라스크에서 새로 고침 토큰을 사용하여 새 액세스 토큰을 생성하는 방법은 무엇입니까?

  5. 5

    Click in React에서 새로 고침 아이콘을 애니메이션하는 방법은 무엇입니까?

  6. 6

    Azure AD B2C를 통해 타사 IDP의 새로 고침 토큰을 애플리케이션에 전달하는 방법은 무엇입니까?

  7. 7

    asp.net Core 3.1에서 자동 생성 된 새로 고침 토큰을 사용하는 방법은 무엇입니까?

  8. 8

    IdentityServer4 새로 고침 토큰 : 만료 시간을 확인하는 방법은 무엇입니까?

  9. 9

    API 요청 React 방식으로 새로 고침 및 처리없이 상태 배열을 업데이트하는 방법은 무엇입니까?

  10. 10

    앱이나 브라우저에 JWT 및 새로 고침 토큰을 저장하는 방법은 무엇입니까?

  11. 11

    동시 환경에서 액세스 토큰을 새로 고치는 방법은 무엇입니까?

  12. 12

    NodeJS, Google API를 사용하여 새로 고침 토큰으로 새 토큰을 얻는 방법은 무엇입니까?

  13. 13

    Cognos에서 페이지 새로 고침을 방지하는 방법은 무엇입니까?

  14. 14

    새로 고침 토큰을 사용하여 백그라운드에서 권한을 부여하고 액세스 토큰을 얻는 방법은 무엇입니까?

  15. 15

    Android에서 풀다운 새로 고침을 구현하는 방법은 무엇입니까?

  16. 16

    jsp에서 새로 고침 후 양식 값을 유지하는 방법은 무엇입니까?

  17. 17

    jqgrid 툴바에 새로 고침 버튼을 추가하는 방법은 무엇입니까?

  18. 18

    이 스 와이프 새로 고침을 맨 위에 만 제한하는 방법은 무엇입니까?

  19. 19

    qTreewidget을 업데이트 / 새로 고침하는 방법은 무엇입니까?

  20. 20

    RC의 OAuth 호출에서 새로 고침 토큰을 제거하는 방법

  21. 21

    새로 고침 중에 해시 맵을 잠그는 방법은 무엇입니까?

  22. 22

    passportjs의 새로 고침 토큰에서 새 Google OAuth 액세스 토큰을 얻는 방법

  23. 23

    Spring Security 5 및 OAuth2 Client를 사용하여 새로 고침 토큰을 얻고 API를 호출하는 방법은 무엇입니까?

  24. 24

    JQgrid에서 서브 그리드를 다시로드 / 새로 고침하는 방법은 무엇입니까?

  25. 25

    React로 사용자에게 노출하지 않고 외부 API 액세스 토큰을 사용하는 방법은 무엇입니까?

  26. 26

    풀에서 새로 고침 라이브러리로 사용자 지정 xml을 편집하는 방법은 무엇입니까?

  27. 27

    요청 작업으로 미들웨어를 처리하고 react + redux에서 성공 작업을 트리거하는 방법은 무엇입니까?

  28. 28

    요청 작업으로 미들웨어를 처리하고 react + redux에서 성공 작업을 트리거하는 방법은 무엇입니까?

  29. 29

    firebase 기능을 사용하여 Google oauth2에서 토큰을 새로 고치는 방법은 무엇입니까?

뜨겁다태그

보관