Aktualizacje FedCM: testowanie origin interfejsu Button Mode API, CORS i SameSite

Od wersji Chrome 125 Button Mode API rozpoczyna okres próbny źródła na komputerze. Dzięki interfejsowi Button Mode API dostawcy tożsamości mogą używać interfejsu FedCM API nawet wtedy, gdy ich użytkownicy nie rozpoczynają aktywnych sesji dostawcy tożsamości podczas wywoływania interfejsu API. Dzięki temu użytkownicy będą mogli logować się w witrynie przy użyciu swojego sfederowanego konta bez przechodzenia na stronę dostawcy tożsamości. Interfejs FedCM w trybie przycisku jest lepiej widoczny niż ten z dotychczasowego przepływu widżetów, ponieważ jest blokowany przez gesty użytkownika i lepiej odzwierciedla zamiar użytkownika, aby się zalogować.

Interfejs API trybu przycisku

Interfejs FedCM jest dostępny w formie widżetu wyświetlanego w prawym górnym rogu na komputerze lub w postaci planszy dolnej na urządzeniu mobilnym zaraz po wywołaniu interfejsu API, który może mieć miejsce po przejściu użytkownika do jednostki uzależnionej (RP). Jest to tzw. tryb widżety. Aby wyświetlić widżet, użytkownik musi zalogować się u dostawcy tożsamości, zanim trafi do grupy objętej ograniczeniami. Sama usługa FedCM nie zapewniła niezawodnego sposobu na umożliwienie użytkownikowi zalogowania się w dostawcy tożsamości, zanim zezwolił on użytkownikowi na zalogowanie się w usłudze objętej ograniczeniami za pomocą konta dostępnego u dostawcy tożsamości. FedCM doda nowy sposób.

W trybie widżetów w prawym górnym rogu przeglądarki Chrome na komputerze wyświetlane jest okno dialogowe bez aktywacji użytkownika.
W trybie widżetów w prawym górnym rogu Chrome na komputerze wyświetla się okno bez aktywacji użytkownika.

Nowy interfejs Button Mode API dodaje nowy tryb UI o nazwie przycisk. W przeciwieństwie do trybu widżetu tryb przycisku nie powinien być wywoływany zaraz po wejściu użytkownika na stronę z ograniczonym dostępem. Jest ona wywoływana, gdy użytkownik inicjuje proces logowania, na przykład klikając przycisk „Zaloguj się przez dostawcę tożsamości”.

Zaraz po naciśnięciu przycisku FedCM sprawdza, czy użytkownik jest zalogowany u dostawcy tożsamości, korzystając z punktu końcowego pobierania kont lub stanu logowania zapisanego w przeglądarce. Jeśli użytkownik nie jest jeszcze zalogowany, FedCM poprosi użytkownika o zalogowanie się u dostawcy tożsamości przy użyciu w wyskakującym okienku z kodu login_url podanego przez dostawcę. Jeśli przeglądarka będzie wiedzieć, że użytkownik jest już zalogowany u dostawcy tożsamości lub gdy tylko zaloguje się u dostawcy tożsamości w wyskakującym okienku, otworzy się okno modalne, w którym użytkownik będzie mógł wybrać konto dostawcy tożsamości, przy użyciu którego chce się zalogować. Po wybraniu konta użytkownik może zalogować się w usłudze objętej ograniczeniami przy użyciu konta dostawcy tożsamości.

W trybie przycisku u góry na środku w komputerowej wersji Chrome wyświetla się okno modalne.
W trybie przycisku w środkowej części u góry Chrome na komputerze wyświetla się okno modalne.

Wypróbuj tę funkcję w Chrome 125 na stronie https://fedcm-rp-demo.glitch.me/button_flow.

Użytkownik loguje się w grupie objętej ograniczeniami za pomocą interfejsu Button Mode API.

Aby użyć interfejsu Button Mode API:

  • Włącz eksperymentalną funkcję FedCmButtonMode w chrome://flags.
  • Pamiętaj, aby wywoływać interfejs API po przejściowej aktywacji użytkownika, na przykład po kliknięciu przycisku.
  • Wywołaj interfejs API za pomocą parametru mode w ten sposób:
  return await navigator.credentials.get({
    identity: {
      providers: [{
        configURL: "https://idp.example/config.json",
        clientId: "123",
        nonce:"456",
      }],
      mode: "button"
    }
  });

