У сучасному цифровому світі, оптимізація процесу керування паролями є критично важливою. Оскільки компанії активно впроваджують цифрові технології, працівники дедалі частіше використовують різноманітні інструменти для спільної роботи, обміну повідомленнями та зберігання даних.
Це створює нові виклики для розробників: як надати співробітникам безпечний доступ до внутрішніх програм і хмарних даних? Для багатьох рішенням є автентифікація SAML!
Що таке SAML?
Security Assertion Markup Language, або SAML, це відкритий стандарт, що спрощує процеси автентифікації. Він базується на XML (розширюваній мові розмітки) та стандартизує взаємодію між об’єктами, що проходять автентифікацію, та веб-сервісами чи програмами. Простіше кажучи, SAML дозволяє використовувати один логін для доступу до багатьох різних додатків.
З одного боку, постачальнику послуг потрібна автентифікація від постачальника ідентифікаційних даних (IdP) для надання авторизації користувачеві. Наприклад, Salesforce є постачальником послуг, який залежить від IdP для підтвердження ідентичності користувача.
З іншого боку, постачальник ідентифікаційних даних (IdP) підтверджує, що користувач є тим, за кого себе видає, і надсилає цю інформацію постачальнику послуг, разом з правами доступу користувача. Прикладом є Auth0, провідний постачальник рішень у сфері ідентифікації.
Що таке єдиний вхід SAML?
Однією з ключових функцій SAML є забезпечення єдиного входу (SSO). До появи SAML, SSO був можливим, але залежав від файлів cookie та був ефективним лише в межах одного домену.
SAML забезпечує єдиний вхід, дозволяючи користувачам отримувати доступ до різних програм, використовуючи один набір облікових даних. Хоча SAML існує з 2002 року, багато сучасних програм та SaaS-компаній використовують його для SSO. Остання версія, SAML 2.0, забезпечує міждоменний єдиний вхід в Інтернеті та є стандартом для авторизації ресурсів.
Які переваги автентифікації SAML?
SAML надає значні переваги для безпеки, користувачів та постачальників послуг (SP).
Простота: Користувачі лише один раз входять до IdP, а потім отримують безперешкодний та безпечніший доступ до всіх програм.
Підвищена безпека: Багато постачальників послуг не мають достатньо часу чи ресурсів для створення та підтримки безпечної автентифікації користувачів. IdP зазвичай мають кращу інфраструктуру для цього. Перекладаючи автентифікацію на IdP, SAML забезпечує безпечну автентифікацію, яка може включати багаторівневу безпеку, наприклад, MFA.
Покращений користувацький досвід: Завдяки SAML користувачам не потрібно запам’ятовувати численні логіни та паролі.
Зменшення витрат на управління: Постачальники послуг можуть підвищити безпеку платформи без зберігання паролів. Це усуває необхідність вирішувати проблеми із забутими паролями. Служба підтримки зменшує витрати, а технічні команди можуть зосередитися на більш важливих запитах.
Що таке Auth0 і як він пов’язаний з автентифікацією SAML?
Auth0 – це платформа, що надає послуги автентифікації та авторизації користувачів. Він може виступати як IdP, так і SP. Auth0 пропонує єдиний вхід, який можна інтегрувати з SAML. Розробники часто використовують Auth0 з SAML для диверсифікації ризиків, маючи кілька IdP.
Auth0 можна використовувати практично з усіма основними мовами програмування та API. Він також інтегрується з соціальними мережами, базами даних та каталогами LDAP.
SAML SSO Flow
Однією з ключових функцій SAML є забезпечення єдиного входу (SSO). До появи SAML, SSO був можливим, але залежав від файлів cookie та був ефективним лише в межах одного домену.
SAML забезпечує систему єдиного входу, що дозволяє користувачам отримувати доступ до багатьох програм за допомогою єдиного входу та набору облікових даних. Хоча SAML існує з 2002 року, багато нових програм та SaaS-компаній використовують його для SSO. Його остання версія, SAML 2.0, забезпечує міждоменний єдиний вхід та є стандартом для авторизації ресурсів.
З технічної точки зору, це передбачає запит на автентифікацію користувача лише один раз, коли він використовує різні програми. Наприклад, можна розглянути автентифікацію Google, яка є спільною для різних сервісів: Gmail, Youtube, Google Apps тощо.
У цьому випадку Google є постачальником ідентифікаційних даних (IdP) для своїх сервісів. Ці сервіси називаються “постачальниками послуг” (SP).
Автентифікація
При підключенні до зовнішньої програми, невідомий користувач перенаправляється до корпоративного IdP. Цей IdP є веб-сервісом, доступним через HTTPS. Він може розміщуватися як внутрішньо, так і зовні.
Внутрішня автентифікація
Користувач підтверджує свою особу у IdP. Це можна зробити за допомогою явних методів автентифікації (логін/пароль) або шляхом використання існуючого токена.
Генерація твердження
IdP генерує “токен”, своєрідну ідентифікаційну картку користувача, дійсну лише для запитуваної послуги та протягом обмеженого часу. Цей токен містить, зокрема:
- Ідентифікацію користувача: логін, електронна пошта або інші поля
- Додаткові атрибути (за бажанням): прізвище, ім’я, мова тощо.
- Термін дії токена
- Підпис токена IdP
Передача від IdP до SP
У найпоширенішому варіанті, твердження передається не безпосередньо від IdP до SP, а через користувача. За допомогою перенаправлення HTTP, IdP надсилає браузеру клієнта токен для передачі постачальнику послуг. Це можна порівняти з посвідченням особи, виданим для пред’явлення будь-якій установі.
Обробка токена SP
Постачальник послуг отримує токен від користувача. SP довіряє IdP. Він перевіряє підпис та цілісність токена, а також його термін дії. Якщо перевірка успішна, SP відкриває сесію для користувача.
Джерело: Вікіпедія
Автентифікація SAML проти авторизації користувача
Автентифікацію SAML часто плутають з авторизацією. Важливо розрізняти ці поняття:
Автентифікація: Це підтвердження особи користувача, тобто перевірка, чи він той, за кого себе видає. Наприклад, використання електронної пошти та пароля для входу в систему. Після успішної автентифікації, користувач може отримати доступ до інших платформ.
Авторизація: Це дозволи, які користувач надає сторонньому інструменту для доступу до ресурсів його облікового запису. Після схвалення користувача, протокол авторизації обмінюється токенами без доступу до його облікових даних. Наприклад, коли ви надаєте платформі (наприклад, Facebook) доступ до певної інформації з вашого облікового запису Google.
Основна термінологія SAML
Твердження SAML
Твердження SAML зазвичай передаються від постачальників ідентифікаційних даних до постачальників послуг. Вони містять заяви, які використовуються для прийняття рішень щодо контролю доступу. SAML надає три типи тверджень:
- Твердження автентифікації: Підтверджує, що постачальник послуг був дійсно автентифікований постачальником ідентифікаційних даних у певний час за допомогою певного методу автентифікації.
- Твердження атрибутів: Підтверджує, що об’єкт має певні атрибути. Атрибут – це просто пара “ім’я-значення”. Довірені сторони використовують атрибути для прийняття рішень щодо контролю доступу.
- Твердження про рішення авторизації: Підтверджує, що суб’єкту дозволено виконувати дії з ресурсом, надавши необхідні докази. SAML навмисно обмежує виразність станів рішень авторизації.
Сервіс споживача тверджень (Assertion Consumer Service, ACS)
ACS – це точка, куди постачальник ідентифікаційних даних перенаправляє користувача після відповіді на запит автентифікації. Ця точка є кінцевою точкою HTTPS, що обробляє персональну інформацію.
Стандартний стан реле
Це URL-адреса за замовчуванням, куди перенаправляється користувач після успішної автентифікації за допомогою SAML. Стандартний стан реле використовується для координації обміну повідомленнями між IdP та SP.
SAML є широко використовуваним протоколом, і часто виникає потреба декодувати твердження SAML. Нижче представлені деякі з кращих інструментів для кодування, декодування та форматування повідомлень і тверджень SAML:
#1. SAMLtool
SAMltool від OneDesign – це набір онлайн-інструментів SAML. Вони включають інструменти для кодування та декодування повідомлень SAML, шифрування та дешифрування тверджень, а також для підписання та перевірки повідомлень і тверджень SAML. SAMLtool також пропонує плагіни для інтеграції цих інструментів з різними CMS.
#2. Samtool.io
Розроблений Auth0, samltool.io є онлайн-інструментом для декодування, перевірки та аналізу повідомлень і тверджень SAML, шляхом вставки необробленого XML або URL-адреси, що містять запити.
#3. Декодер SAM
Декодер SAM – це простий онлайн-інструмент для декодування SAML, наданий PingIdentity. Він дозволяє декодувати, розширювати та форматувати повідомлення, твердження та метадані SAML.
Підсумки
Стандарт SAML є дуже корисним для створення централізованої системи автентифікації на основі мови розмітки. Однією з його головних переваг є висока ефективність та високий рівень безпеки.
Зокрема, мінімізується кількість можливих витоків безпеки, оскільки окремі програми не зберігають та не синхронізують дані користувача. Таким чином, досягається одна з головних цілей: поєднання високого рівня безпеки з максимальною простотою використання.
Ви також можете ознайомитися з іншими провідними платформами для автентифікації користувачів.