Aktualizacje FedCM: odłączenie interfejsu API i 2 aktualizacje

W Chrome w wersji 122: Odłącz API na potrzeby sfederowanych danych logowania Dostępny jest interfejs Management API (FedCM). Odłącz API umożliwia podmiotom uzależnionym odłączanie użytkowników od konta dostawcy tożsamości bez korzystania z plików cookie innych firm. Tam też wprowadziliśmy kilka zmian w sposobie obsługiwania witryny w tej samej witrynie przez FedCM.

Odłącz API

Gdy użytkownik utworzy konto dla jednostki uzależnionej (RP – witryna wykorzystująca tag dostawcy tożsamości na potrzeby uwierzytelniania) za pomocą federacji tożsamości, dostawca tożsamości – usługa udostępniająca uwierzytelnianie i informacje o koncie. do innych firm) zwykle rejestruje połączenie na swoim serwerze. Zapisane Dzięki temu dostawca tożsamości może śledzić punkty RP, w których użytkownik się zalogował aby zoptymalizować wrażenia użytkowników. Aby na przykład zadbać o lepsze wrażenia użytkownika, użytkownik powróci później do grupy objętej ograniczeniami, konto użytkownika u dostawcy tożsamości będzie traktowane jako które umożliwia korzystanie z takich funkcji, jak automatyczne ponowne uwierzytelnianie spersonalizowane przyciski pokazujące używane konto.

Czasami dostawcy tożsamości oferują interfejs API do odłączania konta od RP. Jednak przepływ rozłączania jest uwierzytelniony i wymaga plików cookie dostawcy tożsamości. W świecie bez plików cookie innych firm, kiedy użytkownik odwiedza stronę z ograniczonym dostępem, nie ma przeglądarki Interfejs API do odłączenia strony docelowej od dostawcy tożsamości. Ponieważ może być wielu dostawców tożsamości należących do tego samego dostawcy tożsamości połączonego z daną usługą RP, proces odłączania wymaga i dowiedzieć się, które konto zostało rozłączone.

Rozłączenie Interfejs API umożliwia użytkownikowi też odłączenie konta dostawcy tożsamości od strony objętej ograniczeniami w przeglądarce jak na serwerze dostawcy tożsamości, sygnalizując to do określonego punktu końcowego. Użytkownik musi: przejść przez federację tożsamości przy użyciu sfederowanych danych logowania Management API (FedCM). Rozłączenie użytkownika jest traktowane jako nowy użytkownik. użytkownika przy następnej próbie zalogowania się w usłudze RP przy użyciu dostawcy tożsamości.

Odłącz dostawcę tożsamości od RP

Jeśli użytkownik wcześniej zalogował się w RPA przy użyciu dostawcy tożsamości w FedCM, jest zapamiętywana przez przeglądarkę lokalnie jako lista połączonych kont. RP może zainicjować rozłączenie przez wywołanie metody IdentityCredential.disconnect(). Tę funkcję można wywołać z ramki RP najwyższego poziomu. RP musi przejść kontrolę: configURL, clientId, którego używa u dostawcy tożsamości i accountHint dla dostawcy, który ma zostać odłączony. Konto podpowiedź może być dowolnym ciągiem znaków, o ile punkt końcowy odłączania może zidentyfikować np. adresu e-mail lub identyfikatora użytkownika, zgodne z identyfikatorem konta podanym przez punkt końcowy listy kont:

// Disconnect an IdP account "account456" from the RP "https://idp.com/". This is invoked on the RP domain.
IdentityCredential.disconnect({
  configURL: "https://idp.com/config.json",
  clientId: "rp123",
  accountHint: "account456"
});

IdentityCredential.disconnect() zwraca wartość Promise. Ta obietnica może spowodować wyjątek z następujących powodów:

  • Użytkownik nie zalogował się w RP przy użyciu dostawcy tożsamości w FedCM.
  • Interfejs API jest wywoływany z elementu iframe bez zasady uprawnień FedCM.
  • Adres configURL jest nieprawidłowy lub nie ma punktu końcowego odłączania.
  • Test zgodności ze standardem Content Security Policy (CSP) kończy się niepowodzeniem.
  • Masz oczekujące żądanie rozłączenia.
  • Użytkownik wyłączył FedCM w ustawieniach przeglądarki.

Gdy punkt końcowy odłączania dostawcy tożsamości zwraca błąd , punkt dostępu i dostawca tożsamości zostaną odłączone i zostaje rozwiązana. Odłączane konta użytkowników są określone w odpowiedzi na odłączenie .

Skonfiguruj plik konfiguracji dostawcy tożsamości

Aby interfejs API odłączania był obsługiwany, dostawca tożsamości musi obsługiwać odłączenie. i podaj właściwość disconnect_endpoint oraz jej ścieżkę w dostawcy tożsamości config.

{
  "accounts_endpoint": "/accounts",
  "id_assertion_endpoint": "/assertion",
  ...
  "disconnect_endpoint: "/disconnect"
}

