A partir de Chrome 123, puedes usar las sugerencias de dominio junto con la API de Federated Credential Management (FedCM). Con la API de Domain Hint, los desarrolladores pueden proporcionar una mejor experiencia del usuario, ya que solo muestran las cuentas de acceso federado del dominio que aceptan.
API de Domain Hint
El FedCM se puede usar para facilitar que un usuario acceda a un usuario de confianza (RP, que hace referencia a un sitio web) con la información de la cuenta que proporciona un proveedor de identidad (IdP). Sin embargo, hay casos en los que el RP ya sabe que solo las cuentas asociadas con un dominio determinado pueden acceder al sitio. Esto es particularmente común en situaciones empresariales en las que el sitio al que se accede está restringido a un dominio corporativo. Para proporcionar una mejor experiencia del usuario, la API de FedCM permite que el RP solo muestre las cuentas que se pueden usar para acceder al RP. Esto evita situaciones en las que un usuario intenta acceder a la RP con una cuenta fuera del dominio corporativo y, luego, recibe un mensaje de error (o silencio si el acceso no funcionó) porque no se usó el tipo correcto de cuenta.
Con la API de Domain Hint, los RPs pueden especificar una propiedad domainHint
en una llamada a la API de FedCM para mostrar solo las cuentas que coincidan con el usuario. La AC puede proporcionar una propiedad domain_hints
como parte de una respuesta del extremo de la lista de cuentas para indicar con qué dominios está asociada una cuenta. De esta manera, el navegador puede mostrar las cuentas coincidentes sin divulgar la sugerencia de dominio solicitada al IdP.
Un ejemplo de respuesta JSON del extremo de la lista de cuentas se vería de la siguiente manera:
{
"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"]
}]
}
El RP puede llamar a navigator.credentials.get()
con una propiedad domainHint
para filtrar las cuentas. Por ejemplo, supongamos que un usuario visita corp-partner.example
y accede con una cuenta de corp.example
. El sitio invocaría la API de la siguiente manera:
return await navigator.credentials.get({
identity: {
providers: [{
configURL: "https://idp.example/manifest.json",
clientId: "abc",
nonce: nonce,
domainHint : "corp.example"
}]
}
});
El valor domainHint
no se envía al extremo de la lista de cuentas para el filtrado del servidor, ya que puede ser un vector de huellas digitales para la AC.
En su lugar, Chrome realiza una solicitud de FedCM como de costumbre y filtra las cuentas que no coinciden con el valor de domainHint
especificado por la llamada a navigator.credentials.get()
. Luego, Chrome le muestra al usuario el diálogo de FedCM con la lista de cuentas nuevas. Este enfoque es similar al de la API de Login Hint, pero estas dos APIs responden preguntas diferentes. El objetivo de la API de Login Hint es responder a la pregunta "¿cuál es un identificador para el usuario que quiero?", mientras que el objetivo de Domain Hint es responder a la pregunta "¿a qué corporación o servidor debe pertenecer esta cuenta?".
Cuando se usa domainHint: "any"
, Chrome filtra las cuentas que no tienen ningún dominio (es decir, no se pasa domain_hints
o está vacío). Por ejemplo, esto permite casos de uso en los que el RP solo permite cuentas administradas en su proceso de registro.
Cuando no hay cuentas que coincidan con domainHint
, el diálogo de FedCM muestra un mensaje de acceso, que le permite al usuario acceder a una cuenta de IdP que coincida con la sugerencia que solicitó el RP. Cuando el usuario presiona la indicación, se abre una ventana emergente con la URL de acceso especificada en el archivo de configuración. Luego, el vínculo se adjunta con los parámetros de consulta de la sugerencia de acceso y la sugerencia de dominio.

domainHint
.