FedCM-Updates: Domain Hint API

Ab Chrome 123 können Sie die Domain-Hints zusammen mit dem Federated Credential Management API (FedCM) Mit Domain Hint API können Entwickler eine bessere Nutzererfahrung bieten, indem sie Die föderierten Anmeldekonten der akzeptierten Domain werden angezeigt.

Domain Hint API

Mit FedCM kann sich ein Nutzer einfacher bei einer vertrauenden Partei (RP, Verweisen auf eine Website) unter Verwendung der von einer Identität angegebenen Kontoinformationen IdP. Es gibt aber Fälle, in denen der RP bereits weiß, dass nur Konten, die mit einer bestimmten Domain verknüpft sind, dürfen sich auf der Website anmelden. Dieses ist besonders häufig in Unternehmensszenarien, in denen auf die Website zugegriffen wird, auf eine Unternehmensdomain beschränkt. Für eine bessere Nutzererfahrung hat die FedCM Die API ermöglicht es dem RP, nur die Konten anzuzeigen, die für die Anmeldung im RP. So wird verhindert, dass ein Nutzer versucht, sich mit einem -Konto außerhalb der Unternehmensdomain, nur um eine Fehlermeldung zu erhalten (oder den Bildschirm stummzuschalten, wenn die Anmeldung nicht funktioniert hat), Konto nicht verwendet.

Mit der Domain Hint API kann für Anfragen ein domainHint-Attribut einer FedCM API angegeben werden aufrufen, um nur übereinstimmende Konten für den Nutzer anzuzeigen. Der IdP kann eine Property „domain_hints“ als Teil einer Antwort von der Kontenliste Endpunkt bis gibt an, mit welchen Domains ein Konto verknüpft ist. So kann der Browser Die übereinstimmenden Konten können angezeigt werden, ohne den angeforderten Domainhinweis offenzulegen an den IdP.

Eine JSON-Antwort vom Kontenlistenendpunkt sieht in etwa so aus: Folgendes:

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

Der RP kann navigator.credentials.get() mit der Property domainHint aufrufen, um zum Filtern der Konten. Beispiel: Ein Nutzer besucht corp-partner.example und meldet sich mit einem Konto von corp.example an. Die Website würde die API wie folgt aufrufen: folgt:

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

Der Wert „domainHint“ wird nicht an die Kontoliste gesendet Endpunkt für die serverseitige Filterung, da dies ein Fingerabdruckvektor zum IdP sein kann. Stattdessen führt Chrome wie gewohnt eine FedCM-Anfrage aus und filtert die Konten heraus die nicht mit dem domainHint-Wert übereinstimmen, der im Anruf in navigator.credentials.get(). Dann zeigt Chrome dem Nutzer mit der neuen Kontenliste. Dieser Ansatz ähnelt dem Anmeldehinweis. API, aber diese beiden APIs beantworten verschiedene Fragen. Die Login Hint API beantwortet die Frage, ID des gewünschten Nutzers?“, während Domain Hint die Frage „Welcher Nutzer“ Unternehmen oder Server gehört, zu dem dieses Konto gehören muss?“.

Wenn domainHint: "any" verwendet wird, filtert Chrome Konten heraus, alle Domains (d. h. domain_hints wird nicht übergeben oder ist leer). Beispiel: Das ermöglicht Anwendungsfälle, in denen der RP bei der Registrierung nur verwaltete Konten zulässt .

Wenn keine Konten mit dem domainHint übereinstimmen, wird im FedCM-Dialogfeld eine Anmeldeaufforderung angezeigt. damit sich der Nutzer in einem IdP-Konto anmelden kann, das dem vom die RP. Wenn der Nutzer auf die Aufforderung tippt, öffnet sich ein Pop-up-Fenster mit dem die in der config Datei. Der Link lautet Anschließend werden die Suchparameter für den Anmeldehinweis und die für den Domainhinweis angehängt.

<ph type="x-smartling-placeholder">
</ph> Beispiel für eine Anmeldeaufforderung, wenn keine Konten mit domainHint übereinstimmen.
Beispiel für eine Anmeldeaufforderung, wenn keine Konten mit domainHint übereinstimmen.