Я новичок, и я реализовал первую версию и логику аутентификации на основе токенов, и я не уверен, достаточно ли она безопасна для использования на производстве.
У меня статический SPAсделано с использованием Vue.js 2, а сторона сервера - с помощью приложения веб-форм ASP.NET VB.net
Я не использовал никаких специальных пакетов .NET для этой задачи из-за недостатка знанийпо этой конкретной концепции
Я использую следующую логику:
Я спрашиваю у клиента его имя пользователя и пароль и проверяю, находится ли он в нашей базе данных в порядкечтобы проверить это
Если клиент не проверен, я обрабатываю ошибки во внешнем интерфейсе ... если нет, я генерирую токен, который является хешем (секретным ключом) объединения некоторых значенийиз базы данных, такой как имя пользователя + пароль + login_created_at + текущий DateTime.
Я отправляю этот токен в виде строки в формате JSON (готов для анализа) вместе с идентификаторомклиентаt (из базы данных), дата истечения срока действия токена и DateTime (использовавшийся ранее в хэше), в котором был сгенерирован токен
На внешнем интерфейсе я храню эту строку(объект токена) в локальном хранилище, и я извлекаю его и отправляю обратно на сервер для каждого последующего запроса, используя настраиваемый заголовок
В части аутентификации (для последующих запросов клиента) Iубедитесь, что идентификатор клиента действителен, а затем используйте его для получения тех же значений из базы данных, что и раньше, и попытайтесь сгенерировать токен, который затем должен равняться полученному токену
Оттуда я соответственнорешил предоставить или нет доступ к запрошенному веб-сервису
Достаточно ли безопасна эта логика?
Можно ли изменить этот токен на локальномхранилище?
Я заметил, что если этот объект был перехвачен, скопирован или прочитан, любой мог войти в систему как клиент.Как я могу решить эту проблему?
Я заметил, что если срок действия токена будет изменен на более поздний, клиент или хакер могут оставаться на связи, и токен никогда не истечет.
Есть ли необходимость использовать пакеты .NET или это не решит проблему?Если да, то что это за пакеты?