Аутентификация на основе токенов и хэш-пароли


В моем asp.net пароли пользователей веб-сервиса хранятся в виде хэш-значений с использованием

 BCrypt.Net.BCrypt.HashPassword (password, BCrypt.Net.BCrypt.GenerateSalt ());

И моя веб-служба также должны реализовать аутентификацию на основе маркеров. Я новичок в этом, и, как я понимаю из чтения в маркере аутентификации, пароль также приходит в виде хэшированной строки. Поэтому я понятия не имею, как проверить маркер аутентификации, поскольку я не знаю исходного пароля ни с одной стороны. Действительно ли нужно хэшировать пароль в маркере аутентификации? или я могу добавить пароль для маркера проверки подлинности в кодировке base-64 строки? это безопасно?

1 2

1 ответ:

Токен обычно представляет собой случайное число / строку, которая не связана с какой-либо другой информацией, такой как пароль.

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

Преимущества:

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