À partir de Chrome 123, vous pouvez utiliser les indices de domaine avec 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és du domaine qu'ils acceptent.
API Domain Hint
Le FedCM permet à un utilisateur de se connecter plus facilement à une partie de confiance (RP, faisant référence à un site Web) à l'aide d'informations de compte fournies par un fournisseur d'identité (IdP). Toutefois, il peut arriver que le RP sache déjà que seuls les comptes associés à un certain domaine sont autorisés à se connecter au site. Cela est particulièrement courant dans les scénarios d'entreprise où le site auquel on accède est limité à un domaine d'entreprise. Pour offrir une meilleure expérience utilisateur, l'API FedCM permet au RP d'afficher uniquement les comptes pouvant être utilisés pour se connecter au RP. Cela évite les scénarios où un utilisateur tente de se connecter à la RP à l'aide d'un compte en dehors du domaine de l'entreprise, pour recevoir un message d'erreur plus tard (ou un silence si la connexion n'a pas fonctionné) parce que le bon type de compte n'a pas été utilisé.
Avec l'API Domain Hint, les RP peuvent spécifier une propriété domainHint
sur un appel d'API FedCM pour n'afficher que les comptes correspondants pour l'utilisateur. L'IDP peut fournir une propriété domain_hints
dans le cadre d'une réponse du point de terminaison de la liste des comptes pour indiquer à quel ou quels domaines un compte est associé. De cette façon, le navigateur peut afficher les comptes correspondants sans divulguer l'indice de domaine demandé au fournisseur d'identité.
Voici un exemple de réponse JSON du point de terminaison de la liste des comptes:
{
"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 RP peut appeler navigator.credentials.get()
avec une propriété domainHint
pour filtrer les comptes. Par exemple, imaginons qu'un utilisateur accède à corp-partner.example
et se connecte avec un compte provenant de 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 de comptes pour le filtrage côté serveur, car cela peut constituer un vecteur d'empreinte digitale pour l'IDP.
À la place, Chrome effectue 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 affiche ensuite la boîte de dialogue FedCM à l'utilisateur avec la liste des nouveaux comptes. Cette approche est semblable à l'API Login Hint, mais ces deux API répondent à des questions différentes. L'API Login Hint vise à répondre à la question "Quel est l'identifiant de l'utilisateur que je souhaite ?", tandis que l'API Domain Hint vise à répondre à la question "À quelle entreprise ou à quel serveur ce compte doit-il appartenir ?".
Lorsque domainHint: "any"
est utilisé, Chrome filtre les comptes qui ne comportent aucun domaine (c'est-à-dire que domain_hints
n'est pas transmis ou est vide). Par exemple, cela permet des cas d'utilisation où le RP n'autorise que les comptes gérés dans son processus d'inscription.
Lorsqu'aucun compte ne correspond à 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 d'indice de domaine.

domainHint
.