> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.onesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# ワンタイムパスワード（OTP）

> 二要素認証、アカウント検証、不正防止のために、OneSignalでワンタイムパスワードメッセージを送信します。OneSignal Verify、独自のコード認証の構築、専用送信者のベストプラクティス、オーディエンス検証について説明します。

ワンタイムパスワード（OTP）メッセージは、ユーザーの本人確認を行うための短い一時的なコードを含むテキストです。ユーザーがそのコードをアプリやウェブサイトに入力することで、提供した電話番号にアクセスできることを証明します。

OTPメッセージは以下を提供します。

* **アカウント保護:** 不正アクセスを防止することで、サポートコスト、不正による損失、評判の毀損を軽減します
* **電話番号の検証:** OTPが正しく配信され入力されることで、その番号が実在し、有効で、送信した本人の手元にあることが確認されます
* **入口での不正防止:** アカウント作成時のOTPは、偽のサインアップ、ボットアカウント、不正利用を抑止します
* **規制およびコンプライアンスの基準:** 特定の業界（金融、ヘルスケア）では、多要素認証が必須です。SMS OTPは、アプリのインストールなしであらゆる電話で機能するため、最もアクセスしやすい方法です

一般的なトリガー:

* **アカウント作成:** サインアップ時に新規ユーザーの電話番号を確認する
* **ログイン／二要素認証:** パスワードに加えて2つ目の検証レイヤーを追加する
* **パスワードリセット:** 認証情報の変更を許可する前に本人確認を行う
* **取引の確認:** 送金や住所変更などの重要な操作を検証する

***

## 同意要件

OTPメッセージの同意は、トランザクションメッセージと同じ基準に従います。開示文言を含むフォームにユーザーが電話番号を入力すれば、十分なオプトインとなります。開示文言は、別ページや利用規約の中に埋め込むのではなく、電話番号フィールドの上または近くに直接表示する必要があります。

<Card title="必須の開示文言" icon="shield" href="./sms-opt-in-and-collection#otp-opt-ins">
  開示文言の要件とOTPオプトインの完全なコンプライアンスルール。
</Card>

***

## OTPメッセージの送信方法

OneSignalでOTPメッセージを送信するには2つの方法があります。

| 方法                       | 適しているケース                                    | 管理対象                   |
| ------------------------ | ------------------------------------------- | ---------------------- |
| **OneSignal Verify**（推奨） | コード生成、配信、検証を代行するマネージドソリューションを求めるチーム         | 設定のみ                   |
| **独自に構築**                | カスタムの検証ロジックが必要なチーム、またはすでにコード生成システムを持っているチーム | コード生成、保存、有効期限、レート制限、検証 |

***

## OneSignal Verify

<Note>
  Verifyは、OneSignal SMSのお客様のみが利用できます（Twilio連携では利用できません）。
</Note>

<Steps>
  <Step title="検証サービスを作成する">
    フレンドリー名（ブランド名）、コードの長さ、コードを再生成する頻度を設定します。
  </Step>

  <Step title="検証コードを送信する">
    ユーザーの電話番号とチャネル（`sms`）を指定します。オプションで、カスタムコードを指定したり、コードの長さを上書きしたりできます。

    デフォルトでは、エンドユーザーに送信されるメッセージは次のように表示されます。*"Your \[brand name] verification code is: XXXXXX."*
  </Step>

  <Step title="検証コードを確認する">
    ユーザーの電話番号と、ユーザーが入力したコードを指定します。APIはコードが有効かどうかを返します。
  </Step>
</Steps>

### 追加の考慮事項

* **有効期限:** コードはデフォルトで10分後に期限切れになります。カスタマイズするにはサポートにお問い合わせください。
* **再試行:** 検証の試行失敗を処理し、アプリ内で再試行ロジックを実装してください。
* **セキュリティ:** 電話番号や検証コードなどの機密データを扱う際のベストプラクティスに従ってください。

***

## 独自のコード認証を構築する

検証ロジックを自分で管理することもできます。コードの生成、有効期限の追跡、試行の検証を自身のバックエンドで行います。この方法では、OneSignalの[Create Message API](/reference/create-message)を通じて、標準的なAPIトリガーのSMSとしてOTPメッセージを送信します。

<Steps>
  <Step title="バックエンドでコードを生成する">
    通常は4～8桁で、有効期限は5～10分です。
  </Step>

  <Step title="OneSignal API経由で送信する">
    Create Messageエンドポイントを、受信者の電話番号、OTP送信者、コードを含むメッセージ本文（例：*"Your \[brand name] verification code is 847291. It expires in 10 minutes."*）とともに呼び出します。
  </Step>

  <Step title="コードを検証する">
    ユーザーがアプリでコードを送信したら、保存しておいた内容と照合します。検証成功後、または有効期限切れのいずれか早い方の時点で、コードを無効化します。
  </Step>
