170 похожих чатов

А как с jwt реализуется история, когда мы хотим пользователю

показать все авторизованные устройства и какую-то статистику по ним?

28 ответов

23 просмотра

fingerprint

Roman-Timofeev Автор вопроса
Danila
fingerprint

? Можно чуть больше 1 слова?

да никак. Для такого случая лучше использовать сессии, которые можно и прервать в любой момент

refresh-токены хранятся в базе. Это и есть история

Dmitriy Sviridov
refresh-токены хранятся в базе. Это и есть история

это значительно сложнее и менее безопасно, случаи применения JWT ограничены

Roman-Timofeev Автор вопроса
Roman Timofeev
? Можно чуть больше 1 слова?

Ну при генерации токена, он привязывается к уиду устройства с которого был запрос, для получени уида браузера стандарт это либа fingerprintjs

Roman Timofeev
Так а как делается мгновенный deauth?

Он не нужен, делайте токены пятиминутными

Roman Timofeev
Так а как делается мгновенный deauth?

refresh делается невалидным (в базе его делаешь невалидным) - и юзер не сможет получить новую пару токенов при ротации

Dmitriy Sviridov
refresh делается невалидным (в базе его делаешь не...

это не мгновенный deauth, валидные токены по прежнему валидны

Roman Sharkov
это не мгновенный deauth, валидные токены по прежн...

access - короткоживущий токен. Он умирает очень быстро

Danila
Он не нужен, делайте токены пятиминутными

А если совсем прям надо, тогда set невалидных токенов в любом быстром хранилище

Dmitriy Sviridov
access - короткоживущий токен. Он умирает очень бы...

вот я поэтому и не понимаю зачем всё так усложнять? 🙂 сомневаюсь что в данном бизнес кейсе десятки тысяч серверов и миллионы конкуретных клиентов чтобы оправдать JWT

ddpvfpd
очень быстро != мгновенно

Ну это трейдофф сложности реализации и требований к системе Не всем нужно, чтобы сессия была деактивирована сразу

Roman Sharkov
вот я поэтому и не понимаю зачем всё так усложнять...

Ну у меня права успешно влезают в jwt, и я не лазаю в базу.

Roman-Timofeev Автор вопроса
Danila
А если совсем прям надо, тогда set невалидных токе...

Тогда должна быть сущность, которая умеет отвечать "токен валидный" и хранить этот set

Roman Timofeev
Тогда должна быть сущность, которая умеет отвечать...

То есть пришли к идее инвалидируемых токенов в итоге

Ilya Kaznacheev
То есть пришли к идее инвалидируемых токенов в ито...

любой токен валидный в котором не истёк вшитый срок годности

Roman Sharkov
любой токен валидный в котором не истёк вшитый сро...

Инвалидируемый токен, это когда можно принудительно инвалидировать выданный токен, пока срок годности еще не вышел

Ilya Kaznacheev
Инвалидируемый токен, это когда можно принудительн...

а зачем в таком случае JWT? 😅 этот токен может быть простым идентификатором сессии. ведь в случае с JWT мы как раз не хотим ходить в storage проверять валиден ли токен или нет.

Ilya Kaznacheev
Я и не говорил нигде, что он там нужен 🙂

ну тогда это всего лишь старые добрые сессии

Roman-Timofeev Автор вопроса
Roman Timofeev
Так инвалидация как делается? )

Инвалидация сессии, привязанной к токену на сервере

Roman-Timofeev Автор вопроса
Ilya Kaznacheev
Инвалидация сессии, привязанной к токену на сервер...

Выглядит как кадавр: если у нас сессии, зачем тогда токен?

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта