Джентльмены, сегодня передо мной открылись новые бездны.
Просматривал тут один API, разработанный моими коллегами. Всё по фен-шую: REST, JSON, всё как надо.
Авторизация, понятное дело, через JWT. Возник вопрос про сроки годности токенов.
Дай-ка, думаю, гляну, что у них там в токенах приезжает.
Открыл через JWT.io — смотрю, точно, есть атрибут exp.
А кроме него — мамочка дорогая! Юзернейм и пароль в открытом виде.
Ну, думаю, надо лечить. Понятное дело, частное мнение одного продукт менеджера — фигня, надо какой-то авторитетный источник найти.
Начинаю гуглить.
Первое, что нашёл —
https://medium.com/@maison.moa/using-jwt-json-web-tokens-to-authorize-users-and-protect-api-routes-3e04a1453c3e
Что у нас там?
Долбанько на марше: кладём в токен всего пользователя, вместе с именем и паролем.
Долбанько на марше 2: "верификация" токена сводится к вырезанию из заголовка Authorization всего, что после
'Bearer '. И, собсна, усё.
Ищу на SO — находим
https://stackoverflow.com/questions/42652695/is-it-ok-to-store-user-credentials-in-the-jwt
Опять примерно то же самое: "вроде бы не стоит передавать пароль" — "нет, ну а как тогда проверять???" — "ну, есть же и другие способы, без паролей".
Какая-то массовая идиотия.
Буду благодарен за ссылку на
нормальный тьюториал по JWT, где будет внятно сказано, что НЕЛЬЗЯ передавать пароли в токене, и показано, как НА САМОМ деле проверяется токен.