Порівняння SAML та OAuth

SAML (Security Assertion Markup Language, мова розмітки декларації безпеки) і OAuth (Open Authorization, відкрита авторизація) – два найпоширеніші протоколи автентифікації та авторизації користувачів. Обидва вони допомагають керувати ідентифікацією та доступом за допомогою токенів, але вони служать різним цілям і працюють в різних контекстах. Ця стаття пояснює ключові подібності та відмінності між SAML і OAuth, а також конкретні випадки використання, в яких вони найчастіше застосовуються.

Початок роботи: Корисна аналогія

Основна відмінність між SAML і OAuth полягає в характері токенів, які вони використовують. SAML видає великий XML-токен, що має офіційний вигляд. Він має печатку, нотаріально завірений та має вигляд офіційного документа. OAuth, навпаки, ніби кидає маленький токен JWT і каже: «Цей «ключик» дасть вам доступ до VIP-секції на кілька годин. Тільки не загубіть його».

Ось зручний спосіб візуалізувати цю різницю. SAML – це як потрапляння на ексклюзивну вечірку, де людина сумнівається, чи її взагалі туди пустять. На щастя, гіпотетичний друг цієї персони підходить до дверей і каже: «Ця людина зі мною, вона класна», тож господар впускає її без жодних запитань, їй можна залишатися стільки скільки завгодно.

OAuth більше схожий на те, що хтось позичає свою машину. Вони не дають доступ до свого будинку, банківського рахунку чи велосипеда – лише до машини. Аналогічно, OAuth авторизує певні дії, не розкриваючи всю інформацію. Наприклад, коли потрібно натиснути на «Увійдіть за допомогою Facebook» або «Увійдіть за допомогою Google». Facebook або Google надає додатку, до якого потрібно отримати доступ, достатньо інформації для виконання роботи. Як, наприклад, ім’я та адресу електронної пошти – але не всю історію життя. Зокрема, OAuth не ділиться паролем з додатком. Замість цього він надає спеціальний вебтокен, який говорить: «Цій людині дозволено робити X, Y і Z».

Детальний огляд: SAML (мова розмітки декларації безпеки)

Як вже зазначалося, SAML – це як друг, який ручається за те, що охочий потрапить на вечірку. За допомогою SAML відбувається запит на доступ не до «вечірки», а до додатка або сервісу, а «друг» – це постачальник ідентифікаційних даних (наприклад, Google або внутрішня система компанії), який повідомляє сервісу, що він вже автентифікував людину, тому сервіс повинен задовольнити її запит на доступ.

Основний варіант використання

Основною перевагою SAML є забезпечення єдиного входу (SSO), що дозволяє користувачам автентифікуватися один раз, а потім отримувати доступ до декількох систем без необхідності повторного входу або використання окремих облікових записів.

Відповідно, SAML ідеально підходить для середовищ, де SSO є критично важливим, наприклад, для великих підприємств у сфері освіти, охорони здоров’я та державного сектору. Якщо потрібно керування користувачами в декількох додатках у різних доменах зі спрощеною автентифікацією, не змушуючи користувачів входити в систему кілька разів, то SAML є ідеальним протоколом.

Як працює SAML

SAML містить три основних компоненти:

  • Користувач – особа, яка намагається отримати доступ
  • Постачальник послуг – хост програми або послуги, до якої користувач хоче отримати доступ
  • Постачальник ідентифікаційних даних – організація, яка автентифікує користувача

Ці компоненти взаємодіють наступним чином:

  1. Користувач намагається отримати доступ до програми або сервісу.
  2. Постачальник послуг перенаправляє користувача до постачальника ідентифікаційних даних для автентифікації.
  3. Постачальник ідентифікаційних даних перевіряє, чи користувач вже пройшов автентифікацію (а якщо ні, то виконує крок автентифікації), і надсилає назад XML-токен, що підтверджує особу користувача.
  4. На основі XML-токену постачальник послуг надає користувачеві доступ до додатка або сервісу.

