FedCM güncellemeleri: iFrame alanını görüntüleme

Chrome 142'den itibaren, güvenen taraf (RP) başka bir siteye üçüncü taraf iFrame olarak yerleştirildiğinde iFrame'in alanını FedCM kullanıcı arayüzünde göstermeyi seçebilirsiniz. Bu özellik, kullanıcılar farklı bir web sitesine yerleştirilmiş bir hizmette oturum açarken şeffaflığı artırır.

Arka plan

Daha önce, FedCM kaynaklar arası bir iframe'den çağrıldığında FedCM iletişim kutusu kullanıcı arayüzünde yalnızca üst düzey sitenin alanı gösteriliyordu. Bu durum, etkileşimde bulundukları hizmetin üst düzey siteden farklı olması durumunda kullanıcılar için kafa karışıklığına neden olabilir. Örneğin, bir kullanıcı yorum widget'ı yerleştirilmiş bir haber web sitesinde olabilir. Kullanıcı yorum widget'ında oturum açmaya çalıştığında FedCM iletişim kutusunda yalnızca haber web sitesinin alanı gösterilir, yorum hizmetinin alanı gösterilmez:

FedCM iletişim kutusu başlığı şu metni içerir: "fedcm-demo-idp.dev ile news-site.example adresinde oturum açın".
FedCM, iframe'den çağrıldığında iframe'in alanı kullanıcı arayüzünde gösterilmez.

Bu sorunu çözmek için Chrome artık üst düzey sitenin alanına ek olarak, FedCM iletişim kutusunda jetonun gönderildiği iFrame'in alanını belirtmek için IdP'lerin kullanabileceği bir yöntem sunuyor. Bu sayede kullanıcı, oturum açma işlemine hangi üçüncü taraf hizmetlerinin dahil olduğu konusunda daha net bir fikir edinebilir.

FedCM iletişim kutusu başlığında şu metin yer alıyor: "fedcm-demo-idp.dev ile news-site.example adresinde oturum açın. news-site.example, widget.example adresinden içerik yerleştiriyor."
FedCM, iFrame'den çağrıldığında IdP, kullanıcı arayüzü iletişim kutusunda hem iFrame hem de yerleştirme sitesi alan adlarını göstermeyi seçebilir.

Uygulama

IdP'nin istemci meta veri uç noktası hem client_id hem de isteğe bağlı olarak top_frame_origin alır. Örneğin:

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

Daha sonra IdP, RP ile üst düzey sitenin aynı taraf olup olmadığını belirlemek için özel mantık uygulayabilir. RP hem üst düzey siteye hem de iFrame'e sahipse IdP, varsayılan davranış olan yalnızca üst düzey alan adını göstermeyi seçebilir. Her iki alanın da gösterilmesi için IdP'nin client_is_third_party_to_top_frame_origin özelliğini istemci meta veri uç noktası yanıtına eklemesi ve değerini true olarak ayarlaması gerekir.

İstemci meta veri uç noktası yanıtının nasıl görüneceğine dair bir örneği aşağıda bulabilirsiniz:

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

Bu özellik true olarak ayarlandığında ve RP başka bir siteye iframe olarak yerleştirildiğinde FedCM iletişim kutusunda hem üst düzey sitenin alan adı hem de iframe'in alan adı gösterilir. Bu sayede kullanıcı, oturum açma isteği hakkında daha fazla bilgi edinir.

client_is_third_party_to_top_frame_origin için varsayılan değer false olduğundan mevcut uygulamalar bu değişiklikten etkilenmez.

Kimlik sağlayıcıda FedCM'yi uygulama ile ilgili dokümanda daha fazla ayrıntı bulabilirsiniz.

Deneyin

Bu özelliğin canlı demosunu fedcm-demo-rp.dev/iframe adresinde görebilirsiniz. Kod, demo GitHub deposunda barındırılır.

Bu ve diğer FedCM özellikleri hakkındaki geri bildirimlerinizi bekliyoruz. Düşüncelerinizi paylaşın ve sorunları FedCM GitHub deposunda bildirin.

Daha fazla bilgi