メールによる二要素認証(2FA)

利用者に最もなじみのある送達手段であり、多くの場合ログインIDとしてすでに情報を取得しているメールを用いた認証は様々なサービスで利用されています。 このチュートリアルではNTT CPaaSのAPIを用いたメールでの二要素認証導入方法を説明します。

一般的によく使われているIDとパスワードによる本人認証は、不正にID・パスワードを入手することで、他人になりすましログインできるため安全性は決して高くないと言えます。それに対し、ID・パスワード認証完了後にメールアドレスに対してワンタイムパスワード(OTP)を送信し本人性確認を行うことで、サービスの認証セキュリティを高めることができます。メールアドレスによるOTP認証は広く一般に普及しているため、導入によるユーザの負荷も少ないと考えられます。

このチュートリアルでは、NTT CPaaSのAPIを活用したメールによる二要素認証の導入を解説します。

メールによる二要素認証の利用シーン

メールによるワンタイムパスワードの利用シーンは多岐に渡ります。

  • アカウントへのログイン認証
  • パスワード忘れ時の再認証
  • 重要なアカウント設定変更時の認証
  • ECサイトの購入など重要なオペレーション時の認証
  • 新規デバイス・不審な場所からのアクセス検知

プロセスワークフロー

サービス
NTT CPaaS NTT CPaaS

▶ アカウントをお持ちでない方へ|60日間無料トライアルを開始

チュートリアルの内容は、トライアル環境ですぐにお試しいただけます。クレジットカード情報の登録は不要、自動で課金されることもありません。送信テストや動作確認に、ぜひ無料トライアルをご活用ください。

事前準備・前提条件

このチュートリアルを始めるには、NTT CPaaSアカウントが必要です。 こちらからログインをお願いします。
API キーとベース URL も必要になります。詳細についてはAPIリファレンスを参照してください。
メールAPIの利用には送信元のドメインかメールアドレスを登録する必要があります。

実装手順

ステップ1 - 二要素認証アプリケーションの生成

『アプリケーションの作成2FA』を利用して、二要素認証を実現するアプリケーションを作成します。
ここでは以下の条件でAPIを利用します。

リクエスト例:

{
  "name": "2fa application test",
  "enabled": true,
  "configuration": {
    "pinAttempts": 5,
    "allowMultiplePinVerifications": true,
    "pinTimeToLive": "10m",
    "verifyPinLimit": "2/4s",
    "sendPinPerApplicationLimit": "5000/12h",
    "sendPinPerPhoneNumberLimit": "2/1d"
  }
}

レスポンス例:

{
  "applicationId": "20AA84D1A9AB6DB22B6842092D62AB93",
  "name": "2fa application test",
  "configuration": {
    "pinAttempts": 5,
    "allowMultiplePinVerifications": true,
    "pinTimeToLive": "10m",
    "verifyPinLimit": "2/4s",
    "sendPinPerApplicationLimit": "5000/12h",
    "sendPinPerPhoneNumberLimit": "2/1d"
  },
  "enabled": true
}

ステップ2 - メッセージテンプレートの設定

NTT CPaaSポータルサイトにログインし、テンプレート設定画面から「テンプレートを作成」をクリックします。

テンプレートの種類としてメールを選択し、差出人やメールの件名、本文など必須項目を設定します。

メール本文はGUIエディタによる作成やHTMLファイルのアップロードに対応しています。
※メール本文にはPINコードのプレースホルダーである{$pin}を必ず含めてください。

「ブロードキャストのテンプレートを保存」をクリックし、テンプレート一覧画面に表示されるテンプレートIDを控えておきます。

ステップ3 - メッセージテンプレートの作成

『2FAメールメッセージテンプレートの作成』を利用して、メッセージテンプレートを作成します。
リクエストパラメータとしてステップ2で払い出されたテンプレートIDを指定することで、設定したテンプレート内容のメールが送信されるようになります。

ここでは以下の条件でAPIを利用します。

  • Method: POST
  • End Point : {baseUrl}/2fa/2/applications/{applicationId}/messages
  • Content-Type: application/json

リクエスト例:

{
  "emailTemplateId": 200000000000000
}

レスポンス例:

{
  "messageId": "643BE5B7424A47DA526B4E9D28A53395",
  "applicationId": "20AA84D1A9AB6DB22B6842092D62AB93",
  "pinLength": 4,
  "pinType": "NUMERIC",
  "emailTemplateId": 200000000000000
}

ステップ4 - PINコードをメールで送信する

『2FA PINコードをメールで送信』を利用して、メールを送信します。
PINコードの送信には、前のステップで作成したメッセージ テンプレートを使用します。

ここでは以下の条件でAPIを利用します。

  • Method: POST
  • End Point : {baseUrl}/2fa/2/pin/email
  • Content-Type: application/json

リクエスト例:

{
  "applicationId": "20AA84D1A9AB6DB22B6842092D62AB93",
  "messageId": "643BE5B7424A47DA526B4E9D28A53395",
  "to": "tutorial@nttcoms.com"
}

レスポンス例:

{
    "pinId": "C19953351CBB89639E7F729CE4A3460E",
    "to": "tutorial@nttcoms.com",
    "emailStatus": {
        "name": "PENDING_ACCEPTED",
        "description": "Message accepted, pending for delivery."
    }
}

ステップ5 - 認証結果を確認する

『PIN を確認する』を利用して、認証結果を確認します。
メールアドレスの検証が成功したことを確認します。

ここでは以下の条件でAPIを利用します。

  • Method: POST
  • End Point : {baseUrl}/2fa/2/applications/${pinId}/verify
  • Content-Type: application/json

リクエスト例:

{
  "pin": "2952"
}

レスポンス例:

{
  "pinId": "C19953351CBB89639E7F729CE4A3460E",
  "msisdn": "tutorial@nttcoms.com",
  "verified": true,
  "attemptsRemaining": 0
}

NTT CPaaSを、
60日間無料でお試しください

・SMS・Voice・メールを本番同様に無料で検証
・全API機能に即日アクセス / 有料プランと同一環境
・国内開発者向けに最適化された日本語ガイド

無料トライアル

目次
  1. メールによる二要素認証の利用シーン
  2. プロセスワークフロー
  3. 事前準備・前提条件
  4. 実装手順
    1. ステップ1 - 二要素認証アプリケーションの生成
    2. ステップ2 - メッセージテンプレートの設定
    3. ステップ3 - メッセージテンプレートの作成
    4. ステップ4 - PINコードをメールで送信する
    5. ステップ5 - 認証結果を確認する

2026.07.13