Actualizaciones de FedCM: API de Domain Hint

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.
Un ejemplo de una solicitud de acceso cuando no hay cuentas que coincidan con domainHint.