W Chrome 123 możesz używać wskazówek dotyczących domeny Federated Credential Management API (FedCM). Na interfejsu Domains Hint API, deweloperzy mogą zapewnić użytkownikom lepsze wrażenia wyłącznie po podaniu pokazując sfederowane konta logowania z akceptowanej przez nich domeny.
Interfejs API Hint
Za pomocą FedCM można ułatwić użytkownikom logowanie się w grupie uzależnionej (RP, odnoszące się do witryny) przy użyciu informacji o koncie przekazanych przez osobę, dostawcy tożsamości. Są jednak przypadki, w których dana grupa odbiorców wie, że tylko konta powiązane z określoną domeną mogą logować się w witrynie. Ten jest szczególnie powszechne w firmach, gdzie odwiedzana witryna tylko do domeny firmowej. Dla wygody użytkowników FedCM Dzięki interfejsowi API w grupie objętej ograniczeniami wyświetlane są tylko konta, których można używać do logowania się RP. Zapobiega to scenariuszom, w których użytkownik próbuje zalogować się w grupie objętej ograniczeniami za pomocą spoza domeny firmowej, tylko w celu wyświetlenia komunikatu o błędzie (lub wycisz, gdy logowanie nie działało), ponieważ odpowiedni typ które nie było używane.
Dzięki interfejsowi Domains Hint API strony objęte ograniczeniami mogą określać właściwość domainHint
w interfejsie FedCM API.
aby wyświetlić tylko konta pasujące do danego użytkownika. Dostawca tożsamości może udostępnić
domain_hints
w ramach odpowiedzi z listy kont
punktu końcowego do
wskazać domeny, z którymi powiązane jest konto. Dzięki temu przeglądarka
mogą wyświetlić pasujące konta bez ujawniania żądanej podpowiedzi dotyczącej domeny
dostawcy tożsamości.
Przykładowa odpowiedź JSON z punktu końcowego listy kont będzie wyglądać 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"]
}]
}
RP może wywołać metodę navigator.credentials.get()
z właściwością domainHint
, aby
filtrować konta. Załóżmy, że użytkownik odwiedza stronę corp-partner.example
i
loguje się na konto z domeny corp.example
. Strona wywoła interfejs API jako
następujące:
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 listy kont
punkt końcowy
do filtrowania po stronie serwera, bo może to być wektor odcisku cyfrowego dla dostawcy tożsamości.
Zamiast tego Chrome normalnie wykonuje żądanie FedCM i odfiltrowuje konta.
które nie są zgodne z wartością domainHint
określoną w parametrze
navigator.credentials.get()
połączenie. Następnie Chrome pokazuje okno FedCM
użytkownika z listą nowych kont. Ta metoda jest podobna do podpowiedzi dotyczącej logowania
API, ale te 2 różne
Interfejsy API odpowiadają na różne pytania. Interfejs Login Hint API ma odpowiedzieć na pytanie:
dla odpowiedniego użytkownika?”, natomiast wskazówki dotyczące domeny wskazują,
do której musi należeć korporacja lub serwer?”.
Jeśli jest używany klucz domainHint: "any"
, Chrome odfiltrowuje konta, które nie zawierają hasła
we wszystkich domenach (czyli pole domain_hints
nie jest przekazywane lub jest puste). Przykład:
umożliwia to przypadki użycia, w których w ramach grupy objętej ograniczeniami można zarejestrować tylko zarządzane konta
proces tworzenia konta.
Gdy żadne konto nie spełnia warunków domainHint
, w oknie FedCM pojawia się prośba o zalogowanie.
która pozwala użytkownikowi zalogować się na konto dostawcy tożsamości zgodne z żądaną wskazówką
RP. Gdy użytkownik kliknie prompt, otworzy się wyskakujące okienko z
adres URL logowania określony w konfiguracji
. Link jest
dodaję wskazówkę dotyczącą logowania i parametry zapytania ze wskazówką dotyczącą domeny.
![Przykładowy monit logowania się, gdy żadne konto nie jest zgodne z podpowiedzią o domenie.](https://developers-dot-devsite-v2-prod.appspot.com/static/privacy-sandbox/assets/images/blog/fedcm-123.jpg?authuser=4&hl=pl)
domainHint
.