JWT «Выйти со всех устройств» или «Черный список» - React Native - PullRequest
0 голосов
/ 19 марта 2020

Мне нужно реализовать функцию «Выход со всех устройств». Я прочитал много вещей, касающихся JWT, и для меня до сих пор неясно, как это сделать правильно. Я вижу два возможных решения этой проблемы, но для меня они не так хороши из-за их недостатков:

1. Черный список

Храните список недействительных токенов на стороне сервера (API) и для каждого входящего запроса проверяйте, находится ли токен, связанный с запросом, в черном списке или нет. Этот список мы можем хранить внутри базы данных, вероятно.

Недостатки : Проблемы с производительностью. Мы должны запрашивать базу данных при каждом входящем запросе, чтобы проверить, находится ли токен в черном списке или нет.

2. Очень короткое время истечения

Вернуть пользователю при входе в токен с очень коротким временем истечения (например, 5 минут). В этом случае нам также нужно добавить что-то вроде столбца «действительный или нет» в таблицу, где мы храним токены refre sh. Затем, когда пользователь хочет выполнить «выход со всех устройств», мы запрашиваем базу данных и обновляем все вышедшие refre sh токены со значением «valid = no». И если каким-то образом хакер украл токен, он получит доступ к API только на 5 минут или около того.
Недостатки :
1. Проблемы с производительностью (может быть?). Мы должны запрашивать базу данных каждые 5 минут, чтобы обновить sh access_token из-за короткого времени истечения.
2. Это все еще очень плохо, потому что хакер может делать свои плохие дела в течение 5 минут, и этого ему может быть достаточно.

...