FedCM-updates: iframe-domein weergeven

Vanuit Chrome 142 kunt u ervoor kiezen om het domein van het iframe weer te geven in de FedCM-gebruikersinterface wanneer de Relying Party (RP) als een iframe van een derde partij op een andere site is ingesloten. Deze functie verbetert de transparantie voor gebruikers wanneer ze zich aanmelden bij een service die op een andere website is ingesloten.

Achtergrond

Voorheen, wanneer FedCM werd aangeroepen vanuit een cross-origin iframe, gaf de FedCM-dialooginterface alleen het domein van de hoofdsite weer. Dit kon tot verwarring leiden bij gebruikers als de service waarmee ze communiceerden anders was dan de hoofdsite. Een gebruiker bevindt zich bijvoorbeeld op een nieuwswebsite met een widget voor reacties. Wanneer de gebruiker probeert in te loggen bij de widget voor reacties, toont het FedCM-dialoogvenster alleen het domein van de nieuwswebsite, niet het domein van de reactieservice:

De titel van het FedCM-dialoogvenster bevat de tekst: 'Meld u aan bij news-site.example met fedcm-demo-idp.dev'.
Wanneer FedCM vanuit het iframe wordt aangeroepen, wordt het domein van het iframe niet weergegeven in de gebruikersinterface.

Om dit probleem aan te pakken, biedt Chrome nu een manier voor IdP's om in het FedCM-dialoogvenster, naast het domein van de site op het hoogste niveau, het domein van de iframe aan te geven waarnaar het token wordt verzonden. Dit geeft de gebruiker een duidelijker beeld van welke externe services betrokken zijn bij het aanmeldproces.

De titel van het FedCM-dialoogvenster bevat de tekst: 'Meld u aan bij news-site.example met fedcm-demo-idp.dev. news-site.example sluit inhoud van widget.example in'.
Wanneer FedCM vanuit het iframe wordt aangeroepen, kan de IdP ervoor kiezen om zowel het iframe als de ingesloten sitedomeinen in het UI-dialoogvenster weer te geven.

Uitvoering

Het clientmetadata-eindpunt van de IdP ontvangt zowel een client_id als optioneel een top_frame_origin , bijvoorbeeld:

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

De IdP kan vervolgens aangepaste logica implementeren om te bepalen of de RP en de site op het hoogste niveau dezelfde partij zijn. Als de RP zowel de site op het hoogste niveau als de iframe bezit, kan de IdP ervoor kiezen om alleen het domein op het hoogste niveau weer te geven. Dit is de standaardinstelling. Om beide domeinen weer te geven, moet de IdP de eigenschap client_is_third_party_to_top_frame_origin opnemen in de respons van het clientmetadata-eindpunt en de waarde ervan instellen op true .

Hier ziet u een voorbeeld van hoe het clientmetadata-eindpuntantwoord eruit zou zien:

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

Wanneer deze eigenschap is ingesteld op true en RP als iframe op een andere site is ingesloten, toont het FedCM-dialoogvenster zowel het domein van de hoofdsite als het domein van het iframe. Dit geeft de gebruiker meer context over het aanmeldverzoek.

De standaardwaarde voor client_is_third_party_to_top_frame_origin is false , dus bestaande implementaties worden niet beïnvloed door deze wijziging.

Meer informatie vindt u in de documentatie over het implementeren van FedCM op een identiteitsprovider .

Probeer het eens

Je kunt een live demo van deze functie bekijken op fedcm-demo-rp.dev/iframe . De code wordt gehost in de demo GitHub-repository .

We stellen uw feedback over deze en andere FedCM-functies op prijs. Deel uw mening en meld eventuele problemen in de FedCM GitHub-repository .

Meer informatie