Бывает, что мы заходим на какой-то сайт и для продолжения работы он предлагает нам создать новую учётную запись или авторизоваться с помощью другого сервиса — Яндекса, Эпла, Гугла и так далее. Такой вид авторизации называется SSO. Сегодня поговорим о том, что это за технология, как она работает и похоже ли это на менеджеры паролей, которые мы недавно разбирали.
Для начала вспомним, что такое авторизация и аутентификация:
- Аутентификация проверяет, что человек, который пытается зайти в свой профиль на сайте — именно он, а не кто-то другой.
- Авторизация устанавливает, чем этот человек может заниматься на сайте: он просто пользователь, модератор, админ или ещё кто-то? Что ему разрешено делать?
Мы будем говорить про аутентификацию — когда какой-то сайт или приложение получает подтверждение, что вы — это правда вы.
Что такое SSO и где мы его встречаем
SSO — аббревиатура Single Sign On, буквально «единое окно входа». Это такой метод идентификации, когда мы можем получить доступ к разным системам и приложениям, используя один и тот же набор учётных данных (имя пользователя и пароль). SSO ещё часто называют сквозной аутентификацией, потому что метод позволяет авторизоваться на подключённых сайтах с одной и той же учётной записью.
Самый простой пример работы SSO — доступ к разным сервисам одной компании. Если у нас есть учётная запись Яндекс ID, с её помощью мы можем пользоваться почтой Яндекса, слушать песни и подкасты в Яндекс Музыке, делать покупки на Маркете и так далее. Если у нас есть учётная запись Google, мы можем зайти по ней на YouTube и почту Gmail, пользоваться документами Google Docs и так далее.
Но если вы можете зайти на какой-то сайт, используя учётку Яндекса или Гугла, это не означает, что этот сайт тоже принадлежит им. На самом деле эти компании — поставщики SSO: они делятся учётными данными своих пользователей для входа на другие сайты:
![Что такое SSO](https://thecode.media/wp-content/uploads/2024/07/image3-1.png)
👉 А вообще кто угодно может сделать у себя такой вход, чтобы пользователи использовали учётные записи популярных сервисов для входа на сайт. У Google есть специальная инструкция на этот счёт.
Как работает SSO
В процессе SSO-аутентификации есть три участника:
- Пользователь.
- Поставщик SSO.
- Сервис-провайдер — сайт или приложение, доступ к которому хочет получить пользователь.
![Что такое SSO](https://thecode.media/wp-content/uploads/2024/07/image4-1024x560.jpg)
Получение доступа через SSO выглядит так:
- Пользователь заходит на сайт и выбирает авторизацию через SSO — например, с помощью учётной записи Яндекса или Гугла.
- Сайт (он же — сервис-провайдер) проверяет, есть ли у пользователя куки для этого сайта. Если их нет, то сайт просит пройти аутентификацию — например, ввести свой логин и пароль от выбранного SSO-сервиса в отдельном окне.
- Чтобы не заставлять пользователя лишний раз вводить логин и пароль от сервиса, где он уже авторизован, поставщик SSO (например, Яндекс) сначала проверяет куки пользователя для своего сервиса. Если куки говорят, что пользователь уже авторизован — у пользователя больше ничего не спрашивается, а SSO-провайдер отправляет на сайт подтверждение входа.
- Если пользователь не авторизован у поставщика SSO, то тут уже надо ввести логин и пароль. После этого всё происходит так же, как в п. 4 — SSO-сервис отправляет на сайт подтверждение входа через свою учётку.
- В итоге пользователь получает доступ к сайту.
![Что такое SSO](https://thecode.media/wp-content/uploads/2024/07/image2-1-1024x732.jpg)
Что такое SSO-токен
После входа в SSO-профиль поставщик SSO генерирует зашифрованный файл с информацией о пользователе: имя пользователя, его электронная почта, статус аутентификации. Это и есть SSO-токен.
Когда сайт получает токен от поставщика, то сразу проверяет электронную подпись. Подпись гарантирует, что после выдачи токен никто не изменял. Если сайт не может прочесть подпись или у токена истёк срок действия, нужна повторная аутентификация.
Токены бывают разных видов в зависимости от настройки SSO:
- OAuth-токены используются, если единое окно входа работает по протоколу OAuth. Такой токен выглядит как набор символов, например
y3_Vdheub7w9bIut67GHeL345gfb5GAnd3dZnf08FRbvjeUFvetYiohGvc
. - SAML-токены применяются для реализации SSO по протоколу SAM. Это XML-файл длиной около сотни строк с разными данными о пользователе: идентификатор, права доступа, время выполнения проверки подлинности.
- OpenID Connect обычно содержат информацию о пользователе в формате JSON. Это записи вида ключ-значение.
В чём плюсы SSO
Главный плюс SSO — работа с паролями.
Без SSO есть такие варианты:
- придумывать и хранить пароль для каждого сервиса;
- придумать и хранить один сложный пароль для всех сервисов;
- пользоваться менеджером паролей;
- пользоваться только теми приложениями, где не нужна авторизация.
С единым окном входа достаточно создать один аккаунт на все поддерживаемые сайты и приложения:
![Что такое SSO](https://thecode.media/wp-content/uploads/2024/07/image1-1-1024x560.jpg)
Если в компании настроен SSO, сотрудникам нужно создать одну учётную запись для доступа ко всем нужным корпоративным системам. А при увольнении администратор может закрыть эту запись и отозвать все доступы разом.
В чём минусы
Единое окно входа одновременно является единой точкой уязвимости. Если злоумышленник каким-то образом получит к ней доступ, то сможет зайти на все связанные с SSO ресурсы.
Нельзя создать аккаунт на сайте и потом привязать к нему SSO — придётся создавать новый профиль.
Не все приложения поддерживают эту технологию, поэтому это не универсальное решение в отличие от менеджера паролей.
Чтобы усилить защиту своих учётных записей, включайте в настройках двухфакторную аутентификацию везде, где это возможно. Тогда для доступа понадобится не только ваш SSO-профиль, но и дополнительная проверка: код на номер телефона, электронную почту или подтверждение входа в приложении.
А ещё бывает так, что сайт просто не поддерживает SSO-авторизацию. И придётся регистрироваться и входить на сайт по старинке: со своим отдельным логином и паролем.
Отличия от менеджера паролей
Менеджер паролей генерирует сложные пароли и хранит их в защищённой базе данных. Когда менеджер паролей видит, что в его базе есть доступы от сайта, то предлагает их ввести:
![Что такое SSO](https://thecode.media/wp-content/uploads/2024/07/image5-2.png)
У менеджера паролей есть такая же уязвимость, как у SSO: если другой человек получит к нему доступ, он получит доступ ко всем аккаунтам из базы. К менеджеру паролей тоже можно поставить двухфакторную аутентификацию.
Основное отличие единого окна входа в том, что с SSO вам вообще не нужны другие пароли. Нужен один аккаунт, с которым вы будете заходить на остальные ресурсы.
Ещё менеджер паролей можно использовать на любом сайте, а SSO — только на тех, которые связаны с поставщиком SSO.
Вот на что это похоже:
- SSO — универсальный ключ, которым можно открыть те двери, которые связаны с производителем ключа.
- Менеджер паролей — это связка ключей от всех дверей.
Когда в итоге нужно SSO и кому
Делать раздельные пароли или доверять всё SSO — личный выбор каждого, так как нельзя сказать, что какой-то способ безопаснее.
Один аккаунт SSO удобнее, чем разные пароли на всех сайтах. Но за этим аккаунтом нужно следить и обязательно установить двухфакторную аутентификацию.
Можно хранить все пароли в менеджере паролей. Но тогда снова получается один вход, через который можно зайти вообще на все ресурсы, доступ от которых хранится в базе.
Можно сделать разные надёжные пароли на каждом сайте. Это хороший вариант, но неудобный: пароли легко забыть или потерять.
Можно хранить пароли в записной книжке в сейфе. Только к сейфу всё равно нужен один пароль или ключ, которые можно потерять.
А что выбираете вы?