Aggiornamenti di FedCM: API Domain Hint

A partire da Chrome 123, puoi utilizzare i suggerimenti di dominio insieme all'API Federated Credential Management (FedCM). Con l'API Domain Hint, gli sviluppatori possono offrire un'esperienza utente migliore mostrando solo gli account di accesso federati del dominio che accettano.

API Domain Hint

FedCM può essere utilizzato per consentire a un utente di accedere più facilmente a una parte attendibile (RP, che fa riferimento a un sito web) utilizzando i dati dell'account forniti da un provider di identità (IdP). Tuttavia, in alcuni casi la parte soggetta a limitazioni sa già che solo gli account associati a un determinato dominio sono autorizzati ad accedere al sito. Questo è particolarmente comune in scenari aziendali in cui il sito a cui si accede è limitato a un dominio aziendale. Per offrire una migliore esperienza utente, l'API FedCM consente alla parte soggetta a limitazioni di mostrare solo gli account che possono essere utilizzati per accedere alla parte soggetta a limitazioni. In questo modo, è possibile evitare gli scenari in cui un utente tenta di accedere alla RP utilizzando un account esterno al dominio aziendale, per poi ricevere un messaggio di errore in un secondo momento (o disattivare l'audio nel caso in cui l'accesso non funzionasse) perché non è stato utilizzato il tipo di account corretto.

Con l'API Domain Hint, le parti soggette a limitazioni possono specificare una proprietà domainHint in una chiamata API FedCM per mostrare solo gli account corrispondenti per l'utente. L'IdP può fornire una proprietà domain_hints come parte di una risposta dall'endpoint dell'elenco degli account per indicare a quali domini è associato un account. In questo modo, il browser può mostrare gli account corrispondenti senza comunicare il suggerimento relativo al dominio richiesto all'IdP.

Un esempio di risposta JSON dall'endpoint dell'elenco di account potrebbe essere il seguente:

{
 "accounts": [{
   "id": "1234",
   "given_name": "John",
   "name": "John Doe",
   "email": "john_doe@idp.example",
   "picture": "https://idp.example/profile/123",
   "approved_clients": ["123", "456", "789"],
  }, {
   "id": "5678",
   "given_name": "Johnny",
   "name": "Johnny",
   "email": "johnny@idp.example",
   "picture": "https://idp.example/profile/456"
   "approved_clients": ["abc", "def", "ghi"],
   "domain_hints": ["corp.example"]
  }]
}

La parte soggetta a limitazioni può chiamare navigator.credentials.get() con una proprietà domainHint per filtrare gli account. Ad esempio, supponiamo che un utente visiti corp-partner.example e acceda con un account di corp.example. Il sito richiama l'API nel seguente modo:

return await navigator.credentials.get({
  identity: {
    providers: [{
      configURL: "https://idp.example/manifest.json",
      clientId: "abc",
      nonce: nonce,
      domainHint : "corp.example"
    }]
  }
});

Il valore domainHint non viene inviato all'endpoint dell'elenco di account per il filtro lato server, poiché può essere un vettore di fingerprinting all'IdP. Chrome esegue una richiesta FedCM come di consueto, filtrando gli account che non corrispondono al valore domainHint specificato dalla chiamata navigator.credentials.get(). Poi, Chrome mostra all'utente la finestra di dialogo FedCM con il nuovo elenco di account. Questo approccio è simile all'API Login Hint, ma queste due API rispondono a domande diverse. L'API Login Hint mira a rispondere a "quale è un identificatore per l'utente che voglio?", mentre Domain Hint cerca a "a quale azienda o server deve appartenere questo account?".

Quando viene utilizzato domainHint: "any", Chrome filtra gli account che non hanno alcun dominio (ovvero, domain_hints non viene trasmesso o è vuoto). Ad esempio, questo consente i casi d'uso in cui la parte soggetta a limitazioni consente solo gli account gestiti nel suo processo di registrazione.

Se nessun account corrisponde a domainHint, la finestra di dialogo FedCM mostra una richiesta di accesso, che consente all'utente di accedere a un account IdP corrispondente al suggerimento richiesto dalla parte soggetta a limitazioni. Quando l'utente tocca la richiesta, si apre una finestra popup con l'URL di accesso specificato nel file di configurazione. Al link vengono aggiunti il suggerimento di accesso e i parametri di query del suggerimento dominio.

Un esempio di prompt di accesso quando nessun account corrisponde al dominio DomainHint.
Un esempio di richiesta di accesso quando nessun account corrisponde a domainHint.