Aktualizacje FedCM: Domains Hint API

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.
Przykładowy prośbę o zalogowanie się, gdy żadne konto nie pasuje do konta domainHint.