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ć lepsze wrażenia użytkownika, wyświetlając tylko federacyjne konta logowania z domeny, które akceptują.
Domain Hint API
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). Zdarzają się jednak sytuacje, w których grupa objęte ograniczeniami już wie, że tylko konta powiązane z konkretną domeną mogą logować się 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 FedCM API pozwala RP wyświetlać tylko konta, których można używać 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) z powodu nieużywania konta odpowiedniego typu.
Dzięki interfejsowi Domain Hint API dostawcy reklamy mogą określić w wywołaniu interfejsu FedCM API właściwość domainHint
, aby wyświetlać tylko pasujące konta użytkownika. 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świetlać pasujące konta bez ujawniania dostawcy tożsamości żądanej podpowiedzi dotyczącej domeny.
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"]
}]
}
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 generowania odcisków palców dla dostawcy tożsamości.
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 jest używany parametr domainHint: "any"
, Chrome odfiltrowuje konta, które nie mają żadnych domen (czyli pole domain_hints
nie jest przekazywane lub jest puste). Pozwala to na przykład na przypadki użycia, w których w ramach programu objętego ograniczeniami dostęp do nich jest możliwy tylko na kontach zarządzanych.
Gdy żadne konta nie pasują do domainHint
, w oknie FedCM pojawi się prośba o zalogowanie się, która pozwoli użytkownikowi zalogować się na konto dostawcy tożsamości pasujące do podpowiedzi żądanej przez RP. Gdy użytkownik kliknie ten prompt, otworzy się wyskakujące okienko z adresem URL logowania podanym w pliku konfiguracyjnym. Następnie do linku dołączana jest wskazówka dotycząca logowania i parametry zapytania ze wskazówkami dotyczącymi domeny.