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

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

Выполнение
Конечная точка метаданных клиента 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_origin — false , поэтому существующие реализации не будут затронуты этим изменением.
Более подробную информацию можно найти в документации по внедрению FedCM на стороне поставщика удостоверений .
Попробуйте это
Демонстрацию этой функции можно посмотреть на сайте fedcm-demo-rp.dev/iframe . Код доступен в демонстрационном репозитории GitHub .
Мы будем рады вашим отзывам об этой и других функциях FedCM. Поделитесь своими мыслями и сообщите о любых проблемах в репозитории FedCM на GitHub .