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.
![Beispiel für eine Anmeldeaufforderung, wenn keine Konten mit domainHint übereinstimmen.](https://developers-dot-devsite-v2-prod.appspot.com/static/privacy-sandbox/assets/images/blog/fedcm-123.jpg?authuser=19&hl=de)
domainHint
übereinstimmen.