Obsługa automatycznego ponownego uwierzytelniania w FedCM

Chrome obsługuje automatyczne ponowne uwierzytelnianie w FedCM

Federated Credential Management API (FedCM) to internetowy interfejs API służący do ochrony prywatności federacji tożsamości. W przypadku federacji tożsamości strona uzależniona korzysta z dostawcy tożsamości, aby udostępniać użytkownikowi konto bez konieczności podawania nowej nazwy użytkownika i hasła.

FedCM pozwala przeglądarce zrozumieć kontekst, w którym wymieniane są informacje dotyczące sieci objętej ograniczeniami i dostawcy tożsamości. Informuje on użytkownika o udostępnianych informacjach i poziomach uprawnień oraz zapobiega niezamierzonym nadużyciom. Usługa FedCM jest dostępna w Chrome od wersji 108.

W Chrome 115 FedCM korzysta z funkcji automatycznego ponownego uwierzytelniania, która zwiększa wygodę użytkowników i ułatwia ponowne uwierzytelnianie w RPach po uzyskaniu pierwszej zgody.

Automatyczne ponowne uwierzytelnianie

Obecnie, gdy użytkownik utworzy za pomocą interfejsu FedCM API sfederowane konto w usłudze objętej ograniczeniami w obrębie objętej ograniczeniami, z dostawcą tożsamości, przy następnej wizycie w witrynie będzie musiał wykonać te same czynności w interfejsie. Oznacza to, że użytkownik będzie musiał wyraźnie i ręcznie potwierdzić ponowne uwierzytelnienie, aby kontynuować proces logowania.

Wrażenia użytkownika powinny mieć sens jeszcze przed utworzeniem sfederowanego konta i uniemożliwiać śledzenie (co jest jednym z głównych celów FedCM). Jednak gdy użytkownik już raz je przeczyta, takie działania są niepotrzebnie niewygodne: gdy użytkownik udzieli zgody na komunikację między grupą objętą usługą a dostawcą tożsamości, nie spowoduje to żadnych korzyści w zakresie prywatności ani bezpieczeństwa wymuszonego już wcześniej innego użytkownika, który potwierdził już wcześniej coś, co zostało wcześniej potwierdzone. Dlatego wprowadzamy usprawniony interfejs, który RP mogą wybierać dla powracających użytkowników.

FedCM automatyczne ponowne uwierzytelnianie (w skrócie automatyczne ponowne uwierzytelnianie) może pozwolić użytkownikom na automatyczne ponowne uwierzytelnianie po pierwszym uwierzytelnieniu w FedCM. „Wstępne uwierzytelnienie” oznacza, że użytkownik tworzy konto lub loguje się na stronie RP, klikając przycisk „Kontynuuj jako...” w oknie logowania FedCM w tej samej instancji przeglądarki.

Okno, które użytkownik klika, aby utworzyć konto lub się uwierzytelnić.
Okno, które użytkownik klika, aby utworzyć konto lub się uwierzytelnić.

Wybierz opcję automatycznego ponownego uwierzytelniania

Wprowadzamy automatyczne ponowne uwierzytelnianie, aby poprawić wrażenia użytkowników i dostosować się do specyfikacji, ale domyślna obsługa użytkownika będzie inna bez żadnych zmian w kodzie. Gdy automatyczne uwierzytelnianie jest dostępne, przeglądarka zmienia swoje działanie w zależności od opcji wybranej w mediation opcji navigator.credentials.get() udostępnianej przez dewelopera.

const cred = await navigator.credentials.get({
  identity: {
    providers: [{
      configURL: "https://idp.example/fedcm.json",
      clientId: "1234",
    }],
  },
  mediation: 'optional', // this is the default
});

