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

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

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

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

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

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

Сезнам

Seznam — европейская технологическая компания и поставщик услуг идентификации, охватывающая 90% населения Чехии. Она служит социальным центром, центром знаний и контента. 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 от поставщика идентификации (IdP) к участникам обмена данными (RP).

Схема работы FedCM, демонстрирующая обмен токена FedCM на код авторизации OAuth на стороне поставщика идентификации (IdP).
Интеграция потока FedCM с OAuth. См. диаграмму и код .

Усилия по реализации

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

Проблемы

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

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

Компания Seznam была заинтересована в поддержке FedCM нескольких поставщиков идентификации. Целью этой функции было предоставление пользователям возможности выбора между учетными записями Seznam и Google на партнерских платформах. Однако, когда Seznam впервые приступила к реализации этой функции в FedCM, она находилась на ранней стадии разработки, и разработчикам приходилось регистрироваться для участия в пробной версии и использовать токен для включения этой функции для пользователей. Поэтому 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 .

Уведомление о предоставлении информации на заказ

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

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

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

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

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

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

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

Домен, ориентированный на пользователя поставщика идентификационных данных

Инфраструктура аутентификации пользователей 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 для нескольких поставщиков идентификации.