Mises à jour FedCM: API Domain Hint

À partir de Chrome 123, vous pouvez utiliser Domain Hints en plus de l'API Federated Credential Management (FedCM). Avec l'API Domain Hint, les développeurs peuvent offrir une meilleure expérience utilisateur en n'affichant que les comptes de connexion fédérée du domaine qu'ils acceptent.

API Domain Hint

FedCM peut être utilisé pour permettre à un utilisateur de se connecter plus facilement à une partie de confiance (RP, qui fait référence à un site Web) à l'aide des informations de compte fournies par un fournisseur d'identité (IdP). Toutefois, dans certains cas, le tiers assujetti à des restrictions sait déjà que seuls les comptes associés à un domaine donné sont autorisés à se connecter au site. Cela est particulièrement courant dans les scénarios d'entreprise où le site consulté est limité à un domaine d'entreprise. Pour offrir une meilleure expérience utilisateur, l'API FedCM autorise le tiers assujetti à des restrictions d'afficher uniquement les comptes pouvant être utilisés pour se connecter au tiers assujetti à des restrictions. Cela permet d'éviter les scénarios dans lesquels un utilisateur tente de se connecter au tiers assujetti à des restrictions à l'aide d'un compte extérieur au domaine de l'entreprise, pour qu'un message d'erreur s'affiche ultérieurement (ou s'il ferme les messages lorsque la connexion n'a pas fonctionné), car le type de compte approprié n'a pas été utilisé.

Avec l'API Domain Hint, les RP peuvent spécifier une propriété domainHint dans un appel d'API FedCM pour n'afficher que les comptes correspondants de l'utilisateur. Le fournisseur d'identité peut fournir une propriété domain_hints dans une réponse du point de terminaison de la liste des comptes pour indiquer le ou les domaines auxquels un compte est associé. De cette façon, le navigateur peut afficher les comptes correspondants sans divulguer l'indication de domaine demandée au fournisseur d'identité.

Un exemple de réponse JSON du point de terminaison de la liste des comptes se présente comme suit:

{
 "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"]
  }]
}

Le tiers assujetti à des restrictions peut appeler navigator.credentials.get() avec une propriété domainHint pour filtrer les comptes. Par exemple, supposons qu'un utilisateur consulte corp-partner.example et se connecte avec un compte du domaine corp.example. Le site appelle l'API comme suit:

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

La valeur domainHint n'est pas envoyée au point de terminaison de la liste des comptes pour le filtrage côté serveur, car il peut s'agir d'un vecteur d'empreinte digitale pour le fournisseur d'identité. À la place, Chrome exécute une requête FedCM comme d'habitude et filtre les comptes qui ne correspondent pas à la valeur domainHint spécifiée par l'appel navigator.credentials.get(). Chrome présente ensuite la boîte de dialogue FedCM à l'utilisateur avec la nouvelle liste de comptes. Cette approche est semblable à l'API Login Hint, à la différence que ces deux API répondent à des questions différentes. L'API Login Hint vise à déterminer "quel est l'identifiant de l'utilisateur souhaité ?", tandis que Domain Hint vise à déterminer "à quelle entreprise ou à quel serveur ce compte doit-il appartenir ?".

Lorsque domainHint: "any" est utilisé, Chrome filtre les comptes qui ne sont associés à aucun domaine (c'est-à-dire que domain_hints n'est pas transmis ou est vide). Par exemple, cela permet les cas d'utilisation où le tiers assujetti à des restrictions n'autorise que les comptes gérés lors de son processus d'inscription.

Si aucun compte ne correspond au domainHint, la boîte de dialogue FedCM affiche une invite de connexion, qui permet à l'utilisateur de se connecter à un compte d'IdP correspondant à l'indice demandé par le RP. Lorsque l'utilisateur appuie sur l'invite, une fenêtre pop-up s'ouvre avec l'URL de connexion spécifiée dans le fichier de configuration. Le lien est ensuite ajouté avec l'indice de connexion et les paramètres de requête de l'indication du domaine.

Exemple d'invite de connexion lorsqu'aucun compte ne correspond à domainHint.
Exemple d'invite de connexion lorsqu'aucun compte ne correspond à domainHint.