À partir de Chrome 142, vous pouvez choisir d'afficher le domaine de l'iFrame dans l'UI FedCM lorsque la partie de confiance (RP) est intégrée en tant qu'iFrame tiers sur un autre site. Cette fonctionnalité améliore la transparence pour les utilisateurs lorsqu'ils se connectent à un service intégré à un autre site Web.
Arrière-plan
Auparavant, lorsque FedCM était appelé depuis un iFrame cross-origin, l'UI de la boîte de dialogue FedCM n'affichait que le domaine du site de premier niveau. Cela pourrait créer de la confusion pour les utilisateurs si le service avec lequel ils interagissaient était différent du site de premier niveau. Par exemple, un utilisateur peut consulter un site d'actualités qui intègre un widget de commentaires. Lorsque l'utilisateur tente de se connecter au widget de commentaires, la boîte de dialogue FedCM n'affiche que le domaine du site Web d'actualités, et non celui du service de commentaires :
Pour résoudre ce problème, Chrome permet désormais aux IdP d'indiquer le domaine de l'iframe où le jeton est envoyé dans la boîte de dialogue FedCM, en plus du domaine du site de premier niveau. L'utilisateur peut ainsi mieux comprendre quels services tiers sont impliqués dans le processus de connexion.
Implémentation
Le point de terminaison des métadonnées client de l'IdP reçoit un client_id et éventuellement un top_frame_origin, par exemple :
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
Le fournisseur d'identité peut ensuite implémenter une logique personnalisée pour déterminer si le RP et le site de premier niveau appartiennent à la même partie. Si le RP est propriétaire à la fois du site de premier niveau et de l'iframe, le fournisseur d'identité peut choisir de n'afficher que le domaine de premier niveau, qui est le comportement par défaut. Pour afficher les deux domaines, le fournisseur d'identité doit inclure la propriété client_is_third_party_to_top_frame_origin dans la réponse de son point de terminaison des métadonnées du client et définir sa valeur sur true.
Voici un exemple de réponse du point de terminaison des métadonnées client :
// 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,
}
Lorsque cette propriété est définie sur true et que RP est intégré en tant qu'iFrame sur un autre site, la boîte de dialogue FedCM affiche à la fois le domaine du site de premier niveau et celui de l'iFrame. Cela fournit à l'utilisateur plus de contexte sur la demande de connexion.
La valeur par défaut de client_is_third_party_to_top_frame_origin est false. Les implémentations existantes ne seront donc pas affectées par ce changement.
Pour en savoir plus, consultez la documentation sur l'implémentation de FedCM sur un fournisseur d'identité.
Essayer
Vous pouvez voir une démonstration en direct de cette fonctionnalité sur fedcm-demo-rp.dev/iframe. Le code est hébergé dans le dépôt GitHub de démonstration.
N'hésitez pas à nous faire part de vos commentaires sur cette fonctionnalité et d'autres fonctionnalités FedCM. Partagez vos commentaires et signalez les problèmes sur le dépôt GitHub FedCM.