W Chrome 123 możesz używać wskazówek dotyczących domeny wraz z interfejsem Federated Credential Management API (FedCM). Dzięki interfejsowi Domain Hint API deweloperzy mogą zapewnić większą wygodę użytkownikom, wyświetlając tylko federacyjne konta logowania z domeny, która akceptuje logowanie.
Interfejs API podpowiedzi dotyczących domen
FedCM może ułatwić użytkownikowi logowanie się na stronie logowania (RP) za pomocą informacji o koncie dostarczonych przez dostawcę tożsamości (IdP). Są jednak przypadki, w których dostawca usług rejestracji już wie, że tylko konta powiązane z określoną domeną mogą się zalogować w witrynie. Jest to szczególnie typowe w sytuacjach, gdy dostęp do witryny jest ograniczony do domeny firmowej. Aby zapewnić lepsze wrażenia użytkownika, interfejs API FedCM umożliwia RP wyświetlanie tylko tych kont, które mogą służyć do logowania się w RP. Zapobiega to sytuacjom, w których użytkownik próbuje zalogować się do RP za pomocą konta spoza domeny firmowej, a później wyświetla mu się komunikat o błędzie (lub nie wyświetla się nic, ponieważ logowanie się nie powiodło), ponieważ nie został użyty odpowiedni typ konta.
Dzięki interfejsowi Domain Hint API dostawcy reklamy mogą określać w wywołaniu interfejsu FedCM API właściwość domainHint
, aby wyświetlać tylko pasujące do użytkownika konta. IdP może podać usługę domain_hints
w ramach odpowiedzi z punktu końcowego listy kont, aby wskazać, z którymi domenami jest powiązane konto. Dzięki temu przeglądarka może wyświetlić pasujące konta bez ujawniania żądanego podpowiedzi domeny dostawcy tożsamości.
Przykładowa odpowiedź JSON z punktu końcowego listy kont wyglądałaby tak:
{
"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"]
}]
}
Aby filtrować konta, RP może wywołać funkcję navigator.credentials.get()
z usługą domainHint
. Załóżmy, że użytkownik odwiedza stronę corp-partner.example
i loguje się na konto z corp.example
. Witryna wywoła interfejs API w ten sposób:
return await navigator.credentials.get({
identity: {
providers: [{
configURL: "https://idp.example/manifest.json",
clientId: "abc",
nonce: nonce,
domainHint : "corp.example"
}]
}
});
Wartość domainHint
nie jest wysyłana do punktu końcowego z listą kont na potrzeby filtrowania po stronie serwera, ponieważ może to stanowić wektor do tworzenia odcisków palców w usłudze IdP.
Zamiast tego Chrome wykonuje żądanie FedCM w zwykły sposób i odfiltrowuje konta, które nie pasują do wartości domainHint
określonej przez wywołanie navigator.credentials.get()
. Następnie Chrome wyświetla użytkownikowi okno FedCM z listą nowych kont. To podejście jest podobne do interfejsu API podpowiedzi logowania, ale te 2 interfejsy API odpowiadają na różne pytania. Interfejs API podpowiedzi logowania ma na celu udzielenie odpowiedzi na pytanie „Który identyfikator należy do wybranego użytkownika?”, a interfejs API podpowiedzi domeny ma na celu udzielenie odpowiedzi na pytanie „Do której firmy lub serwera ma należeć to konto?”.
Gdy używana jest opcja domainHint: "any"
, Chrome odfiltrowuje konta, które nie mają żadnych domen (czyli domain_hints
nie jest przekazywany lub jest pusty). Na przykład:
ta funkcja umożliwia przypadki użycia, w których RP zezwala na konta zarządzane tylko w procesie rejestracji.
Jeśli nie ma kont pasujących do domainHint
, okno FedCM wyświetla monit logowania, który umożliwia użytkownikowi zalogowanie się na konto dostawcy tożsamości pasujące do wskazówki przesłanej przez RP. Gdy użytkownik kliknie prompt, otworzy się wyskakujące okienko z adresem URL logowania określonym w pliku konfiguracyjnym. Następnie do linku dodawane są parametry zapytania podpowiedzi logowania i podpowiedzi domeny.

domainHint
.