Як API повинен використовувати основну автентифікацію http


17

Коли API вимагає, щоб клієнт перевіряв автентифікацію на нього, я бачив два різні сценарії, що використовуються, і мені цікаво, у якому випадку я повинен використовуватись для своєї ситуації.

Приклад 1. Компанія пропонує API, щоб дозволити третім сторонам аутентифікувати маркер та секрет за допомогою HTTP Basic.

Приклад 2. API приймає ім'я користувача та пароль через HTTP Basic для автентифікації кінцевого користувача. Як правило, вони отримують позначку для майбутніх запитів.

Моя настройка: у мене буде API JSON, який я використовую як мій сервер для мобільних та веб-додатків. Здається, що як для мобільних, так і для веб-додатків хороша практика надсилає маркер та секрет, тому лише ці два додатки можуть отримати доступ до API, що блокує будь-яку іншу сторону.

Але мобільний та веб-додаток дозволяють користувачам входити та надсилати публікації, переглядати свої дані тощо. Тому я хотів би, щоб вони також входили через HTTP Basic під час кожного запиту.

Чи я якось використовую комбінацію обох цих методів або лише надсилаю облікові дані кінцевого користувача (ім’я користувача та маркер) на кожен запит? Якщо я надсилаю лише облікові дані кінцевого користувача, чи зберігаю їх у файлі cookie на клієнті?


Зауважте, що файли cookie не є частиною протоколу HTTP і є лише загальною функцією браузера. Тож якщо ви не розгортаєтесь для Інтернету, забудьте про них.
Ям Маркович

Якщо файли cookie не рекомендуються, як / де ви зберігаєте кредити для передачі в api?
Пол Силінг

Файли cookie - це лише спосіб для користувачів браузера безперешкодно зберігати маркери сеансу. Якщо ви взаємодієте з розробником, це не повинно бути чітким. Ви можете налаштувати службу загальнодоступного зв’язку, яка надає "квитки", а розробники можуть зберігати свій квиток у пам'яті або там, де вони хочуть. Зауважте, що у мене немає практичного досвіду роботи з веб-послугами, і, мабуть, є стандартні рішення для подібних матеріалів.
Ям Маркович

Які ваші думки в частині мого запитання про auth та api auth кінцевого користувача. Я досі не впевнений у цьому
Пол Силінг

Відповіді:


7

Базовий аутентифікацію HTTP вимагає, щоб ім'я користувача та пароль надсилалися з кожним запитом ресурсу. Ім'я користувача: пароль передається в заголовку запиту "Авторизація", кодованому рядком base64 з префіксом "Основні". Якщо весь ваш http-зв’язок зашифрований (через ssl), інформація заголовка авторизації не може бути легко використана зловмисниками, оскільки навряд чи вони зможуть її одержати.

Зашифрованого SSL http з базовою автентифікацією має бути достатньо.


2
чи можете ви навести приклад цього? Це те, що мені потрібно, просто ДУЖЕ застряг прямо зараз ...
відзначає

0

Чи може OAuth / OpenID працювати разом з токеном / секретом?

Нещодавно я розглядав такий сценарій:

  • Передній край веб-додатків
  • В основі API REST
  • Додатки для мобільних пристроїв, що мають доступ до API REST

Як простий тест, я зміг:

  • Ідентифікуйте користувачів через веб-додаток за допомогою OAuth
  • API REST, авторизований через OAuth, призводить до створення таємниці та передачі назад клієнту
  • Потім мобільний пристрій підтверджує автентифікацію через OAuth, а потім авторизується API REST через секрет

Це дозволить програмі мобільних пристроїв підтвердити автентифікацію з тими ж обліковими записами, що й через Веб-фронт (той самий обліковий запис), а також мати змогу авторизувати доступ до API.


1
Тож у вашому прикладі лише користувач має автентифікацію. Клієнти, в яких здійснюються дзвінки в API (веб-додаток, мобільний додаток), не підтверджують, хто вони є. Теоретично API є загальнодоступним і будь-яка програма може опублікувати ім’я користувача та пароль і, можливо, повернути маркер
Пол Силінг,

Користувач аутентифікується через додаток, а додаток здійснює дзвінки від імені користувача. Процес аутентифікації отримує маркер, який додаток потім передає.
Брендан Зелений
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.