Я читал о JWT.
Но из того, что я прочитал, это не механизм аутентификации, а скорее как важный компонент механизма аутентификации.
В настоящее время я реализовал решение, которое работает, но нужно просто попробовать JWT и посмотреть, как он работает. Но теперь я понимаю, как это следует использовать. По моему опыту, это в основном просто механизм шифрования, который дает вам уникальный зашифрованный ключ. Вы также можете помещать информацию в этот токен.
Я хочу реализовать его в терминах ASP.NET web api 2, который будет использоваться мобильным приложением.
Итак, шаг 1:
- app = > Сервер: Вход (пользователь, пароль)
- Сервер = > приложение: Войдите в систему, используйте ваш JWT
- app = > server: Получить мой профиль (отправляет JWT с запросом) Затем сервер расшифровывает JWT и определяет запросы Identity.
Теперь это только мое понимание этого, Посмотрите, что я могу быть на совершенно неправильном пути.
Является идеальным из JWT, так что вам не нужно проходить аутентификацию по каждому запросу? Я просто аутентифицирую учетные данные пользователей один раз (при первом входе в систему) и там после того, как сервер может просто использовать JWT и не нужно искать пользователей pw и пользователя в БД?
Я просто хочу использовать JWT для Identity, которым является пользователь. Затем я авторизуюсь после того, как я их аутентифицирую. Как я знаю, существует большая путаница с новыми MVC и аутентификацией и авторизацией.
Итак, к чему относится мой вопрос.
Как я могу безопасно и эффективно реализовать механизм проверки подлинности с помощью JWT? Я не хочу просто кашлять над чем-то, что, кажется, работает и не имеет никакой идеи о последствиях для безопасности. Я уверен, что существует источник, в котором, возможно, создан безопасный механизм, который бы соответствовал моим требованиям.
Мои требования:
- Нужно только проверять db для учетных данных пользователей один раз за сеанс? Из-за использования bcrypt с использованием большого количества ресурсов для сравнения паролей.
- Должна быть в состоянии идентифицировать пользователя по их запросу. (I.e, которым они являются, userId будет достаточно), и предпочтительно без доступа к БД также
- Должно быть как можно меньше накладных расходов, в отношении ресурсов на стороне сервера, обрабатывающих запрос.
- Если злоумышленнику пришлось копировать предыдущий запрос устройства, он не должен иметь доступ к данным реальных пользователей. (Очевидно)
Спасибо