Что такое SAML?
SAML — сокращение от Security Assertion Markup Language (Язык разметки декларации безопасности). Его ключевой ролью в обеспечении сетевой безопасности заключается в том, что он позволяет получить доступ в несколько приложений, используя один набор учетных данных для авторизации. Он работает посредством обмена аутентификационной информацией в определенном формате между участниками, в частности, между системой управления доступами и веб-приложением.
Как работает SAML
SAML — это открытый стандарт обмена данными аутентификации, основанный на языке XML. Веб-приложения используют SAML, чтобы передавать аутентификационные данные между сторонами процесса: а именно, между системой управления доступами и провайдером услуг.
SAML появился в индустрии высоких технологий для упрощения процесса аутентификации, когда пользователям нужно было получить доступ к нескольким независимым веб-приложениям в разных доменах. До появления SAML, технология единого входа (SSO) была вполне достижима/выполнима, но базировалась на файлах cookies, которые были жизнеспособны только в пределах одного домена.
Здесь же, эта цель достигается за счет согласования процесса аутентификации с системой управления доступами. Веб-приложения могут использовать SAML через систему управления доступами для предоставления доступа пользователям. Такой метод аутентификации означает, что пользователям больше не нужно запоминать множественные комбинации логинов и паролей. Более того, он обладает несомненным преимуществом для провайдера в виде повышения уровня безопасности платформы, преимущественно благодаря отсутствию необходимости хранить пароли и разбираться и с их восстановлением.
Преимущества SAML
Благодаря своим многочисленным преимуществам, SAML является довольно широко используемым корпоративным решением. Во-первых, он улучшает пользовательский интерфейс, ведь теперь нужно всего лишь один раз авторизоваться, чтобы получить доступ к нескольким приложениям. Это не только ускоряет процесс аутентификации, но также означает, что вам нужно держать в памяти лишь один набор учетных данных для входа. В корпоративном плане SAML также значительно упрощает работу, т.к количество обращений в службу поддержки, связанных восстановлением утраченных и забытых паролей будет значительно ниже.
В дополнение, SAML не только улучшает взаимодействие с пользователем, но и обеспечивает повышенный уровень безопасности. Поскольку система управления доступами хранит всю информацию для входа, поставщику услуг больше нет необходимости хранить какие-либо учетные данные в своей базе.
Плюс ко всему, теперь, когда система управления доступами обеспечивает безопасную SAML аутентификацию, у компаний появляется возможность инвестировать появившееся время и ресурсы в разработку нескольких/новых уровней безопасности. Например, система управления доступами обеспечивает комплексную защиту личных данных, что включает в себя такие функции, как многофакторная аутентификация (MFA), которая защищает от наиболее распространенных атак на конфиденциальную информацию.
Процесс работы
SAML работает путем обмена пользовательской информацией (логины, состояние аутентификации, идентификаторы и другие данные) между системой управления доступами и поставщиком услуг. В результате это упрощает и обеспечивает безопасность процесса аутентификации, ведь теперь пользователю необходимо войти в систему только один раз, используя один набор данных для входа. Таким образом, когда пользователь запрашивает доступ к сайту, SAML передает аутентификационные данные поставщику услуг, который впоследствии предоставляет доступ пользователю. Проведем аналогию с реальностью.
Разумеется, перед предоставлением доступа к информации, компании проверяют ваши личные данные. Возьмем, к примеру, авиакомпании. Перед посадкой на самолет им необходимо убедиться что вы именно тот, за кого себя выдаете, чтобы обеспечить полную безопасность других пассажиров. Поэтому им необходимо предоставить официально заверенный государственный документ, удостоверяющий личность. Как только они убедятся в том, что информация в документе совпадает с указанной в билете, вы будете допущены на борт самолета.
Здесь государство является примером системы управления доступами, авиакомпания — поставщиком услуг, а ваше удостоверение личности, выданное правительством — SAML подтверждением. Когда вы подаете заявку на оформление документов государственного образца, вам необходимо заполнить бланк, прикрепить фотографию и, если это необходимо, также предоставить отпечатки пальцев. Далее государство (поставщик услуг) переносит информацию о вас в базу данных и выдает физический документ, подтверждающий личность.
Вернемся к нашему примеру с авиакомпанией. Перед посадкой на самолет сотрудники авиакомпании (поставщика услуг) снова проверяют удостоверение личности (SAML подтверждение). Сразу после успешной аутентификации, авиакомпания разрешает посадку на борт.
Что такое SAML SSO?
SAML Single Sign-On (Технология единого входа) — это механизм, использующий SAML в качестве инструмента, позволяющего пользователям авторизовываться сразу в нескольких приложениях, стоит только один раз ввести логин и пароль в системе управления доступами. SAML SSO обеспечивает гораздо более быстрый и удобный пользовательский интерфейс.
SAML SSO прост в использовании и более безопасен для пользователя, ведь теперь нужно запомнить всего лишь один набор учетных данных. По той же причине он обеспечивает быстрый и беспрепятственный доступ к приложениям, так как теперь нет необходимости каждый раз вводить логин и пароль. Вместо этого пользователь авторизуется в системе управления доступами и заходит в необходимое приложение, просто кликнув на его иконку или перейдя на сайт через URL.
В дополнение к расширенному пользовательскому интерфейсу, SAML SSO обладает и другими преимуществами. Он увеличивает производительность как пользователя, так и службы поддержки. Пользователям больше не нужно тратить время на авторизацию в разных приложениях, вспоминая логины и пароли. Как следствие, служба поддержки не будет завалена запросами на сброс и восстановление пароля, освобождая время сотрудников на решение других вопросов, связанных с технической поддержкой.
Что немаловажно — SAML SSO помогает сократить расходы. Например, если у службы поддержки есть запрос на сокращение количества обращений, вместо того, чтобы создавать систему собственной локальной аутентификации для решения этой задачи, они могут просто использовать уже готовую систему управления доступами, снижая трудозатраты на ее создание и внутреннее обслуживание.
В чем разница между OAuth и SAML?
OAuth и SAML — это протоколы, используемые для предоставления доступа. Однако, радикальным отличием между ними является то, что SAML используется для аутентификации, а OAuth для авторизации.
Если мы вернемся к аналогии с авиаперелетами, то паспорт пассажира — это подтверждение SAML, а билет — это токен OAuth. Авиакомпания использует паспорт для подтверждения личности перед разрешением посадки на самолет. Однако, стоит только пассажиру зайти на борт воздушного судна, бортпроводники попросят билет, чтобы подтвердить статус пассажира и его права на перелет. К примеру, если у пассажира билет первого класса, ему будет открыт доступ к местам повышенной комфортности и другим удобствам, недоступным пассажирам эконома.
Пример SAML
Процесс аутентификации SAML базируется на claims (данных пользователя). На первом этапе, когда пользователь пытается получить доступ к сайту, поставщик услуг запрашивает аутентификацию пользователя у системы управления доступами. Затем, поставщик услуг использует SAML подтверждение, выданное системой управления доступами, для предоставления доступа пользователю. Проиллюстрируем данный процесс на примере:
- Пользователь открывает браузер и заходит в приложение поставщика услуг, который использует систему управления доступами для аутентификации.
- Веб-приложение отвечает SAML-запросом.
- Браузер передает SAML- запрос системе управления доступами.
- Система управления доступами обрабатывает SAML-запрос.
- Система управления доступами аутентифицирует пользователя, запросив логин, пароль или какой-либо другой фактор аутентификации. ПРИМЕЧАНИЕ: система управления доступами пропускает этот шаг, если пользователь уже был аутентифицирован.
- Система управления доступами генерирует SAML-ответ и отправляет его обратно/возвращает в браузер пользователя.
- Браузер отправляет сгенерированный SAML-ответ в приложение поставщика услуг на проверку.
- Если проверка прошла успешно, веб-приложение предоставляет доступ пользователю.
Обучающие ресурсы
OneLogin предлагает несколько наборов инструментов разработчика SAML, которые можно использовать для внедрения SSO в свои приложения через систему управления доступами, предоставляющую SAML-аутентификацию.
Более того, вы можете получить дополнительные ресурсы с инструкциями по добавлению вашего приложения в каталог OneLogin, что необходимо изменить на стороне кода для внедрения SSO через OneLogin, а также полезные рекомендации и ответы на часто задаваемые вопросы.
Пакет разработчика The OneLogin SAML Toolkit предоставляет различные онлайн инструменты на https://www.samltool.com. Например, можно установить самостоятельно сгенерированный самозаверенный сертификат X. 509, который вы сможете использовать в тестовой среде.
Кроме того, поскольку SAML использует алгоритм кодирования Base64, OneLogin предлагает онлайн-сервис по кодированию и декодированию XML в Base64 и наоборот. Пакет разработчика также предоставляет ресурсы по шифрованию узлов из XML, подписи AuthNRequests и проверки вашего XML в соответствии со схемой SAML XSD.
В дополнение к поддержке сертификатов и предоставлению доступа к службам кодирования, декодирования, подписи и проверки XML, онлайн-инструменты OneLogin SAML предлагают разработчикам множество других полезных ресурсов. Например, вы можете создать XML метаданные службы управления доступами SAML. Есть также инструмент, который может извлечь NameID и другие необходимые данные из SAML-ответа. И наконец, онлайн-инструменты OneLogin SAML также предлагают услугу которая конвертирует XML- или SAML- сообщение в удобночитаемый к формат.