Ключові особливості SAML

  • Федеративна ідентифікація – дозволяє ідентифікації бути спільною для різних доменів.
  • SSO – забезпечує безперебійну автентифікацію в різних системах
  • Корпоративне використання – використовується переважно в середовищах B2B, де критично важливо забезпечити безпечний обмін ідентифікацією між внутрішніми та сторонніми додатками.
  • На основі XML – значною мірою покладається на XML для комунікації між сторонами

Переваги використання SAML

  • Зменшення ризику компрометації облікового запису – оскільки користувачам потрібен лише один набір облікових даних, вони з більшою ймовірністю обиратимуть надійні паролі та зможуть їх запам’ятати, не вдаючись до ризикованих обхідних шляхів на кшталт їх записування.
  • Зменшене ІТ-навантаження – менша кількість скидань паролів та звернень до служби підтримки, пов’язаних з проблемами входу. Це економить час як для користувачів, так і для ІТ-персоналу.
  • Зменшення ризику крадіжки паролів – паролі не передаються між користувачем та постачальником послуг.

Детальний огляд: OAuth

Як вже було зазначено, OAuth – це як друг, який дозволяє користуватися своїм автомобілем, але не будь-якими іншими речами, що належать йому. Аналогічно, OAuth надає обмежений набір дозволів на доступ, не повідомляючи пароль користувача. Наприклад, OAuth дозволяє авторизувати сторонній додаток або вебсайт для доступу до фотографії користувача на Facebook, не розкриваючи жодної іншої інформації, яку Facebook зберігає про нього, включаючи облікові дані для входу в систему.

Як працює OAuth

Основними компонентами OAuth є:

  • Клієнт – додаток, який запитує доступ до ресурсу від імені користувача
  • Власник ресурсу – користувач або система, яка володіє запитуваними даними або додатком і може надати доступ до них
  • Сервер авторизації – сервер, який видає токени після згоди користувача
  • Сервер ресурсу – API або сервіс, що зберігає ресурс

Як це відбувається:

  1. Користувач хоче надати клієнтському додатку доступ до певних даних про нього, які зберігаються у власника ресурсу.
  2. Клієнт запитує авторизацію у відповідного сервера авторизації.
  3. Сервер авторизації автентифікує клієнта, отримує згоду від власника ресурсу на доступ і надсилає токен доступу клієнту.
  4. Використовуючи токен доступу, клієнт запитує доступ до потрібного ресурсу у сервера ресурсів.

Варіанти використання OAuth

OAuth найкраще підходить для додатків, орієнтованих на споживача, а також для ситуацій, коли стороннім додаткам потрібен обмежений доступ до даних користувача. Наприклад, якщо користувач створює мобільний додаток, якому потрібен доступ до даних із зовнішнього API, OAuth надає безпечний і стандартизований спосіб надати цей доступ без компрометації облікових даних користувача.

Ключові особливості OAuth

  • Орієнтований на авторизацію – призначений для надання доступу стороннім користувачам до ресурсів без спільного використання облікових даних
  • API-орієнтований – широко використовується для захисту доступу до API, особливо в мобільних, веб та хмарних додатках
  • Базований на токенах – використовує токени доступу (зазвичай у форматі JSON), щоб дозволити або заборонити доступ
  • Орієнтований на споживача – зазвичай використовується в B2C додатках, таких як Facebook і Google.

Переваги використання OAuth

  • Знижений ризик зломів – OAuth використовує токени, які надають доступ лише до певних ресурсів на обмежений час.
  • Гнучкість – OAuth можна використовувати з мобільними пристроями, настільними комп’ютерами, веббраузерами та пристроями IoT.
  • Підвищення рівня задоволеності клієнтів – організації можуть використовувати довірені сторонні системи авторизації, такі як Google або Facebook, для надання доступу до власних ресурсів, що спрощує роботу з клієнтами.

Порівняльний аналіз: SAML проти OAuth

