Простая и конфиденциальная аутентификация пользователей с помощью FedCM: подход Seznam

Наталья Маркобородова
Natalia Markoborodova

Опубликовано: 8 сентября 2025 г.

Лидеры отрасли в различных секторах понимают, насколько важно защищать конфиденциальность, обеспечивая при этом высокий уровень пользовательского опыта. Seznam стремится обеспечить непревзойденный пользовательский опыт и конфиденциальность, успешно внедрив систему федеративного управления учётными данными (FedCM).

Компании, получающие выгоду от FedCM

Организации из различных областей интегрируют FedCM со своими решениями. Поскольку FedCM разработан для федеративного управления идентификацией, поставщики идентификационных данных (IdP) являются его основными бенефициарами. Они используют его для улучшения процесса входа в систему. Поставщики услуг электронной коммерции и платежные системы, многие из которых также выступают в качестве поставщиков идентификационных данных, также находят возможности для улучшения пользовательского опыта с помощью FedCM.

Сезнам

Seznam — европейская технологическая компания и поставщик услуг идентификации, охватывающий 90% населения Чехии. Seznam выполняет функции социального, информационного и контент-центра. Seznam внедрила FedCM, чтобы позволить клиентам интернет-магазинов, работающих на платформах партнёров, входить в систему, используя свои учётные записи Seznam.

Диалоговое окно FedCM на сайте eshop.starkl.com, предлагающее пользователю войти в систему, используя свою учетную запись Seznam.
Диалоговое окно FedCM, предлагающее пользователю войти в систему Seznam на сайте партнера.

Благодаря FedCM компания Seznam добилась значительного увеличения показателей авторизации пользователей в партнерских сетях, улучшения пользовательского опыта и обеспечения единообразного потока идентификации независимо от доступности сторонних файлов cookie.

Мотивация

Компания Seznam решила внедрить FedCM из-за ряда признанных преимуществ:

  • FedCM разработан с учётом потребностей конечного пользователя, предоставляя ему контроль над информацией, предоставляемой поставщику удостоверений. Это соответствует видению Seznam о безопасной и конфиденциальной среде для своих пользователей.
  • FedCM — это встроенная функция браузера, совместимая с существующим интерфейсом входа Seznam, который использует стандарт OAuth 2.0.
  • FedCM — это подход к федерации удостоверений, ориентированный на конфиденциальность. Например, информация о посещении пользователем проверяющей стороны (RP) предоставляется только IdP, если пользователь выполнил вход в систему. Это соответствует взглядам Seznam на устойчивое развитие бизнеса.

Подробности реализации

Компания Seznam внедрила FedCM как надстройку над своим существующим решением OAuth. В этой архитектуре поток FedCM безопасно передает код авторизации OAuth от поставщика удостоверений к поставщикам авторизации.

Поток FedCM, демонстрирующий обмен токена FedCM на код авторизации OAuth на стороне IdP
Поток FedCM интегрирован с OAuth. См. код схемы .

Усилия по внедрению

Реализация FedCM в Seznam показалась простой и соответствующей их текущему подходу. Исследования и внедрение API заняли месяц, и на это потребовалось два разработчика. Запуск FedCM в эксплуатацию занял менее двух месяцев. Процесс был итеративным, и значительное время было потрачено на изучение API.

Проблемы

Будучи одним из первых пользователей, компания Seznam выявила несколько проблем и предоставила ценные отзывы, которые помогли усовершенствовать API.

Поддержка нескольких поставщиков удостоверений

Компания Seznam была заинтересована в поддержке FedCM нескольких поставщиков удостоверений. С помощью этой функции пользователи должны были выбирать между аккаунтами Seznam и Google на партнёрских RP. Однако, когда Seznam впервые приступила к реализации FedCM, эта функция находилась на ранней стадии, и разработчикам приходилось регистрироваться в пробной версии Origin и использовать токен для её активации. Поэтому Seznam решила дождаться появления функции в стабильной версии Chrome.

Эта функция доступна начиная с Chrome 136, и разработчики могут настроить поддержку нескольких поставщиков удостоверений. Например, для поддержки поставщиков удостоверений Seznam и Google поставщик удостоверений может включить обоих поставщиков в один вызов get() , а поставщик удостоверений может сделать это независимо:

  // Executed on the RP's side:
    const credential = await navigator.credentials.get({
      identity: {
        providers: [
          {
            // IdP1: Seznam config file URL
            configURL: 'https://szn.cz/.well-known/web-identity',
            clientId: '123',
          },
          {
            // Allow Google Sign-in
            configURL: 'https://accounts.google.com/gsi/fedcm.json',
            clientId: '456',
          },
        ],
      },
    });

Seznam заявляет, что эта функция станет частью её решения. Кроме того, команда FedCM реализует поддержку нескольких SDK , включая поддержку нескольких вызовов get() .

Частный DNS

На этапе тестирования компания Seznam столкнулась с проблемой, связанной с конфигурацией сети. Тестовый сервер поставщика удостоверений (IdP) находился в частной сети и был доступен только через частный DNS. Такая конфигурация широко распространена во внутренних средах тестирования и разработки перед публикацией.

