A partir de Chrome 123, puedes usar las Sugerencias de dominio junto con el API de Federated Credential Management (FedCM). Con la API de Domain Hint, los desarrolladores pueden proporcionar una mejor experiencia del usuario solo en la que se muestran las cuentas de acceso federadas del dominio que aceptan.
API de Domain Hint
Se puede usar FedCM para facilitar el acceso de un usuario a un usuario de confianza (RP, hacer referencia a un sitio web) usando información de la cuenta proporcionada por una identidad de servicios de Google (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. Esta es particularmente común en situaciones empresariales en las que se accede al sitio restringidas a un dominio corporativo. Para brindar una mejor experiencia del usuario, La API permite que la parte restringida muestre solo las cuentas que se pueden usar para acceder a la RP: Esto evita situaciones en las que un usuario intente acceder a la parte restringida con una fuera del dominio corporativo, solo para recibirlo con un mensaje de error más adelante (o silenciar los lugares donde el acceso no funciona) porque el tipo correcto de no se usó la cuenta.
Con la API de Domain Hint, los RP pueden especificar una propiedad domainHint
en una API de FedCM
llamada para mostrar solo las cuentas que coincidan con el usuario. El IdP puede proporcionar un
propiedad domain_hints
como parte de una respuesta de la lista de cuentas
extremo a
indican con qué dominios está asociada una cuenta. De esta manera, el navegador
puede mostrar las cuentas coincidentes sin divulgar la sugerencia de dominio solicitada a
el IdP.
Una respuesta JSON de ejemplo del extremo de la lista de cuentas se vería como la lo siguiente:
{
"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 a la API como
sigue:
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 a la lista de cuentas.
extremo
para el filtrado del servidor, ya que puede ser un vector de creación de huellas digitales para el IdP.
En su lugar, Chrome realiza una solicitud a la FedCM como de costumbre y filtra las cuentas.
que no coinciden con el valor domainHint
especificado por el
Llamada de navigator.credentials.get()
. Luego, Chrome muestra el diálogo FedCM al
usuario con la lista de cuentas nuevas. Este enfoque es similar a la sugerencia de acceso
de la API, pero estos dos
Las APIs responden diferentes preguntas. El objetivo de la API de Access Hint:
del usuario que quiero?", mientras que Domain Hint apunta a responder “¿qué
empresa o servidor debe pertenecer a esta cuenta?".
Cuando se usa domainHint: "any"
, Chrome filtra las cuentas que no tienen
cualquier dominio (es decir, domain_hints
no se pasa o está vacío). Por ejemplo:
Esto permite casos de uso en los que la parte restringida solo permite cuentas administradas en su registro
el proceso de administración de recursos.
Cuando no hay cuentas que coincidan con domainHint
, el diálogo de FedCM mostrará una solicitud de acceso.
que le permite al usuario acceder a una cuenta de IdP que coincide con la sugerencia solicitada por
la parte restringida. Cuando el usuario presiona el mensaje, se abre una ventana emergente con los
la URL de acceso especificada en el archivo config
predeterminado. El vínculo es
y, luego, con la sugerencia de acceso y los parámetros de consulta de la sugerencia de dominio.
![Ejemplo de una solicitud de acceso cuando no hay cuentas que coincidan con el campo DomainHint.](https://developers-dot-devsite-v2-prod.appspot.com/static/privacy-sandbox/assets/images/blog/fedcm-123.jpg?authuser=0000&hl=es)
domainHint
.