Aggiornamenti di FedCM: API Domain Hint

Da Chrome 123, puoi utilizzare i suggerimenti per il dominio insieme alla API Federated Credential Management (FedCM). Con l'API Domain Hint, gli sviluppatori possono fornire una migliore esperienza utente solo che mostrano gli account di accesso federato del dominio che accettano.

API Domain Hint

È possibile usare FedCM per semplificare l'accesso di un utente a una parte (RP, fare riferimento a un sito web) utilizzando i dati dell'account forniti da un'identità o provider di identità (IdP). Tuttavia, ci sono casi in cui la parte soggetta a limitazioni sa già che solo account associati a un determinato dominio possono accedere al sito. Questo è particolarmente comune negli scenari aziendali in cui il sito a cui si accede è limitati a un dominio aziendale. Per offrire una migliore esperienza utente, FedCM L'API consente alla parte soggetta a limitazioni di mostrare solo gli account che possono essere utilizzati per accedere parte soggetta a limitazioni. Questo evita scenari in cui un utente tenta di accedere alla parte soggetta a limitazioni utilizzando un esterno al dominio aziendale, verrà visualizzato solo con un messaggio di errore in un secondo momento (o in silenzio quando l'accesso non ha funzionato) perché il tipo di account non utilizzato.

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

Una risposta JSON di esempio dall'endpoint dell'elenco di account potrebbe essere la seguente seguenti:

{
 "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 accede con un account da corp.example. Il sito richiama l'API come che segue:

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'elenco account endpoint per il filtro lato server, poiché può essere un vettore di fingerprinting per l'IdP. Chrome esegue invece una richiesta FedCM come al solito e filtra gli account che non corrispondono al valore domainHint specificato Chiamata navigator.credentials.get(). Dopodiché, Chrome mostra la finestra di dialogo FedCM al un utente con il nuovo elenco di account. Questo approccio è simile al suggerimenti di accesso dell'API, ma questi due servizi Le API rispondono a domande diverse. L'API Login Hint mira a rispondere "che è una per l'utente che voglio?", mentre Domain Hint mira a rispondere "quale la società o il server a cui deve appartenere questo account?".

Quando viene utilizzato domainHint: "any", Chrome filtra gli account che non hanno qualsiasi dominio (ovvero, domain_hints non è stato superato o è vuoto). Ad esempio: questo consente i casi d'uso in cui la parte soggetta a limitazioni consente solo gli account gestiti nella sua registrazione e il processo di sviluppo.

Quando nessun account corrisponde a domainHint, nella finestra di dialogo FedCM viene visualizzata una richiesta di accesso, che consente all'utente di accedere a un account IdP corrispondente al suggerimento richiesto la parte soggetta a limitazioni. Quando l'utente tocca il prompt, si apre una finestra popup con il l'URL di accesso specificato in . Il link è e poi aggiunto con il suggerimento per l'accesso e i parametri di query con il suggerimento del dominio.

Un esempio di richiesta di accesso quando nessun account corrisponde a domainHint.
Esempio di richiesta di accesso quando nessun account corrisponde a domainHint.