Element mediation jest właściwością interfejsu Credential Management API. Działa w taki sam sposób jak w przypadku elementów PasswordCredential i FederatedCredential oraz jest częściowo obsługiwana przez funkcję PublicKeyCredential. Właściwość może przyjmować te 4 wartości:

  • 'required': kontynuowanie zawsze wymaga zapośredniczenia, np. przez kliknięcie przycisku „Dalej” w interfejsie. Wybierz tę opcję, jeśli użytkownicy mają przyznawać uprawnienia bezpośrednio za każdym razem, gdy muszą zostać uwierzytelnieni.
  • 'optional'(ustawienie domyślne): jeśli to możliwe, automatyczne ponowne uwierzytelnianie. Jeśli nie jest, wymagane jest zapośredniczenie. Zalecamy wybranie tej opcji na stronie logowania.
  • 'silent': w miarę możliwości automatyczne ponowne uwierzytelnianie. Jeśli nie jest wymagane zapośredniczenie, kończy się to niepowodzeniem. Zalecamy wybranie tej opcji na innych stronach niż strona logowania, ale na których chcesz nie wylogowywać użytkowników. Może to być na przykład strona produktu w witrynie wysyłkowej lub strona z artykułem w witrynie z wiadomościami.
  • 'conditional': używana na potrzeby WebAuthn, a w tej chwili niedostępna w FedCM.

W przypadku tego wywołania automatyczne ponowne uwierzytelnianie odbywa się w tych warunkach:

  • Usługa FedCM jest dostępna. Na przykład użytkownik nie wyłączył FedCM zarówno globalnie, ani dla RP w ustawieniach.
  • Użytkownik użył tylko jednego konta z interfejsem FedCM API, aby zalogować się na stronie w tej przeglądarce.
  • Użytkownik jest zalogowany u dostawcy tożsamości przy użyciu tego konta.
  • Automatyczne ponowne uwierzytelnianie nie miało miejsca w ciągu ostatnich 10 minut.
  • Grupa z ograniczonym dostępem nie wywołała jeszcze navigator.credentials.preventSilentAccess() po poprzednim zalogowaniu.

Gdy powyższe warunki zostaną spełnione, próba automatycznego ponownego uwierzytelnienia użytkownika rozpocznie się zaraz po wywołaniu navigator.credentials.get() w FedCM.

Automatyczne uwierzytelnianie użytkownika przez FedCM.

Egzekwuj zapośredniczenie na koncie preventSilentAccess()

Automatyczne ponowne uwierzytelnianie użytkowników natychmiast po tym, jak się wylogują, nie zapewniłoby im wygodnej obsługi. Dlatego po automatycznym uwierzytelnieniu usługa FedCM stosuje 10-minutowy okres bez powiadomień, aby temu zapobiec. Oznacza to, że automatyczne ponowne uwierzytelnianie odbywa się co najwyżej raz na 10 minut, chyba że użytkownik zaloguje się ponownie w ciągu 10 minut. Grupa z ograniczonym dostępem powinna wywołać funkcję navigator.credentials.preventSilentAccess(), by wyraźnie zażądać od przeglądarki wyłączenia automatycznego ponownego uwierzytelniania, gdy użytkownik wyloguje się z grupy objętej ograniczeniami, na przykład przez kliknięcie przycisku wylogowania.

function signout() {
  navigator.credentials.preventSilentAccess();
  location.href = '/signout';
}

Użytkownicy mogą zrezygnować z automatycznego ponownego uwierzytelniania w ustawieniach

Użytkownicy mogą zrezygnować z automatycznego ponownego uwierzytelniania w menu ustawień:

  • W przeglądarce Chrome na komputerze kliknij chrome://password-manager/settings > Loguj automatycznie.
  • W Chrome na Androidzie otwórz Ustawienia > Menedżer haseł > kliknij ikonę koła zębatego w prawym górnym rogu > Automatyczne logowanie.

Gdy wyłączysz przełącznik, użytkownik będzie mógł zrezygnować z automatycznego ponownego uwierzytelniania. To ustawienie jest przechowywane i synchronizowane między urządzeniami, jeśli użytkownik jest zalogowany na konto Google w instancji Chrome i ma włączoną synchronizację.

Podziel się opinią

Jeśli testujesz FedCM, możesz przesłać opinię lub zgłosić napotkane problemy na stronie crbug.com za pomocą komponentu „Blink>Identity>FedCM”.

Autor zdjęcia: Noah Samuel Franz, strona Unsplash