Когда API требует, чтобы клиент проходил аутентификацию, я видел два разных сценария, и мне интересно, какой случай я должен использовать в своей ситуации.
Пример 1. Компания предлагает API, чтобы позволить третьим лицам проходить аутентификацию с помощью токена и секрета с использованием HTTP Basic.
Пример 2. API принимает имя пользователя и пароль через HTTP Basic для аутентификации конечного пользователя. Обычно они получают токен для будущих запросов.
Моя настройка: у меня будет JSON API, который я использую в качестве бэкенда для мобильного и веб-приложения. Как для мобильных, так и для веб-приложений представляется хорошей практикой отправлять токены и секретные данные, поэтому только эти два приложения могут получить доступ к API, блокирующему любое другое третье лицо.
Но мобильное и веб-приложение позволяют пользователям входить в систему и отправлять сообщения, просматривать свои данные и т. Д. Поэтому я бы хотел, чтобы они также входили через HTTP Basic при каждом запросе.
Использую ли я как-то комбинацию обоих этих методов или отправляю только учетные данные конечного пользователя (имя пользователя и токен) для каждого запроса? Если я отправляю только учетные данные конечного пользователя, могу ли я сохранить их в файле cookie на клиенте?
источник
Ответы:
Базовая аутентификация HTTP требует, чтобы имя пользователя и пароль отправлялись при каждом запросе ресурса. Имя пользователя: пароль передается в заголовке запроса «Авторизация» в кодировке base64 с префиксом «Basic». Если вся ваша http-связь зашифрована (через ssl), информация о заголовке авторизации не может быть легко использована злоумышленниками, поскольку маловероятно, что они смогут ее захватить.
Зашифрованного SSL http с базовой аутентификацией должно быть достаточно.
источник
Может ли OAuth / OpenID работать вместе с токеном / секретом?
Недавно я рассмотрел следующий сценарий:
В качестве простого теста я смог:
Это позволило бы приложению для мобильных устройств проходить проверку подлинности с теми же учетными данными, что и через веб-интерфейс (та же учетная запись), а также иметь возможность авторизовать доступ к API.
источник