Я создаю веб-сайт с ядром asp.net, и у меня была идея, чтобы мои пользователи могли войти в систему следующим образом:
- Позвольте пользователю ввести тег разногласия (в более общем случае, вместо этого вы можете использовать адрес электронной почты)
- Отправить токен указанному разногласному пользователю (или адресу электронной почты)
- Позволить пользователю ввести отправленный ему токен
Я читал о системе регистрации файлов cookie ядра asp.net, но у меня проблемы с применением этой последовательности аутентификации, и я не уверен, является ли это безопасным способом входа в систему. Сначала я подумал о том, чтобы использовать сеансы. Я сгенерировал бы случайный токен и сохранил бы его вместе с данным тегом разногласия в сеансе, и я бы подождал, пока пользователь предоставит токен и сравнит его. Тем не менее, я прочитал здесь , что хранить конфиденциальные данные в сеансе небезопасно, и, кроме того, я прочитал, что использование сеанса дает приложению большое снижение производительности, поэтому я чувствую, что использую сеансыэто не правильный подход.
Так что мой вопрос такой: Могу ли я выполнить эту последовательность аутентификации без сеанса?
Единственный другой способ, которым я знаю, хранить данныемежду запросами используется cookie-файл, но я знаю, что вообще не безопасно хранить данные для входа в cookie-файл, даже если он зашифрован, поскольку пользователи могут изменять свои cookie-файлы локально.
Моя идея с cookie-файлами заключалась в том, чтобысоздайте строку json с именем пользователя, сгенерированным токеном и временной меткой и зашифруйте ее на стороне сервера с помощью симметричного алгоритма шифрования. Затем, когда пользователь отправляет свой токен, я могу расшифровать cookie-файл, прочитать пользователя с разногласиями и ожидаемый токен и посмотреть, истек ли он по тайм-метке или нет. Но поскольку куки хранятся на стороне клиента, я не уверен, что это безопасно.
Вот некоторый контекст, на всякий случай :
Я создаю небольшую веб-игруи я хочу, чтобы он был управляемым как через сайт, так и через раздор. Мне как-то нужно знать от запрашивающей стороны, какая учетная запись принадлежит им, поэтому я хочу, чтобы они использовали свой тег Discord в качестве имени пользователя для входа в систему. Я подумал, что для такой маленькой игры, как это, было бы излишним заставлять людей делатьучетная запись, если они используют его только несколько раз, поэтому я просто хочу быстро проверить, что имя диска, которое они используют, это то, что у них есть.
Я не очень знаком с аутентификацией, поэтому я неЯ не знаю, правильно ли я думаю или я делаю это совершенно неправильно.