Ab Chrome 142 können Sie die Domain des iFrames in der FedCM-Benutzeroberfläche anzeigen lassen, wenn die Relying Party (RP) als Drittanbieter-iFrame auf einer anderen Website eingebettet ist. Diese Funktion erhöht die Transparenz für Nutzer, wenn sie sich in einem Dienst anmelden, der in eine andere Website eingebettet ist.
Hintergrund
Bisher wurde in der FedCM-Dialog-UI nur die Domain der Website der obersten Ebene angezeigt, wenn FedCM über ein ursprungsübergreifendes iFrame aufgerufen wurde. Dies kann zu Verwirrung bei Nutzern führen, wenn der Dienst, mit dem sie interagiert haben, sich von der Website der obersten Ebene unterscheidet. Ein Nutzer befindet sich beispielsweise auf einer Nachrichtenwebsite, auf der ein Kommentar-Widget eingebettet ist. Wenn der Nutzer versucht, sich im Kommentar-Widget anzumelden, wird im FedCM-Dialogfeld nur die Domain der Nachrichtenwebsite und nicht die Domain des Kommentardienstes angezeigt:
Um dieses Problem zu beheben, können IdPs in Chrome jetzt zusätzlich zur Domain der Website der obersten Ebene die Domain des iFrames angeben, an die das Token im FedCM-Dialogfeld gesendet wird. So erhalten Nutzer ein klareres Bild davon, welche Drittanbieterdienste am Anmeldevorgang beteiligt sind.
Implementierung
Der Clientmetadaten-Endpunkt des IdP empfängt sowohl eine client_id als auch optional eine top_frame_origin, z. B.:
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
Der IdP kann dann benutzerdefinierte Logik implementieren, um festzustellen, ob RP und Website der obersten Ebene dieselbe Partei sind. Wenn der RP sowohl die Website der obersten Ebene als auch den iFrame besitzt, kann der IdP nur die Top-Level-Domain anzeigen. Das ist das Standardverhalten. Damit beide Domains angezeigt werden, muss der Identitätsanbieter das Attribut client_is_third_party_to_top_frame_origin in seine Antwort des Client-Metadaten-Endpunkts aufnehmen und seinen Wert auf true festlegen.
Hier ist ein Beispiel dafür, wie die Antwort des Clientmetadaten-Endpunkts aussehen würde:
// 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,
}
Wenn diese Eigenschaft auf true gesetzt ist und RP als iFrame auf einer anderen Website eingebettet ist, werden im FedCM-Dialogfeld sowohl die Domain der Website auf oberster Ebene als auch die Domain des iFrames angezeigt. So erhält der Nutzer mehr Kontext zur Anmeldeanfrage.
Der Standardwert für client_is_third_party_to_top_frame_origin ist false. Bestehende Implementierungen sind daher von dieser Änderung nicht betroffen.
Weitere Informationen finden Sie in der Dokumentation zur Implementierung von FedCM bei einem Identitätsanbieter.
Jetzt ausprobieren
Eine Live-Demo dieser Funktion finden Sie unter fedcm-demo-rp.dev/iframe. Der Code wird im GitHub-Demorepository gehostet.
Wir freuen uns über Ihr Feedback zu dieser und anderen FedCM-Funktionen. Teilen Sie uns Ihre Meinung mit und melden Sie alle Probleme im FedCM-GitHub-Repository.