В условиях стремительной цифровизации и всё большей интеграции сервисов в корпоративной среде единый вход (Single Sign-On, SSO) становится неотъемлемой частью обеспечения безопасности и удобства пользователей. Однако, несмотря на очевидные преимущества SSO и значительный спрос на единую точку доступа к многочисленным сервисам, в мире информационной безопасности и сегодня отсутствует единый, последовательный и универсальный API для реализации единого входа. Почему так происходит, и какие факторы мешают появлению стандартизированного протокола? Понимание этих вопросов позволяет лучше ориентироваться в современной инфраструктуре безопасности и разработке приложений.Прежде всего, важно отметить, что единственный механизм для аутентификации пользователей — это принципиально сложный процесс, тесно связанный с разнородностью систем, политик безопасности и техническими особенностями различных клиентов и сервисов. Современные службы единого входа предоставляют протоколы, такие как OpenID Connect (OIDC) и SAML, которые ориентированы преимущественно на веб-приложения.
Для конечного пользователя процесс выглядит привычно: он переходит на сервис, находится перенаправление на страницу провайдера аутентификации, где проходит процедуру входа, и затем возвращается обратно с соответствующим токеном. Благодаря этому обеспечивается высокий уровень безопасности и удобства.Однако существенные трудности начинаются при попытках использовать этот же процесс в контекстах, не связанных с веб-интерфейсом, например, в командной строке (CLI) или на устройствах с ограниченными возможностями работы с браузером. Для этих случаев используются разные обходные решения, например, device code flow — когда пользователь авторизуется отдельно, с другого устройства. Такой подход, пусть и решает проблему с отсутствием браузера, создает неприятный опыт для пользователя и ставит под угрозу уровень безопасности, предполагаемый многофакторной аутентификацией.
Другой метод — запускать локальный сервер и передавать токен обратно приложению — также имеет существенные ограничения, особенно при удаленной работе, и не является универсальным.Де-факто браузер играет роль связующего звена и выполняет большую часть работы по обработке многофакторной аутентификации, например, WebAuthn. Производители провайдеров единого входа ориентируются на веб-экосистему и зачастую не предлагают «чистый» API для аутентификации с поддержкой MFA вне браузера. Многие компании предоставляют собственные SDK или интерфейсы, которые по сути привязаны к браузеру или требуют нестандартных обходных решений. Это заставляет разработчиков прибегать к сложным и не всегда надежным методам, включая разбор JavaScript-кода и эмуляцию поведения браузера, чтобы получить необходимые данные для аутентификации.
Причина такой ситуации находится не только в технической сложности, но и в экономических и стратегических интересах крупнейших игроков рынка. Компании, предоставляющие идентификационные сервисы, заинтересованы в создании «закрытых экосистем» — таким образом, пользователи и корпоративные заказчики зависят от одного поставщика, связанного с конкретным способом аутентификации. Универсальный и открытый API позволил бы быстро переключаться между провайдерами, уменьшить затраты на интеграцию и упростить управление безопасностью, что снизило бы ориентированность на «привязку к платформе» и уменьшило прибыльность компаний, формирующих экосистемы. Другими словами, отсутствие стандарта — это часть бизнес-модели, направленной на строительство барьеров для выхода.К тому же, специфика многофакторной аутентификации накладывает собственные ограничения.
Множество решений используют разные способы подтверждения личности — от SMS и push-уведомлений до биометрии и аппаратных токенов. Универсальный API должен был бы поддерживать не только стандартизированный обмен данными, но и описывать процесс взаимодействия с каждым из этих методов, что является огромной технической и организационной задачей. В результате каждый вендор создает собственные проприетарные протоколы, сложные для переноса и стандартизации.Стоит отметить, что существующие попытки создания более дружелюбных и универсальных интерфейсов идут медленно и с помощью сообщества. Некоторые открытые проекты ставят своей целью унификацию процессов аутентификации, но они часто сталкиваются с отсутствием согласия и поддержки со стороны ключевых провайдеров.
В конце концов, переход к действительно открытым, стандартизированным решениям подразумевает отказ от части контроля и бизнес-выгод, что для рынка с высокой конкуренцией и монополистическими тенденциями маловероятно.В итоге, отсутствие единого API для SSO обусловлено комплексом технических, пользовательских и экономических причин. Технически — разные сценарии использования, сложность и разнообразие методов многофакторной аутентификации затрудняют создание универсального подхода. Пользовательски — неудобства и несовместимости между клиентскими приложениями и протоколами снижают эффективность. Экономически — интересы крупных игроков, желающих удержать клиентов в своих экосистемах, тормозят инициативы по стандартизации.