Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Experimental: これは実験的な機能です。
本番で使用する前にブラウザー互換性一覧表をチェックしてください。
安全なコンテキスト用: この機能は一部またはすべての対応しているブラウザーにおいて、安全なコンテキスト (HTTPS) でのみ利用できます。
WebOTP API は、電話番号をログイン要素として使用する際、その電話番号がユーザーのものであることを確認するための、ウェブアプリ向けの簡素化された操作性を提供します。WebOTP は、資格情報管理 APIの拡張機能です。
認証は 2 段階のプロセスで行われます。
電話番号はアプリケーションがユーザーを識別する方法としてよく使用さます。SMS は、番号がユーザーのものであることを検証するためによく使用されます。SMS には通常、ワンタイムパスワード (OTP) が記載されており、ユーザーはその番号を所有していることを確認するために、アプリ内のフォームにその OTP をコピーして貼り付ける必要があります。これは、やや煩雑な操作であるといえます。
OTP には次のような用途があります。
WebOTP API を使用すると、ウェブアプリは、ユーザーから同意を指定された後、SMS から OTP をコピーしてアプリに自動的に渡すことで、この認証プロセスを迅速化することができます(ほとんどのネイティブプラットフォームには同等の API が持っています)。
なお、OTP は送信元ドメインに紐付けられています。これは、OTP が適切なソースから送信されたものであることを確認するための有益なセキュリティ上の制約であり、日常的な再認証時のフィッシング攻撃のリスクを軽減することができます。
SMS によるワンタイムパスワード (OTP) は電話番号の確認に役立ちますし、二要素認証として SMS を使用することは、二要素認証を全く行わないよりは確かに良い方法です。一部の領域では、メールアドレスや認証器などの他の認証手段が広く普及していないため、SMS による OTP は非常に一般的です。
しかし、SMS はそれほど安全ではありません。攻撃者は SMS を偽装して、他人の電話番号を乗っ取ることが可能です。また、通信事業者は、アカウントが閉じられた後、その電話番号を新しいユーザーに割り当て直すことがあります。
したがって、可能であれば、パスワードとセキュリティキー、あるいはパスキーを組み合わせたウェブ認証 API ベースのソリューションなど、より強固な認証方式を使用することをお勧めします。
次のように処理が行われます。
一般的なSMSメッセージは、次のようなものです。
Your verification code is 123456. @www.example.com #123456メモ: 指定されたドメイン値には、URLスキーマ、ポート、または以上で示されていないその他のURLの機能を含めないでください。
get() メソッドが <iframe> に埋め込まれたサードパーティのサイトから呼び出された場合は、この SMS の構造は次のようになります。
Your verification code is 123456. @top-level.example.com #123456 @embedded.comこの場合、最後の行は以下の構成になります。
WebOTP を利用できるかどうかは、権限ポリシー の otp-credentials ディレクティブを指定して使用することで制御できます。このディレクティブのデフォルト値は "self" です。つまり、デフォルトで、これらのメソッドは最上位の文書コンテキストで使用できます。
特定のクロスオリジンドメイン(つまり、<iframe> 内)で WebOTP を使用することができるディレクティブを指定することもできます。
または、同様に <iframe> に直接指定することも可能です。
メモ: ポリシーで WebOTP の get() の使用が禁止されている場合、そこで返される promises は SecurityError の DOMException で拒否されます。
WebOTP の get() 呼び出しが履行された際に返されます。取得した OTP が含まれる code プロパティが含まれます。
otp オプションをつけて get() を呼び出すと、ユーザーエージェントは基盤となるシステムの SMS アプリから OTP を取得しようとします。
この例では、SMS メッセージを受信し、ユーザーが許可すると、ワンタイムパスワードを含む OTPCredential オブジェクトが返ります。そして、このパスワードがフォームに入力され、フォームが送信されます。
このフォームフィールドには、autocomplete 属性が one-time-code の値で含まれています。これは WebOTP API が機能するために必須ではありませんが、記載しておく価値があります。その結果、Safari では WebOTP API が完全には対応していないのですが、正しい形式の SMS を受信した際に、このフィールドに OTP を自動入力するようユーザーに促すようになります。
JavaScript は次の通りです。
AbortController のもう一つの有益な使い方は、一定時点後に get() リクエストをキャンセルすることです。
ユーザーが他のことに気を取られたり、別のページに移動したりした場合は、その時点でリクエストをキャンセルし、もはや関係のないその権限の確認画面が取得されないようにするのが良いでしょう。
| WebOTP API |
Enable JavaScript to view this browser compatibility table.
This page was last modified on 2026年5月13日 by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.