복붙노트

[REDIS] 나는 JWT는 레디 스에서 토큰을 저장해야 하는가?

REDIS

나는 JWT는 레디 스에서 토큰을 저장해야 하는가?

나는 ExpressJS, MongoDB를 (Mogoose)를 사용하여 응용 프로그램을 짓고 있어요. 응용 프로그램은 사용자가 가지고있는 경로가 액세스하기 전에 인증을 포함합니다.

현재 내가 동일한 작업을 수행 할 수있는 명시 미들웨어를 작성했습니다. 저는 여기에 사용자가 인증 여부를 확인하기 위해 MongoDB의 쿼리를 만들고 있어요 토큰 JWT의 도움으로. 하지만 내 데이터베이스에 불필요한 요청로드 넣어이 힘을 느낍니다.

나는이에 대한 통찰력을 얻는 경우에 도움이 될 것입니다.

해결법

  1. ==============================

    1.TLDR : 당신은 능력이 어떤 점에서 토큰을 취소 할 경우, 예, 빠른 레디 스 같은에 저장합니다.

    TLDR : 당신은 능력이 어떤 점에서 토큰을 취소 할 경우, 예, 빠른 레디 스 같은에 저장합니다.

    JWT를 사용하는 잘 문서화 단점 중 하나는 예를 들어 사용자의 요구가 로그 아웃하거나 토큰이 손상된 경우 토큰을 취소 할 수있는 간단한 방법이 없다는 것입니다. 토큰을 취소하면 다음에 무엇을 결정 후 일부 저장소에 그것을보고하는 것을 의미한다. JWT의 포인트 중 하나는 DB에 왕복을 방지하기 때문에, 좋은 타협은 RDBMS보다 부담스러운 적은 무언가에 저장하는 것입니다. 즉 레디 스를위한 완벽한 일이다.

    코멘트에 제안 좋은 방법은 목록을 블랙리스트 (무효화 된 토큰 즉, 목록)을 확인하는 것입니다. 당신이 토큰을 보장하기 위해 목록을 조회 각각의 요청에 따라 거기에 존재하지 않습니다. 당신은 더 토큰을 저장하는 확률 알고리즘을 사용하여 조회 단계에서 메모리 공간과 성능에 향상시킬 수 있습니다. 간단한 구현은이 블랙리스트 레디 스에서 전체 토큰을 저장하지 않는 것입니다. 그냥 토큰의 처음 몇 글자를 저장합니다. 그런 다음 더 영구적 인 해결책 (등 파일 시스템, RDBMS를,)를 사용하여 블랙리스트의 풀러 버전을 저장할 수 있습니다. 이것은 여전히 ​​빠르게 토큰 (일반적인 경우 일 것이다) 블랙리스트에 존재하지 않는 것을 당신에게 말할 것이다 낙관적 조회입니다. 토큰 존재가 고개 경우, (첫 몇 글자가 일치하기 때문에)가 레디 스 블랙리스트에서 항목을 일치 영구 저장소에 별도의 조회로 이동 발생합니다. 이 또 다른보다 효율적으로 구현하기가 비교적 간단한 알고리즘은 블룸 필터라고 무언가이다.

  2. ==============================

    2.당신은 JWT 라벨을 저장하는 레디 스를 사용할 수 있습니다. 레디 스 훨씬 빠르고 편리 이러한 데이터를 저장하기위한 것입니다. 레디 스에 대한 요구가 크게 성능에 영향을 미치지 않습니다. 당신은 라이브러리 JWT-레디 스를 시도 할 수 있습니다

    당신은 JWT 라벨을 저장하는 레디 스를 사용할 수 있습니다. 레디 스 훨씬 빠르고 편리 이러한 데이터를 저장하기위한 것입니다. 레디 스에 대한 요구가 크게 성능에 영향을 미치지 않습니다. 당신은 라이브러리 JWT-레디 스를 시도 할 수 있습니다

  3. from https://stackoverflow.com/questions/44890564/should-i-store-jwt-tokens-in-redis by cc-by-sa and MIT license