A partire da Chrome 142, puoi scegliere di visualizzare il dominio dell'iframe nell'interfaccia utente di FedCM quando la Relying Party (RP) è incorporata come iframe di terze parti in un altro sito. Questa funzionalità migliora la trasparenza per gli utenti quando accedono a un servizio incorporato in un altro sito web.
Sfondo
In precedenza, quando FedCM veniva richiamato da un iframe multiorigine, l'interfaccia utente della finestra di dialogo FedCM mostrava solo il dominio del sito di primo livello. Ciò potrebbe creare confusione per gli utenti se il servizio con cui interagivano era diverso dal sito di primo livello. Ad esempio, un utente potrebbe trovarsi su un sito web di notizie che incorpora un widget per i commenti. Quando l'utente tenta di accedere al widget dei commenti, la finestra di dialogo FedCM mostra solo il dominio del sito web di notizie, non quello del servizio di commenti:
Per risolvere questo problema, Chrome ora consente agli IdP di indicare il dominio dell'iframe a cui viene inviato il token nella finestra di dialogo FedCM, oltre al dominio del sito di primo livello. In questo modo, l'utente ha un quadro più chiaro dei servizi di terze parti coinvolti nella procedura di accesso.
Implementazione
L'endpoint dei metadati client del provider di identità
riceve sia un client_id sia, facoltativamente, un top_frame_origin, ad esempio:
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
L'IdP può quindi implementare una logica personalizzata per determinare se la RP e il sito di primo livello sono la stessa parte. Se la RP è proprietaria sia del sito di primo livello sia dell'iframe, il fornitore di identità può scegliere di mostrare solo il dominio di primo livello, che è il comportamento predefinito. Per visualizzare entrambi i domini, il provider di identità deve includere la proprietà client_is_third_party_to_top_frame_origin nella risposta dell'endpoint dei metadati del client e impostarne il valore su true.
Ecco un esempio dell'aspetto della risposta dell'endpoint dei metadati 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,
}
Quando questa proprietà è impostata su true e RP è incorporato come iframe in un altro
sito, la finestra di dialogo FedCM mostrerà sia il dominio del sito di primo livello sia il
dominio dell'iframe. In questo modo, l'utente ha più contesto sulla richiesta di accesso.
Il valore predefinito di client_is_third_party_to_top_frame_origin è false, quindi
le implementazioni esistenti non saranno interessate da questa modifica.
Per ulteriori dettagli, consulta la documentazione sull'implementazione di FedCM in un Identity Provider.
Prova
Puoi guardare una demo dal vivo di questa funzionalità all'indirizzo fedcm-demo-rp.dev/iframe. Il codice è ospitato nel repository GitHub demo.
Siamo felici di ricevere il tuo feedback su questa e altre funzionalità di FedCM. Condividi la tua opinione e segnala eventuali problemi nel repository GitHub di FedCM.