Interfejs WebOTP API może teraz otrzymywać hasła jednorazowe z elementów iframe.
Hasła jednorazowe wysyłane SMS-em są często używane do weryfikacji numerów telefonów, na przykład jako drugi etap uwierzytelniania lub do weryfikacji płatności w internecie. Jednak przełączanie się między przeglądarką a aplikacją SMS, kopiowanie i wklejanie lub ręczne. wpisywanie hasła jednorazowego ułatwia popełnianie błędów i zwiększa wygodę użytkownika.
Interfejs WebOTP API umożliwia witrynom uzyskać hasło jednorazowe z wiadomości SMS i wprowadzić je są automatycznie przesyłane do użytkowników za pomocą jednego kliknięcia, bez przełączania . SMS ma specjalne formatowanie i jest powiązany ze źródłem, co zmniejsza skuteczność również zdarza się, że witryny wyłudzające informacje mogą ukraść hasło jednorazowe.
Jednym z przypadków użycia, które nie jest jeszcze obsługiwane w WebOTP, było kierowanie na źródło wewnątrz elementu iframe. Zwykle jest on używany do potwierdzenia płatności, szczególnie dzięki usłudze 3D Secure. Udostępnienie wspólnych elementów format do obsługi zasobów z innych domen elementów iframe, WebOTP API Hasła jednorazowe powiązane z zagnieżdżonymi źródłami, począwszy od Chrome 91.
Jak działa interfejs WebOTP API
Sam interfejs WebOTP API jest wystarczająco prosty:
…
const otp = await navigator.credentials.get({
otp: { transport:['sms'] }
});
…
Wiadomość SMS musi być sformatowana za pomocą jednorazowego oznaczenia miejsca pochodzenia .
Your OTP is: 123456.
@web-otp.glitch.me #12345
Zwróć uwagę, że w ostatnim wierszu znajduje się źródło, które ma być poprzedzone
@
, a po nim hasło jednorazowe poprzedzone znakiem #
.
Po odebraniu wiadomości SMS pojawia się pasek informacyjny z prośbą o podanie numeru
zweryfikować swój numer telefonu. Gdy użytkownik kliknie przycisk Verify
,
przeglądarka automatycznie przekazuje hasło jednorazowe do witryny i usuwa
navigator.credentials.get()
Następnie witryna może wyodrębnić hasło jednorazowe i dokończyć
proces weryfikacji.
Podstawowe informacje na temat korzystania z WebOTP znajdziesz w artykule Weryfikowanie numerów telefonów w internecie przy użyciu WebOTP API.
Przypadki użycia elementów iframe z innych domen
Wpisanie hasła jednorazowego w formie elementu iframe z innego źródła jest częste w przypadku płatności. w różnych sytuacjach. Niektórzy wydawcy kart kredytowych wymagają dodatkowej weryfikacji w celu sprawdzać autentyczność płatnika. Jest to tzw. 3D Secure, a formularz to wyświetlane zwykle w elemencie iframe na tej samej stronie, co wtedy, gdy jest ono częścią procesu płatności.
Na przykład:
- Użytkownik odwiedza stronę
shop.example
, aby kupić buty za pomocą karty kredytowej. - Po wpisaniu numeru karty kredytowej zintegrowany dostawca usług płatniczych wyświetla
formularza z adresu
bank.example
w elemencie iframe z prośbą o zweryfikowanie który umożliwia szybką płatność. bank.example
wysyła do użytkownika SMS-a z hasłem jednorazowym, aby mógł: podając go w celu weryfikacji tożsamości.
Jak używać interfejsu WebOTP API z międzyźródłowego elementu iframe
Aby używać interfejsu WebOTP API w międzyźródłowym elemencie iframe, musisz wykonać 2 czynności:
- Dodaj w tekście SMS-a adnotacje do źródła ramki najwyższego poziomu i punktu początkowego iframe .
- Skonfiguruj zasadę uprawnień, aby umożliwić elementowi iframe z innych domen otrzymywanie hasła jednorazowego bezpośrednio od użytkownika.
Możesz ją wypróbować na https://web-otp-iframe-demo.stackblitz.io.
Dodaj adnotacje dotyczące źródeł do wiadomości tekstowej SMS
W przypadku wywołania interfejsu API WebOTP z poziomu elementu iframe wiadomość tekstowa SMS musi
zawiera źródło ramki górnej poprzedzone znakiem @
, a następnie hasło jednorazowe poprzedzone znakiem #
po którym następuje źródło iframe poprzedzone znakiem @
.
@shop.example #123456 @bank.exmple
Skonfiguruj zasady uprawnień
Aby używać WebOTP w międzyźródłowym elemencie iframe, osadzony komponent musi przyznać dostęp do tego Interfejs API wykorzystujący zasady uprawnień otp-credentials, co pozwala uniknąć niezamierzonego zachowanie użytkownika. Ogólnie cel ten można osiągnąć na dwa sposoby:
- przez nagłówek HTTP:
Permissions-Policy: otp-credentials=(self "https://bank.example")
- za pomocą atrybutu iframe
allow
:
<iframe src="https://bank.example/…" allow="otp-credentials"></iframe>
Zobacz więcej przykładów określania zasad uprawnień .
Zastrzeżenia
Poziomy zagnieżdżenia
Obecnie Chrome obsługuje tylko wywołania interfejsu WebOTP API z elementów iframe z innych domen mające nie więcej niż jedno unikalne źródło w łańcuchu elementów nadrzędnych. W w następujących sytuacjach:
- a.com -> b.com
- a.com -> b.pl -> b.com
- a.com -> a.com -> b.com
- a.com -> b.pl -> c.com
Używanie WebOTP w domenie b.com jest obsługiwane, ale w c.com nie.
Z powodu braku popytu ten scenariusz również nie jest obsługiwany. i złożoności UX.
- a.com -> b.pl -> a.com (wywołuje interfejs WebOTP API)
Interoperacyjność
Chociaż przeglądarki inne niż Chromium nie implementują interfejsu WebOTP API,
Safari używa tego samego formatu SMS-ów.
dzięki wsparciu input[autocomplete="one-time-code"]
. W przeglądarce Safari, gdy tylko
SMS zawierający format kodu jednorazowego powiązanego z kodem źródłowym
źródło, klawiatura sugeruje wpisanie hasła jednorazowego w polu do wprowadzania danych.
Od kwietnia 2021 r. Safari obsługuje element iframe z unikalnym formatem SMS-owym opartym na
%
Ponieważ jednak dyskusja na temat specyfikacji zakończyła się w zasadzie @
, mamy nadzieję,
będzie wdrożenie obsługiwanego formatu SMS.
Prześlij opinię
Twoja opinia pomoże nam ulepszać interfejs WebOTP API, dlatego zachęcamy do jego wypróbowania i daj nam znać co myślisz.
Zasoby
- Weryfikacja numerów telefonów w internecie za pomocą internetowego hasła jednorazowego Interfejs API
- Sprawdzone metody dotyczące formularza z hasłem jednorazowym przy użyciu SMS-ów
- Interfejs WebOTP API
- Jednorazowe kody powiązane ze źródłem, dostarczane przez SMS
Autor zdjęcia: rupixen.com, Unsplash