Die WebOTP API kann jetzt OTPs aus iFrames empfangen.
SMS-OTPs (Einmalpasswörter) werden in der Regel zur Bestätigung von Telefonnummern verwendet, Dies kann beispielsweise ein zweiter Authentifizierungsschritt oder die Bestätigung von Zahlungen im Internet sein. Beim Wechsel zwischen Browser und SMS-App, zum Kopieren und Einfügen oder beim manuellen So können Fehler passieren und die Nutzererfahrung wird verbessert.
Die WebOTP API ermöglicht Websites, das Einmalpasswort aus einer SMS erhalten und es eingeben automatisch im Formular erstellen, ohne zwischen den Die SMS ist speziell formatiert und an den Ursprung gebunden, dass Phishing-Websites auch das OTP stehlen können.
Ein Anwendungsfall, der in WebOTP noch nicht unterstützt wurde, war die Ausrichtung auf einen Ursprung innerhalb eines iFrames. Sie wird in der Regel zur Zahlungsbestätigung verwendet, insbesondere mit 3D Secure. Das gemeinsame Format zur Unterstützung von ursprungsübergreifenden iFrames liefert die WebOTP API jetzt OTPs, die ab Chrome 91 an verschachtelte Ursprünge gebunden sind.
Funktionsweise der WebOTP API
Die WebOTP API selbst ist einfach genug:
…
const otp = await navigator.credentials.get({
otp: { transport:['sms'] }
});
…
Die SMS-Nachricht muss mit der ursprungsgebundenen einmaligen Codes.
Your OTP is: 123456.
@web-otp.glitch.me #12345
Beachten Sie, dass in der letzten Zeile der Ursprung angegeben ist, dem der Wert vorangestellt werden soll.
ein @
gefolgt von dem OTP mit vorangestelltem #
.
Wenn die SMS eingeht, wird eine Infoleiste eingeblendet, in der der Nutzer aufgefordert wird,
ihre Telefonnummer zu bestätigen. Nachdem der Nutzer auf die Schaltfläche Verify
geklickt hat, wird der
Der Browser leitet das OTP automatisch an die Website weiter und löst das
navigator.credentials.get()
. Die Website kann dann das OTP extrahieren und
des Überprüfungsverfahrens.
Grundlegende Informationen zur Verwendung von WebOTP finden Sie unter Telefonnummern im Web mit dem WebOTP API
Anwendungsfälle für ursprungsübergreifende iFrames
Bei Zahlungen ist die Eingabe eines OTP in ein Formular innerhalb eines ursprungsübergreifenden iFrames üblich Szenarien durchführen. Bei einigen Kreditkartenausstellern ist ein zusätzlicher Bestätigungsschritt erforderlich, die Authentizität des Zahlungspflichtigen prüfen. Das heißt 3D Secure. Das Formular ist normalerweise innerhalb eines iFrames auf derselben Seite, als wäre er Teil des Zahlungsablauf.
Beispiel:
- Ein Nutzer besucht
shop.example
, um mit einer Kreditkarte ein Paar Schuhe zu kaufen. - Nach Eingabe der Kreditkartennummer zeigt der integrierte Zahlungsanbieter eine
Formular von
bank.example
in einem iFrame, in dem der Nutzer aufgefordert wird, seine um schnell bezahlen zu können. bank.example
sendet dem Nutzer eine SMS mit einem OTP, damit er um ihre Identität zu bestätigen.
WebOTP API über einen ursprungsübergreifenden iFrame verwenden
Um die WebOTP API in einem ursprungsübergreifenden iFrame zu verwenden, müssen Sie zwei Dinge:
- Im SMS-Text sowohl den Ursprung des Top-Frames als auch den iFrame-Ursprung annotieren .
- Berechtigungsrichtlinie so konfigurieren, dass der ursprungsübergreifende iFrame das OTP empfangen kann direkt von den Nutzenden.
Sie können die Demo hier ausprobieren: https://web-otp-iframe-demo.stackblitz.io.
bound-Ursprung in der SMS-Textnachricht annotieren
Wenn die WebOTP API aus einem iFrame aufgerufen wird, muss die SMS-Textnachricht
den Top-Frame-Ursprung mit vorangestelltem @
gefolgt von dem OTP mit vorangestelltem #
einschließen
gefolgt vom iFrame-Ursprung mit vorangestelltem @
.
@shop.example #123456 @bank.exmple
Berechtigungsrichtlinie konfigurieren
Um WebOTP in einem ursprungsübergreifenden iFrame zu verwenden, muss der Einbettungscode Zugriff darauf gewähren API über die Berechtigungsrichtlinie „otp-credentials“, um unbeabsichtigte Eingaben zu vermeiden verhalten. Im Allgemeinen gibt es zwei Möglichkeiten, dieses Ziel zu erreichen:
- im HTTP-Header:
Permissions-Policy: otp-credentials=(self "https://bank.example")
- über das iFrame-Attribut
allow
:
<iframe src="https://bank.example/…" allow="otp-credentials"></iframe>
Weitere Beispiele zum Angeben einer Berechtigungsrichtlinie
Vorsichtsmaßnahmen
Verschachtelungsebenen
Derzeit unterstützt Chrome nur WebOTP API-Aufrufe von ursprungsübergreifenden iFrames die nicht mehr als einen eindeutigen Ursprung in ihrer Ancestor-Kette haben. Im folgenden Szenarien:
- a.de -> b.com
- a.de -> b.com -> b.com
- a.de -> a.de -> b.com
- a.de -> b.com -> c.com
Die Verwendung von WebOTP in b.com wird unterstützt, die Verwendung in c.com jedoch nicht.
Beachten Sie, dass das folgende Szenario ebenfalls aufgrund fehlender Nachfrage nicht unterstützt wird. und UX-Komplexitäten.
- a.de -> b.com -> a.com (ruft WebOTP API auf)
Interoperabilität
Die WebOTP API wird zwar nicht in anderen Browser-Engines als Chromium implementiert,
Safari verwendet dasselbe SMS-Format.
mit der input[autocomplete="one-time-code"]
-Unterstützung. Sobald in Safari ein
SMS, die ein ursprungsgebundenes Einmalcodeformat enthalten, kommen mit dem übereinstimmenden
Ursprung haben, schlägt die Tastatur vor, das OTP in das Eingabefeld einzugeben.
Seit April 2021 unterstützt Safari iFrame mit einem speziellen SMS-Format,
%
Nach der Spezifikationsdiskussion für @
hoffen wir jedoch,
Implementierung des unterstützten SMS-Formats konvergieren.
Feedback
Ihr Feedback ist von unschätzbarem Wert für die Verbesserung der WebOTP API. Probieren Sie es einfach aus. und informieren Sie uns was Sie denken.
Ressourcen
- Telefonnummern im Web mit dem Online-OTP bestätigen API
- Best Practices für das OTP-Formular für SMS
- WebOTP API
- Herkunftsgebundene einmalige Codes, die über SMS senden
Foto von rupixen.com auf Unsplash