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:
- Odpowiedz na żądanie za pomocą CORS (zasobu Cross-Origin) Udostępnianie).
- Sprawdź, czy żądanie zawiera nagłówek HTTP
Sec-Fetch-Dest: webidentity
. - Dopasuj nagłówek
Origin
do źródła RP określonego przezclient_id
. Odrzuć, jeśli nie są zgodne. - Znajdź konto pasujące do:
account_hint
. - Odłącz konto użytkownika od listy połączonych kont objętych ograniczeniami.
- 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.