Как работает аутентификация на основе маркеров?

Я реализую веб-приложение (с Python+Django - в той степени, в которой это имеет значение). Пользователи могут нормально входить в систему с помощью имени пользователя и пароля, но в дополнение я хочу предоставить API, который пользователи используют для сценариев взаимодействия с моим сайтом.

Для аутентификации API я планировал сделать примерно следующее:

  1. В базе данных я создаю таблицу с "токенами" - т.е. случайными строками, которые указывают на базу данных пользователя.
  2. Пользователь получает строку токена.
  3. При каждом вызове API пользователь передает строку токена вместе с запросом
  4. .

В реализации API код:

  1. Проверьте токен.
  2. Войдите в систему и выполните функцию API как пользователь, соответствующий маркеру.
  3. Снова выйдите из системы.
  4. Верните результат
  5. .

Имеет ли это смысл? С одной стороны, это кажется очень простым - с другой стороны, это кажется довольно домашним, что-то, что, как я слышал, не рекомендуется, когда речь идет о темах, связанных с безопасностью?

Я бы от всей души рекомендовал посмотреть django-rest-framework

https://www.django-rest-framework.org/

Он буквально делает все это и даже больше!

Неа, не продавец, просто разработчик :)

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

Он обрабатывает:

  • Аутентификация
  • Парсинг
  • Энкодирование
  • Разрешения на уровне вида или объекта
  • Сериализация объектов
  • Создание объекта
  • Удаление объектов
  • Автоматически создаваемая документация
  • Несколько методов аутентификации, включая пользовательские управляемые методы
  • И куча других вещей, которые значительно упрощают написание API на Django
  • .

В целом, он поддерживает большинство, если не все случаи использования.

EDIT

Стоит отметить, что есть очень веская причина, по которой DRF имеет токены доступа с коротким сроком действия. Это связано с безопасностью.

Допустим, злоумышленник завладел вашим токеном доступа с коротким сроком действия, это гораздо лучше, чем "долгоживущий", как вы описали.

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

Вернуться на верх