Aktualizacje FedCM: wyświetlanie domeny elementu iframe

Od Chrome 142 możesz wyświetlać domenę ramki iframe w interfejsie FedCM, gdy podmiot Relying Party (RP) jest osadzony jako ramka iframe innej firmy w innej witrynie. Ta funkcja zwiększa przejrzystość dla użytkowników, gdy logują się w usłudze umieszczonej w innej witrynie.

Tło

Wcześniej, gdy FedCM był wywoływany z ramki iframe z innej domeny, w oknie dialogowym FedCM wyświetlana była tylko domena witryny najwyższego poziomu. Może to wprowadzać użytkowników w błąd, jeśli usługa, z której korzystali, różniła się od witryny najwyższego poziomu. Na przykład użytkownik może przeglądać witrynę z wiadomościami, która zawiera widżet do komentowania. Gdy użytkownik spróbuje zalogować się w widżecie komentarzy, w oknie FedCM pojawi się tylko domena witryny z wiadomościami, a nie domena usługi komentarzy:

Tytuł okna FedCM zawiera tekst: „Zaloguj się w witrynie news-site.example za pomocą fedcm-demo-idp.dev”.
Gdy FedCM jest wywoływany z elementu iframe, domena tego elementu nie jest wyświetlana w interfejsie.

Aby rozwiązać ten problem, Chrome umożliwia teraz dostawcom tożsamości wskazywanie w oknie FedCM domeny elementu iframe, do której wysyłany jest token, oprócz domeny witryny najwyższego poziomu. Dzięki temu użytkownik będzie miał jaśniejszy obraz tego, które usługi innych firm są zaangażowane w proces logowania.

Tytuł okna FedCM zawiera tekst: „Zaloguj się w witrynie news-site.example za pomocą fedcm-demo-idp.dev. Witryna news-site.example umieszcza treści z witryny widget.example”.
Gdy FedCM jest wywoływany z elementu iframe, dostawca tożsamości może wyświetlać w oknie interfejsu zarówno domenę elementu iframe, jak i domenę witryny umieszczającej.

Implementacja

Punkt końcowy metadanych klienta dostawcy tożsamości otrzymuje zarówno client_id, jak i opcjonalnie top_frame_origin, np.:

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

Dostawca tożsamości może wtedy wdrożyć niestandardową logikę, aby określić, czy RP i witryna najwyższego poziomu należą do tej samej strony. Jeśli RP jest właścicielem zarówno witryny najwyższego poziomu, jak i elementu iframe, dostawca tożsamości może wyświetlać tylko domenę najwyższego poziomu, co jest zachowaniem domyślnym. Aby wyświetlić obie domeny, dostawca tożsamości musi uwzględnić właściwość client_is_third_party_to_top_frame_origin w odpowiedzi punktu końcowego metadanych klienta i ustawić jej wartość na true.

Oto przykład odpowiedzi punktu końcowego metadanych klienta:

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

Gdy ta właściwość ma wartość true, a RP jest osadzony jako ramka iframe w innej witrynie, w oknie FedCM będą wyświetlane zarówno domena witryny najwyższego poziomu, jak i domena ramki iframe. Dzięki temu użytkownik będzie miał więcej informacji o prośbie o zalogowanie.

Wartość domyślna parametru client_is_third_party_to_top_frame_origin to false, więc ta zmiana nie wpłynie na dotychczasowe wdrożenia.

Więcej informacji znajdziesz w dokumentacji dotyczącej wdrażania FedCM u dostawcy tożsamości.

Wypróbuj

Na stronie fedcm-demo-rp.dev/iframe możesz zobaczyć wersję demonstracyjną tej funkcji. Kod jest hostowany w demonstracyjnym repozytorium GitHub.

Chętnie poznamy Twoją opinię na temat tej i innych funkcji FedCM. Podziel się opinią i zgłoś problemy w repozytorium FedCM na GitHubie.

Więcej informacji