Однако такая настройка приводит к проблеме: поскольку well-known файл должен обслуживаться из eTLD+1 , а частный домен разработки не зарегистрирован в списке публичных суффиксов , браузер не будет отправлять запросы на извлечение well-known файла, размещенного в домене разработки:

  • login.idp.example : пример производственного домена.
  • idp.example/.well-known/web-identity : пример well-known файла в производстве.
  • login.dev.idp.example : пример домена разработки.
  • login.dev.idp.example/.well-known/web-identity : пример well-known файла в среде разработки.

Если реализация FedCM размещена на частном домене, запросы браузера к well-known файлу приводят к следующей ошибке:

The fetch of the well-known file resulted in a network error: ERR_NAME_NOT_RESOLVED

Эту ошибку можно устранить, включив флаг Chrome #fedcm-without-well-known-enforcement . При включении этого флага браузер пропускает загрузку well-known файла для тестирования. Узнайте, как включить флаги тестирования в Chrome .

Раскрытие пользовательской информации

Компания Seznam также хотела включить дополнительную информацию в первоначальный дизайн пользовательского интерфейса FedCM. В стандартном диалоговом окне FedCM пользователю отображается фиксированное сообщение о том, что определённые данные — обычно изображение профиля пользователя, имя и адрес электронной почты — передаются RP.

Команда FedCM учла отзывы и расширила API, чтобы обеспечить возможность настройки информации, предоставляемой пользователю. Например, с помощью функции «Продолжить» поставщик удостоверений может перенаправить пользователя на настраиваемую страницу для запроса дополнительной информации или разрешений. Функции настраиваемых параметров и полей , поддерживаемые начиная с Chrome 132, обеспечивают дополнительную настройку.

Страница IdP, на которой показано, что пользователь должен предоставить дополнительные разрешения для продолжения регистрации в FedCM, такие как просмотр и загрузка файлов Диска и событий календаря.
Пользователь может просматривать и предоставлять дополнительные разрешения, переданные RP конечной точке утверждения идентификатора с помощью API `Parameters` .

Проверка происхождения проверяющей стороны

Сервер поставщика удостоверений (IdP) должен проверить HTTP-заголовок Origin во входящем запросе FedCM, чтобы убедиться, что запрос соответствует источнику, предварительно зарегистрированному RP в IdP. Это гарантирует, что запрос на подтверждение идентификатора FedCM исходит от авторизованного RP, а не от злоумышленника, использующего client_id .

У Seznam есть особый случай: когда партнёрские RP регистрируются в Seznam, Seznam не запрашивает данные о происхождении RP. Это означает, что происхождение RP невозможно проверить.

Интеграция FedCM от Seznam основана на существующем решении OAuth. Для обеспечения безопасности решения без проверки источника был выбран альтернативный путь: проверка как client_id , так и client_secret проверяющей стороны.

Домен поставщика удостоверений, доступный пользователю

Инфраструктура аутентификации пользователей Seznam в основном работает в домене szn.cz , где размещены необходимые конечные точки IdP для FedCM. Однако основным фирменным стилем компании и доменом, благодаря которому пользователи широко узнают и доверяют её сервисам, является seznam.cz .

В диалоговом окне FedCM отображается фактический исходный домен конечных точек IdP: szn.cz Пользователи, знакомые с брендом seznam.cz , могут испытывать затруднения, когда им предлагается войти в систему с менее знакомым доменом szn.cz

Начиная с Chrome 141, FedCM не позволяет отображать домен, отличный от того, на котором размещена реализация IdP. Это ограничение является намеренным решением, призванным обеспечить прозрачность для пользователей. Однако команда FedCM осознаёт сложности, которые может создать это ограничение, и обсуждает возможные корректировки.

Влияние

Благодаря API FedCM компания Seznam теперь может предоставлять пользователям-партнерам доступ к процедурам авторизации в одно касание. В нём были продемонстрированы преимущества пользовательского интерфейса FedCM по сравнению с другими методами аутентификации.

Хотя компания Seznam отметила значительный рост вовлечённости пользователей на сайтах, перешедших на систему входа FedCM, она не проводила комплексного анализа, чтобы отделить точное прямое влияние от других факторов. До интеграции FedCM реализация допускала гостевые покупки с использованием хэшированных адресов электронной почты с согласия пользователя для идентификации. Сложность такого анализа заключалась в оценке того, можно ли отнести конверсию пользователя к FedCM или пользователь совершил бы покупку, используя гостевую систему. Гипотеза Seznam предполагает, что более простое использование FedCM могло способствовать такому повышению конверсии.

Заключение

Seznam успешно внедрила FedCM, предоставив альтернативный процесс авторизации в дополнение к своему существующему решению OAuth. Хотя Seznam столкнулась с некоторыми сложностями, связанными с поддержкой поставщиков удостоверений, настройкой приватных DNS, настройкой текста раскрытия информации, проверкой происхождения проверяющей стороны и отображением домена пользователю, API значительно усовершенствовался с момента внедрения. Команда FedCM учла отзывы Seznam и других первых пользователей, что позволило разработать более эффективные инструменты для решения этих проблем. В качестве следующего шага Seznam планирует внедрить поддержку FedCM для нескольких поставщиков удостоверений.