Пользовательская аутентификация ядра asp.net с сгенерированным токеном без сеанса - PullRequest
0 голосов
/ 10 октября 2019

Я создаю веб-сайт с ядром asp.net, и у меня была идея, чтобы мои пользователи могли войти в систему следующим образом:

  1. Позвольте пользователю ввести тег разногласия (в более общем случае, вместо этого вы можете использовать адрес электронной почты)
  2. Отправить токен указанному разногласному пользователю (или адресу электронной почты)
  3. Позволить пользователю ввести отправленный ему токен

Я читал о системе регистрации файлов cookie ядра asp.net, но у меня проблемы с применением этой последовательности аутентификации, и я не уверен, является ли это безопасным способом входа в систему. Сначала я подумал о том, чтобы использовать сеансы. Я сгенерировал бы случайный токен и сохранил бы его вместе с данным тегом разногласия в сеансе, и я бы подождал, пока пользователь предоставит токен и сравнит его. Тем не менее, я прочитал здесь , что хранить конфиденциальные данные в сеансе небезопасно, и, кроме того, я прочитал, что использование сеанса дает приложению большое снижение производительности, поэтому я чувствую, что использую сеансыэто не правильный подход.

Так что мой вопрос такой: Могу ли я выполнить эту последовательность аутентификации без сеанса?

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

Моя идея с cookie-файлами заключалась в том, чтобысоздайте строку json с именем пользователя, сгенерированным токеном и временной меткой и зашифруйте ее на стороне сервера с помощью симметричного алгоритма шифрования. Затем, когда пользователь отправляет свой токен, я могу расшифровать cookie-файл, прочитать пользователя с разногласиями и ожидаемый токен и посмотреть, истек ли он по тайм-метке или нет. Но поскольку куки хранятся на стороне клиента, я не уверен, что это безопасно.

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

Я не очень знаком с аутентификацией, поэтому я неЯ не знаю, правильно ли я думаю или я делаю это совершенно неправильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...