ЗмістНатисність на посилання, щоб перейти до потрібного місця
OAuth 1
OAuth 1 був розроблений на початку 2000-х як спосіб безпечного доступу сторонніх додатків до ресурсів користувача без передачі пароля. Основна ідея полягала в тому, щоб сторонній сервіс міг робити запити від імені користувача, але кожен запит підписувався криптографічно, щоб гарантувати, що він не змінений і походить від авторизованого клієнта.
Особливості OAuth 1:
- Криптографічний підпис кожного запиту (HMAC-SHA1 або RSA-SHA1).
- Використовував два типи токенів: request token для початку авторизації і access token для доступу до ресурсів.
- Міг працювати навіть без HTTPS, бо безпеку забезпечував підпис запиту.
- Підходив переважно для серверних застосунків і обмеженої кількості сценаріїв авторизації.
OAuth 1 активно використовувався у таких сервісах, як Twitter API v1 або старі версії LinkedIn, але через складність у реалізації і проблеми з підписами його поступово замінив OAuth 2.
OAuth 2
OAuth 2 з’явився у 2012 році як спрощена, гнучкіша і сучасна версія протоколу для авторизації та доступу до ресурсів. Його мета - зробити роботу розробників простішою, дозволити різним типам клієнтів (веб, мобільні додатки, SPA) легко отримувати доступ до ресурсів користувача, не передаючи пароль.
Особливості OAuth 2:
- Використовує токени доступу (access token) та опційно refresh token. Access token короткостроковий, refresh token дозволяє продовжити сесію.
- Не потребує криптографічного підпису запиту - безпека забезпечується через HTTPS.
- Підтримує різні потоки авторизації: authorization code (для серверних веб-клієнтів), implicit (для SPA), password (для довірених клієнтів) та client credentials (для сервер-сервер взаємодії).
- Набагато простіше в реалізації та підтримується сучасними API (Google, Facebook, GitHub, Microsoft, Stripe тощо).
Коли що краще використовувати:
- OAuth 1: якщо ви працюєте з дуже старими API, які його потребують, або в середовищі без HTTPS, де важлива криптографія на рівні запиту.
- OAuth 2: для сучасних веб та мобільних додатків, SPA, API, де HTTPS гарантовано. Також зручний для сторонніх клієнтів, бо підтримує refresh токени та різні потоки авторизації.
Порівняння OAuth 1 і OAuth 2 на практиці
- Складність: OAuth 1 складніший через підписи, OAuth 2 простіший і гнучкіший.
- Безпека: OAuth 1 безпечний навіть без HTTPS, OAuth 2 потребує HTTPS.
- Гнучкість: OAuth 1 обмежений, OAuth 2 підтримує багато потоків авторизації.
- Використання сьогодні: OAuth 1 майже не використовується, OAuth 2 - стандарт для сучасних API і сервісів.
OAuth 1 був про безпечну авторизацію без HTTPS, OAuth 2 - про гнучкість, простоту і сучасні сценарії для веб і мобільних додатків.
Цей допис поки що не має жодних доповнень від автора/ки.