</Steps>

### あなたの責任範囲

* コードを安全に生成し保存すること
* 有効期限の適用：コードを無期限に有効にしないこと
* **レート制限:** SMSポンピング詐欺を防ぐため、1つの電話番号が一定期間内にリクエストできるコード数に上限を設けること
* **試行回数の制限:** ブルートフォース攻撃を防ぐため、一定回数（例：3～5回）の入力失敗後にロックアウトすること
* **再試行ロジック:** SMSの配信に失敗したケースを処理すること

***

## 専用送信者のベストプラクティス

OTPメッセージは任意の送信者から送信できますが、認証ユースケース向けに承認された専用送信者を使用することがベストプラクティスです。

OTPメッセージがプロモーションメッセージやトランザクションメッセージと送信者を共有している場合、1回のSTOPオプトアウトでユーザーは検証コードを受信できなくなり、実質的に自分のアカウントから締め出されてしまいます。専用のOTP送信者を使用すると、オプトアウトの範囲が限定され、マーケティングの配信停止がセキュリティコードをブロックすることはありません。

***

## オーディエンス検証

クリーンな購読者リストは、OTPの配信性にとって不可欠です。無効な番号や切断された番号は、検証コードがユーザーに届かないことを意味し、アカウント作成をブロックしたり、ユーザーをパスワードリセットから締め出したり、認証フローへの信頼を損なったりする可能性があります。

収集時にLookupで電話番号を検証し、承認された送信者リソースを保有している地域の番号のみを収集し、すべての番号をE.164形式（例：`+14155551234`）で保存してください。

<Card title="オーディエンス検証" icon="circle-check" href="./sms-opt-in-and-collection#audience-validation">
  Lookup、地域制限、所有権の検証、E.164形式に関する詳細。
</Card>

***

## FAQ

### OneSignal Verifyと独自のOTP構築の違いは何ですか？

OneSignal Verifyは、コード生成、配信、検証を代行します。管理するのは設定のみです。独自に構築すると検証ロジックをより細かく制御できますが、コード生成、保存、有効期限、レート制限、再試行処理はあなたの責任となります。OneSignal Verifyは、OneSignal SMSのお客様のみが利用できます（Twilio連携では利用できません）。

### OneSignal Verifyでは検証コードはどのくらい有効ですか？

コードはデフォルトで10分後に期限切れになります。有効期限をカスタマイズするには、OneSignalサポートにお問い合わせください。

### なぜOTPに専用送信者が必要なのですか？

ユーザーがOTPとその他のメッセージタイプの両方を扱う送信者にSTOPと送信すると、検証コードを含むその送信者からのすべてのメッセージがオプトアウトされます。これにより、ユーザーが自分のアカウントから締め出される可能性があります。専用のOTP送信者を使用すると、オプトアウトの範囲が明確に限定されます。

### OTPの配信に失敗した場合はどうなりますか？

OneSignal Verifyを使用している場合、広範な配信失敗が見られたらサポートにお問い合わせください。独自に構築している場合は、バックエンドで再試行ロジックを実装し、Audience Activityでエラーコードを監視してください。エラーコードのトラブルシューティングについては、[SMSメッセージレポート](./sms-message-reports#understanding-sms-failures)を参照してください。

### OTPメッセージをアカウント作成の検証に使用できますか？

はい。これは最も一般的なユースケースの1つです。サインアップ時にコードを送信し、ユーザーが提供した電話番号を所有していることを確認します。この段階では、送信前に番号を検証するためにLookupを使用することもできます。

***

## 関連ページ

<Columns cols={2}>
  <Card title="SMSオプトインと収集" icon="user-plus" href="./sms-opt-in-and-collection">
    すべてのプログラムタイプにおける収集方法、必須の開示文言、オーディエンス検証。
  </Card>

  <Card title="トランザクションメッセージング" icon="receipt" href="./sms-transactional-messaging">
    OTPプログラムと並行したトランザクションのユースケースと収集ポイント。
  </Card>

  <Card title="SMSメッセージレポート" icon="chart-line" href="./sms-message-reports">
    OTPの失敗をトラブルシューティングするための配信指標とSMSエラーコード。
  </Card>

  <Card title="Create Message API" icon="code" href="/reference/create-message">
    バックエンドからOTPおよびトランザクション送信をトリガーするためのAPIリファレンス。
  </Card>
</Columns>