Odłączanie konta w rozłączonym punkcie końcowym

Wywołując funkcję IdentityCredential.disconnect(), przeglądarka wysyła zasoby z innych domen Żądanie POST z plikami cookie i typem treści application/x-www-form-urlencoded do tego rozłączonego punktu końcowego z następujące informacje:

Właściwość Opis
account_hint Wskazówka dotycząca konta dostawcy tożsamości.
client_id Identyfikator klienta grupy objętej ograniczeniami.
POST /disconnect HTTP/1.1
Host: idp.example
Origin: rp.example
Content-Type: application/x-www-form-urlencoded
Cookie: 0x123
Sec-Fetch-Dest: webidentity

account_hint=account456&client_id=rp123

Po otrzymaniu żądania serwer dostawcy tożsamości powinien:

  1. Odpowiedz na żądanie za pomocą CORS (zasobu Cross-Origin) Udostępnianie).
  2. Sprawdź, czy żądanie zawiera nagłówek HTTP Sec-Fetch-Dest: webidentity.
  3. Dopasuj nagłówek Origin do źródła RP określonego przez client_id. Odrzuć, jeśli nie są zgodne.
  4. Znajdź konto pasujące do: account_hint.
  5. Odłącz konto użytkownika od listy połączonych kont objętych ograniczeniami.
  6. W odpowiedzi prześlij przeglądarce żądanie account_id zidentyfikowanego użytkownika w pliku JSON .
.

Przykładowa odpowiedź w postaci ładunku JSON wygląda tak:

{
  "account_id": "account456"
}

Jeśli dostawca tożsamości chce, aby przeglądarka odłączyła wszystkie konta powiązane z RP, prześlij ciąg znaków, który nie pasuje do żadnego identyfikatora konta, np. "*".

Sprawdzanie ustawienia /.well-known/web-identity jest teraz pomijane, gdy RP i dostawca tożsamości znajdują się w tej samej witrynie

Przy tworzeniu systemu FedCM testowanie lub przejściowe domeny serwerów RP mogą być produkcyjnego serwera dostawcy tożsamości. Na przykład produkcyjny serwer dostawcy tożsamości jest pod adresem idp.example oraz na serwerze testowym RP i serwerze przejściowym dostawcy tożsamości są na staging.idp.example. Ponieważ jednak dobrze znany plik musi zostać umieszczony w domenie głównej domeny eTLD+1 serwera dostawcy tożsamości, musi znajdować się na: idp.example/.well-known/web-identity i jest to serwer produkcyjny. Od deweloperzy nie muszą umieszczać plików w środowisku produkcyjnym, w trakcie programowania, uniemożliwia to testowanie FedCM.

Od Chrome 122, jeśli domena RP i domena dostawcy tożsamości są takie same, Chrome pominie sprawdzenie dobrze znanego pliku. W ten sposób deweloperzy będą mogli do takiej sytuacji.

Zasoby podrzędne mogą teraz ustawiać stan logowania w tej samej witrynie

Wcześniej w Chrome dozwolone było tylko ustawienie logowania status (na potrzeby na przykład za pomocą nagłówka Set-Login: logged-in), gdy żądanie to same-origin, ze wszystkimi elementami nadrzędnymi. W rezultacie logowanie się przez ta sama witryna fetch() prosi o ustawienie stanu logowania.

Weźmy jako przykład witrynę, w której użytkownicy mogą wpisać swoją nazwę użytkownika hasło w domenie idp.example, ale dane logowania są przesłane do domeny login.idp.example dzięki funkcji fetch(). Rejestrowanie w przeglądarce stanu logowania za pomocą stanu logowania Interfejs API nie był możliwy, ponieważ te 2 domeny pochodzą z innych domen i w tej samej witrynie.

Dzięki tej zmianie złagodziliśmy wymagania dotyczące interfejsu Login Status API ta sama witryna ze wszystkimi elementami nadrzędnymi i umożliwia ustawienie z powyższego przykładu Stan logowania użytkownika login.idp.example przy użyciu nagłówka HTTP (Set-Login: logged-in).

Podsumowanie

Za pomocą interfejsu Odłącz API usługa FedCM może teraz odłączyć stronę objętą ograniczeniami od dostawcy tożsamości bez korzystania z plików cookie innych firm. Aby to zrobić, zadzwoń: IdentityCredential.disconnect() jest w RP. Dzięki tej funkcji przeglądarka wysyła żądanie do odłączonego punktu końcowego dostawcy tożsamości, aby mógł on zamknąć połączenie na serwerze, a następnie w przeglądarce.

Ogłosiliśmy, że w przypadku grupy objętej ograniczeniami: /.well-known/web-identity jest pomijana i dostawca tożsamości są tą samą witryną do celów testowych. Ustawianie logowania za pomocą nagłówka odpowiedzi HTTP z podrzędnego zasobu tożsamości dostawcy tożsamości witryny jak to tylko możliwe.