Схожість між SAML та OAuth

  • OAuth, і SAML забезпечують єдиний вхід, щоб користувачі могли автентифікуватися один раз і отримати доступ до кількох сервісів.
  • Обидва протоколи дозволяють обмінюватися ідентифікаційною інформацією між різними системами, додатками або організаціями.
  • Обидва протоколи підвищують зручність і безпеку користувачів, усуваючи необхідність ділитися або зберігати облікові дані в сторонніх сервісах.

Відмінності між SAML та OAuth

  • OAuth використовує легкі токени на основі JSON, тоді як SAML використовує багатослівні токени на основі XML.
  • OAuth зазвичай використовується для споживчих веб та мобільних додатків, тоді як SAML в основному використовується для SSO та федеративної ідентифікації на рівні корпорацій.
  • Токени OAuth використовуються для авторизації доступу до API, у той час, як твердження SAML використовуються для встановлення автентифікації між системами.

Паралельне порівняння

ОсобливістьSAMLOAuth
ПризначенняАвтентифікаціяБезпарольна авторизація
АкцентЄдиний доступ (SSO)Доступ до API
Формат токенівXMLJSON
Ключовий випадок використанняКорпоративні та B2B середовищаСпоживчі веб та мобільні додатки
СкладністьБільш складнийЛегший і гнучкіший

Співіснування протоколів

SAML і OAuth можуть працювати разом у системах, що вимагають як автентифікації, так і авторизації. Наприклад, співробітник може увійти в корпоративну систему за допомогою SAML, але потім система видає токен доступу OAuth, щоб дозволити йому взаємодіяти із зовнішніми сервісами або API, такими як Microsoft Graph або Google Drive.

Проблеми безпеки та найкращі практики

Крадіжка токенів та повторні атаки

Оскільки токени OAuth зазвичай довготривалі, вони вразливі до перехоплення зловмисниками, які можуть використовувати їх для доступу до критично важливих даних або систем. Наприклад, токени OAuth можуть бути перехоплені за допомогою таких методів, як атаки типу Man-in-the-Middle (метод кіберзлочину, при якому зловмисник таємно перехоплює та/або модифікує дані, що передаються між користувачем і сервером), або викрадені з недостатньо захищеного сховища.

Щоб мінімізувати ці ризики, організації можуть використовувати короткочасні токени доступу і завжди використовувати HTTPS, який забезпечує шифрування TLS.

XML Signature Wrapping (XSW)

XML-підпис – це цифровий підпис, який додається до XML-документа, наприклад, токен SAML. Дійсний підпис вказує на те, що документ походить з надійного джерела і не був підроблений. Зловмисники можуть використовувати цей механізм перевірки, вставляючи шкідливі дані в SAML-токен, зберігаючи при цьому дійсний підпис.

Щоб протистояти цим атакам, організації можуть вимагати надійні цифрові підписи та шифрувати токени SAML, щоб захистити їхню цілісність і конфіденційність.

Майбутні тенденції та розвиток

Організації швидко відходять від традиційної автентифікації за допомогою пароля на користь таких методів, як багатофакторна автентифікація (MFA) та безпарольні варіанти, такі як passkeys. У більш широкому сенсі, вони приймають моделі безпеки Zero Trust, які підкреслюють необхідність «ніколи не довіряти, завжди перевіряти». Крім того, вони використовують штучний інтелект (ШІ) і машинне навчання (ML, machine learning), щоб розширити свої можливості виявлення загроз.

Висновок

Хоча SAML і OAuth відіграють важливу роль в управлінні доступом до додатків і даних, вони вирішують різні завдання: SAML фокусується на підтвердженні особи користувача і зазвичай використовується для SSO в корпоративних середовищах, тоді як OAuth призначений для деталізованої безпарольної авторизації для безпечного доступу до API та ресурсів у веб та мобільних додатках. Обидва протоколи підтримають зусилля зі створення більш плавного і простого користувацького інтерфейсу, зберігаючи при цьому високий рівень безпеки.

Підписатися на новини