Обновления FedCM: отображение домена iframe

Начиная с версии Chrome 142, вы можете включить отображение домена iframe в пользовательском интерфейсе FedCM, когда проверяющая сторона (RP) встроена в сторонний iframe на другом сайте. Эта функция повышает прозрачность для пользователей при входе в службу, встроенную на другом сайте.

Фон

Ранее при вызове FedCM из кросс-доменного iframe в пользовательском интерфейсе диалогового окна FedCM отображался только домен сайта верхнего уровня. Это могло создавать путаницу для пользователей, если сервис, с которым они взаимодействовали, отличался от сайта верхнего уровня. Например, пользователь мог находиться на новостном сайте со встроенным виджетом комментирования. При попытке пользователя войти в виджет комментирования в диалоговом окне FedCM отображался только домен новостного сайта, а не домен сервиса комментирования:

Заголовок диалога FedCM содержит текст: «Войдите на news-site.example с помощью fedcm-demo-idp.dev».
При вызове FedCM из iframe домен iframe не отображается в пользовательском интерфейсе.

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

Заголовок диалогового окна FedCM содержит текст: «Войдите в news-site.example с помощью fedcm-demo-idp.dev. news-site.example встраивает содержимое из widget.example».
При вызове FedCM из iframe поставщик удостоверений может выбрать отображение как iframe, так и доменов внедренного сайта в диалоговом окне пользовательского интерфейса.

Выполнение

Конечная точка метаданных клиента IdP получает как client_id , так и, опционально, top_frame_origin , например:

GET /client_metadata_endpoint?client_id=1234&top_frame_origin=https%3A%2F%2Ftop-frame.example HTTP/1.1
Host: idp.example
Origin: https://iframe.example/
Accept: application/json
Sec-Fetch-Dest: webidentity

Затем поставщик удостоверений может реализовать собственную логику для определения, являются ли RP и сайт верхнего уровня одним и тем же лицом. Если RP владеет как сайтом верхнего уровня, так и iframe, поставщик удостоверений может выбрать отображение только домена верхнего уровня, что является поведением по умолчанию. Для отображения обоих доменов поставщику удостоверений необходимо включить свойство client_is_third_party_to_top_frame_origin в ответ конечной точки метаданных клиента и установить его значение равным true .

Вот пример того, как будет выглядеть ответ конечной точки метаданных клиента:

// In the client metadata endpoint
const clientIsThirdParty = isClientOriginDifferentFromTopFrame();
responseData = {
  privacy_policy_url: "..."
  terms_of_service_url: "...",
  client_is_third_party_to_top_frame_origin: clientIsThirdParty,
}

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

Значение по умолчанию для client_is_third_party_to_top_frame_originfalse , поэтому существующие реализации не будут затронуты этим изменением.

Более подробную информацию можно найти в документации по внедрению FedCM на стороне поставщика удостоверений .

Попробуйте это

Демонстрацию этой функции можно посмотреть на сайте fedcm-demo-rp.dev/iframe . Код доступен в демонстрационном репозитории GitHub .

Мы будем рады вашим отзывам об этой и других функциях FedCM. Поделитесь своими мыслями и сообщите о любых проблемах в репозитории FedCM на GitHub .

Узнать больше