Actualizaciones de FedCM: Dominio del iframe de visualización

A partir de Chrome 142, puedes optar por mostrar el dominio del iframe en la IU de FedCM cuando el tercero de confianza (RP) está integrado como un iframe de terceros en otro sitio. Esta función mejora la transparencia para los usuarios cuando acceden a un servicio incorporado en otro sitio web.

Fondo

Anteriormente, cuando se invocaba FedCM desde un iframe de origen cruzado, la IU del diálogo de FedCM solo mostraba el dominio del sitio de nivel superior. Esto podría generar confusión en los usuarios si el servicio con el que interactuaron era diferente del sitio de nivel superior. Por ejemplo, un usuario podría estar en un sitio web de noticias que incorpora un widget de comentarios. Cuando el usuario intenta acceder al widget de comentarios, el diálogo de FedCM solo muestra el dominio del sitio web de noticias, no el del servicio de comentarios:

El título del diálogo de FedCM incluye el texto: "Accede a news-site.example con fedcm-demo-idp.dev".
Cuando se llama a FedCM desde el iframe, el dominio del iframe no se muestra en la IU.

Para abordar este problema, Chrome ahora permite que los IdP indiquen el dominio del iframe en el que se envía el token en el diálogo de FedCM, además del dominio del sitio de nivel superior. Esto proporciona al usuario una imagen más clara de los servicios de terceros que participan en el proceso de acceso.

El título del diálogo de FedCM incluye el texto "Accede a news-site.example con fedcm-demo-idp.dev. news-site.example incorpora contenido de widget.example".
Cuando se llama a FedCM desde el iframe, el IdP puede optar por mostrar tanto el iframe como los dominios del sitio incorporado en el diálogo de la IU.

Implementación

El extremo de metadatos del cliente del IdP recibe un client_id y, de manera opcional, un top_frame_origin, por ejemplo:

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

Luego, el IdP puede implementar una lógica personalizada para determinar si el RP y el sitio de nivel superior son el mismo tercero. Si el RP es propietario tanto del sitio de nivel superior como del iframe, el IdP puede optar por mostrar solo el dominio de nivel superior, que es el comportamiento predeterminado. Para mostrar ambos dominios, el IdP debe incluir la propiedad client_is_third_party_to_top_frame_origin en su respuesta del endpoint de metadatos del cliente y establecer su valor en true.

Este es un ejemplo de cómo se vería la respuesta del extremo de metadatos del cliente:

// 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,
}

Cuando esta propiedad se establece en true y RP se incorpora como un iframe en otro sitio, el diálogo de FedCM mostrará tanto el dominio del sitio de nivel superior como el dominio del iframe. Esto le proporciona al usuario más contexto sobre la solicitud de acceso.

El valor predeterminado de client_is_third_party_to_top_frame_origin es false, por lo que las implementaciones existentes no se verán afectadas por este cambio.

Encontrarás más detalles en la documentación sobre la implementación de FedCM en un proveedor de identidad.

Probar

Puedes ver una demostración en vivo de esta función en fedcm-demo-rp.dev/iframe. El código se aloja en el repositorio de GitHub de la demostración.

Agradecemos tus comentarios sobre esta y otras funciones de FedCM. Comparte tus ideas y denuncia cualquier problema en el repositorio de GitHub de FedCM.

Más información