Przeglądarka wyśle do punktu końcowego potwierdzenia identyfikatora nowy parametr reprezentujący typ żądania, dodając mode=button:

POST /fedcm_assertion_endpoint HTTP/1.1
Host: idp.example
Origin: https://rp.example/
Content-Type: application/x-www-form-urlencoded
Cookie: 0x23223
Sec-Fetch-Dest: webidentity
account_id=123&client_id=client1234&nonce=Ct60bD&disclosure_text_shown=true&is_auto_selected=false&mode=button

Użyj innej opcji konta

RP może zezwolić użytkownikom na „korzystanie z innych kont” w selektorze kont, np. gdy dostawcy tożsamości obsługują wiele kont lub zastępują istniejące konto.

Aby włączyć opcję korzystania z innego konta:

  • Włącz eksperymentalną funkcję FedCmUseOtherAccount w chrome://flags lub zarejestruj wersję próbną interfejsu Button Mode API.
  • Dostawca tożsamości określa te dane w pliku konfiguracyjnym dostawcy tożsamości:
{
  "accounts_endpoint" : ...,
  "modes: {
    "button": {
      "supports_use_other_account": true,
    }
  }
}

Weź udział w testowaniu origin

Możesz wypróbować interfejs Button Mode API lokalnie, włączając flagę Chrome chrome://flags#fedcm-button-mode w Chrome 125 lub nowszej wersji.

Dostawcy tożsamości mogą też włączyć tryb przycisku, rejestrując wersję próbną origin:

Testowanie origin pozwala testować nowe funkcje oraz przekazywać społeczności użytkowników standardów internetowych opinie na temat ich użyteczności, praktyki i skuteczności. Więcej informacji znajdziesz w przewodniku po okresie próbnym dla twórców witryn.

Testowanie origin interfejsu Button Mode API jest dostępne od wersji Chrome 125 do Chrome 127.

  1. Otwórz stronę rejestracji wersji próbnej.
  2. Kliknij przycisk Zarejestruj i wypełnij formularz, aby poprosić o token.
  3. Wpisz źródło dostawcy tożsamości jako Web Origin.
  4. Sprawdź dopasowywanie przez inne firmy, aby wstrzykiwać token z JavaScriptem w innych źródłach.
  5. Kliknij Prześlij.
  6. Umieść wystawiony token na stronie innej firmy.

Aby umieścić token na stronie innej firmy, dodaj poniższy kod do biblioteki JavaScript dostawcy tożsamości lub pakietu SDK udostępnianego ze źródła dostawcy tożsamości.

const tokenElement = document.createElement('meta');
tokenElement.httpEquiv = 'origin-trial';
tokenElement.content = 'TOKEN_GOES_HERE';
document.head.appendChild(tokenElement);

Zastąp TOKEN_GOES_HERE własnym tokenem.

CORS i SameSite=None będą wymagane w Chrome 125

CORS

Od wersji Chrome 125 Chrome będzie wymuszać stosowanie CORS w punkcie końcowym potwierdzenia identyfikatora.

CORS (cross-Origin-Resource-Sharing) to system polegający na przesyłaniu nagłówków HTTP, który określa, czy przeglądarki blokują kod JavaScript frontendu przed dostępem do odpowiedzi na żądania z innych domen. Punkt końcowy potwierdzenia identyfikatora na serwerze dostawcy tożsamości musi odpowiadać na żądanie, podając dodatkowe nagłówki. Oto przykładowy nagłówek odpowiedzi na żądanie z https://fedcm-rp-demo.glitch.me:

Access-Control-Allow-Origin: https://fedcm-rp-demo.glitch.me
Access-Control-Allow-Credentials: true

SameSite=Brak

Parametr SameSite w pliku cookie deklaruje, czy plik cookie jest ograniczony do kontekstu własnego czy tej samej witryny. Gdy ustawisz go na None, plik cookie będzie mógł być wysyłany do domeny zewnętrznej.

W FedCM Chrome wysyła pliki cookie do punktu końcowego konta, punktu końcowego potwierdzenia identyfikatora i punktu końcowego odłączenia. Od Chrome 125 Chrome będzie wysyłać żądania z danymi uwierzytelniającymi tylko z plikami cookie oznaczonymi jako SameSite=None.