Ключі API або навіть токени відносяться до категорії прямих механізмів аутентифікації та авторизації, оскільки вони надають доступ до відкритих ресурсів API REST. Такі прямі механізми можуть бути використані у випадках делегування.
Для отримання доступу до ресурсу або набору ресурсів, що піддаються кінцевим точкам REST, необхідно перевірити права доступу запитувача відповідно до його ідентичності. Першим кроком робочого процесу є перевірка ідентичності за допомогою аутентифікації запиту; послідовним кроком є перевірка ідентичності щодо набору визначених правил для дозволу рівня доступу (тобто читання, запис чи читання / запис). Після виконання зазначених етапів типовим подальшим занепокоєнням є дозволена швидкість запиту , що означає, скільки запитів в секунду запитувачеві дозволено виконувати до заданих ресурсів.
OAuth (Open Authorization) - це стандартний протокол делегованого доступу , який часто використовуються великими інтернет-компаніями для надання доступу без надання пароля. Як зрозуміло, OAuth є протоколом, який відповідає вищезгаданим проблемам: Аутентифікація та Авторизація, забезпечуючи безпечний делегований доступ до ресурсів сервера від імені власника ресурсу. Він заснований на механізмі токенів доступу, який дозволяє сторонній стороні отримати доступ до ресурсу, яким керує сервер від імені власника ресурсу. Наприклад, ServiceX хоче отримати доступ від акаунта Джона Сміта від імені Джона, після того, як Джон уповноважив делегацію; Тоді ServiceX видасть часовий маркер, щоб отримати доступ до даних облікового запису Google, імовірно, лише у режимі читання.
Поняття API Key дуже схоже на описаний вище OAuth Token. Основна відмінність полягає у відсутності делегування: Користувач безпосередньо запитує ключ до постачальника послуг для послідовних програмних взаємодій. Справа ключа API також залежить від часу: ключ як маркер OAuth підлягає оренді часу або терміну дії. Як додатковий аспект, як Ключ, так і Токен можуть бути обмежені тарифами за договором на обслуговування, тобто може бути надано лише задану кількість запитів в секунду.
Якщо резюмувати, насправді немає різниці між традиційними механізмами аутентифікації та авторизації та версіями на основі Key / Token. Але парадигма дещо відрізняється: замість того, щоб не використовувати повторно використання облікових даних при кожній взаємодії між клієнтом і сервером, використовується ключ підтримки / жетон підтримки, який робить загальний досвід взаємодії більш плавним і, ймовірно, більш безпечним (часто, дотримуючись стандарту JWT , клавіші та Токени цифрово підписуються сервером, щоб уникнути крафт).
- Пряма автентифікація та авторизація : протоколи на основі ключів як варіант традиційних версій на основі облікових даних.
- Делегована автентифікація та авторизація : як протоколи на основі OAuth, які, в свою чергу, використовують маркери, знову ж таки як варіант на основі облікових даних версій (загальна мета - не розкривати пароль жодній третій стороні).
Обидві категорії використовують традиційний робочий процес підтвердження ідентичності для першої взаємодії з сервером, що володіє зацікавленими ресурсами.