Есть ли такая вещь, как асимметричная авторизация в сети? - PullRequest
0 голосов
/ 20 июня 2019

У меня есть частный API, который я хочу, чтобы сторонние клиенты авторизировали без отправки конфиденциальной информации клиенту, например пароля.Обычный поток в этом случае:

  • Мы даем клиенту секретный токен один раз
  • После активации этого токена (например, вызов API с этим токеном) он может создатьучетной записи, указав пароль.
  • Клиент авторизуется с этим паролем и получает секретный токен
  • Этот секретный токен используется при каждом вызове API.

Проблема сэтот поток - когда мы посылаем ему одноразовый токен.Если кто-то первым использует его, он получает все данные, которые ему нужны.

Асимметричное шифрование Atm используется повсеместно, https (ssl) основан на нем.Интересно, есть ли такая вещь, как асимметричная аутентификация?Как я вижу, этот поток таков:

  • Клиент и сервер генерируют 2 магических токена client_private_token, client_secret_token, server_public_token, server_secret_token.
  • Мы спасаем противниковпубличные токены, например, в файлах настроек с обеих сторон.
  • Сервер отвечает server_public_token
  • Клиент использует client_private_token для генерации некоторого session_token и отправки его с каждым запросом, который требуетauthorization
  • Сервер использует свои server_private_token и user_public_token, чтобы убедиться, что этот session_token действителен.

Поток очень похож на ssl, но вместо шифрования данных мы просто генерируем магические строки, которые доказывают, что это мы.

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

Кроме того, если есть такие вещи, было бы здорово иметь клиентов с такими современными языками, как java, js, python и т. Д. * 1046.*

...