サービス比較の記事一覧

法人保険でリスクに備えたい

サービス比較の記事一覧

法人保険でリスクに備えたい

不正利用・金融トラブルを未然に防ぎたい

CPaaS(通信機能API)
の関連情報


関連サービス資料を
無料で一括ダウンロード

,

二要素認証をAPIで実装する方法|SMS OTP・TOTP・メール認証の手順と使えるサービス比較

二要素認証をAPIで実装する方法のサムネイル画像
CPaaS(通信機能API)比較表(2026年版)のプレビュー

主要12サービスの料金・機能を無料で一覧比較

CPaaS(通信機能API)比較表(2026年版)

自社のWebサービスや社内システムのログインを、パスワードだけに頼らず二要素認証(2FA)で守りたい。そう考えた開発者がまず知りたいのは、多くの場合「二要素認証をAPIでどう実装するか」です。ワンタイムパスワード(OTP)をSMSで送る方式、認証アプリ(TOTP)を使う方式、メールやプッシュ通知を使う方式では、外部のAPIを呼ぶのか、それとも自前で組むのかが変わります。

本記事では、二要素認証をAPIで実装する方式ごとの違いから、発行・入力・検証というAPI呼び出しの流れ、使えるサービスと料金の目安、そして実装で見落としやすい落とし穴までを、コードを書く直前の実務レベルで整理します。

CPaaS(通信機能API)の関連サービス資料
PR
料金や機能は各社の資料でまとめて比較できます 【無料】CPaaS(通信機能API)の資料を
一括ダウンロードする
本セクションにはプロモーションが含まれており、表示順は当社独自の基準や提携状況に基づいています。

二要素認証をAPIで実装する方式の選択肢

ここからは、二要素認証をAPIで実装する主な方式と、それぞれが外部のAPIを呼ぶ型か、自前で組む型かを整理します。実装では、パスワードに加える2つ目の要素(スマホに届くコードなど)をどう発行・検証するかが、APIの選択を左右します。

方式は大きく、外部のOTP送信・検証APIを呼び出す「外部API型」と、認証コードの生成・照合を自分のサーバーで組む「自前ライブラリ型」に分かれます。SMS・メール・プッシュは通信経路を持つ事業者のAPIに任せる外部API型が中心で、認証アプリ(TOTP)は自前ライブラリ型が基本になります。

二要素認証をAPIで実装する方式を、外部API型と自前ライブラリ型の2つに分けて示した図解。外部API型は事業者のCPaaSやVerify系APIにコードの生成・送信・照合を任せる方式でSMS OTP・メールOTP・プッシュ通知が該当し、自前ライブラリ型はRFC 6238準拠のライブラリで生成・照合を自分のサーバーで完結する方式で認証アプリTOTPが該当する。

SMS OTP(外部API型)

ログイン時にユーザーの携帯電話番号へ数桁の認証コードをSMSで送り、入力されたコードを照合する方式です。ユーザーが特別なアプリを入れる必要がなく、電話番号さえあれば使えるため、一般消費者向けサービスで広く採用されています。

実装では、SMS送信の回線を持つCPaaS(通信機能をAPIで提供する事業者)のOTP送信・検証APIを呼び出すのが一般的です。コードの生成・送信・照合までを事業者側が担うため、自前で乱数生成や有効期限管理を作り込む負担が小さくなります。

メールOTP(外部API型・自前SMTP)

認証コードをメールで送る方式です。SMSのような送信ごとの通信料がかからず、メールアドレスだけで完結する手軽さがあります。到達スピードや迷惑メール判定の影響を受けやすい点には注意が必要です。

実装は、メール配信APIやCPaaSのメール送信機能を使う外部API型のほか、自前のSMTPサーバーからコードを送る形もあります。Twilio VerifyやVonage VerifyのようなVerify系APIなら、チャネルにメールを指定するだけで、SMSと同じ発行・検証のエンドポイントでメールOTPを扱えます。自前で組む場合も、コードの生成・照合ロジックはSMS OTPと同じ考え方です。

認証アプリTOTP(自前ライブラリ型)

Google Authenticatorなどの認証アプリが表示する6桁のコードを照合する方式が、時刻同期式ワンタイムパスワード(TOTP:Time-Based One-Time Password)です。サーバーとアプリが共有する秘密鍵と現在時刻から同じコードを算出するため、コードの配信が不要で、SMSやメールのような送信料もかかりません。

TOTPの仕様はRFC 6238で定義されており、既定では30秒ごとにコードが切り替わります。同アルゴリズムはカウンター同期式のHOTP(RFC 4226)を時刻ベースに拡張したものです。

Basically, we define TOTP as TOTP = HOTP(K, T), where T is an integer and represents the number of time steps between the initial counter time T0 and the current Unix time. (中略)X represents the time step in seconds (default value X = 30 seconds) and is a system parameter.

出典:RFC 6238「TOTP: Time-Based One-Time Password Algorithm」§4 | IETF(rfc-editor.org)

TOTPはコードの生成・照合をサーバー側で完結できるため、RFC 6238に準拠したライブラリ(PythonのpyotpやRubyのrotpなど)を使えば外部のAPIを呼ばずに自前で実装できます。共有秘密鍵の安全な保管と、端末を紛失したユーザー向けのバックアップコードの用意が実装上のポイントになります。

プッシュ通知認証(外部API型)

専用アプリにログイン承認の通知を送り、ユーザーが端末上で「承認」を押すと認証が完了する方式です。コードを手で入力する手間がなく、フィッシングにも比較的強い一方、専用アプリの導入が前提になります。

プッシュ認証は、通知配信と承認結果の受け取りを事業者のAPIに任せる外部API型が中心です。Twilio Verifyのように、SMSやメールと同じVerify APIでチャネルにプッシュを指定できるサービスもあり、承認を求める通知の送信と、ユーザーが承認したかどうかの結果取得を、コードの発行・検証と同じ2ステップで扱えます。

ただしプッシュは、SMSやメールのように送信先アドレスへ都度コードを送るのとは違い、事前に各ユーザーの端末をサービスへ登録しておく必要があります。Twilio Verifyのプッシュ(Verify Push)では、まずユーザーを表すEntityにプッシュ用のFactorを一度だけ作成し、端末を紐づけます。

以降のログインでは、Challenge(承認要求)を作成して通知を送り、その承認結果を取得します。この端末登録にはTwilioなど各社が提供するクライアントSDKをアプリに組み込む必要があり、実装の手数が増えます。前掲の比較表で難易度を「中〜高」としているのは、この端末登録の手間があるためです。

出典・参考資料(1件)

発行→入力→検証:API呼び出しの実装フローとコード

ここからは、二要素認証を実装するときの具体的な呼び出しの流れを、外部API型のSMS OTPと自前ライブラリ型のTOTPで見ていきます。外部API型はSMS・メール・プッシュのいずれも、多くのサービスが「コードを発行するAPI」と「入力されたコードを照合するAPI」の2ステップで設計されている点が共通しています。

外部API型の二要素認証の呼び出しフローを発行・入力・検証の3段階で示した図解。STEP1発行では発行APIを呼びユーザーの電話番号にコードを送信して返ってきたOTP IDを保持し、STEP2入力ではユーザーが受け取ったコードを入力し、STEP3検証では検証APIにOTP IDと入力コードを渡して照合する。SMS・メール・プッシュで同じ構造。

SMS OTPのフロー(コード例)

SMS OTPの基本フローは3段階です。まず発行エンドポイントを呼んでユーザーの電話番号にコードを送り、次にユーザーが受け取ったコードを入力します。最後に、検証エンドポイントへ入力コードを渡して照合します。SMS配信APIを提供するXoxzoは、この流れを次のPythonコードで示しています。

# (1)OTPの発行:ユーザーの電話番号あてに認証コードを送信
resp = requests.post(
    "https://api.xoxzo.com/otp/request/",
    auth=(api_sid, api_token),
    json={
        "website": "https://example.com",  # 認証元のサイト
        "phone_number": "+818012345678"    # ユーザーの電話番号(E.164形式)
    }
)

# 発行レスポンスからOTP IDを取り出して保持しておく
otp_id = resp.json()["otp_id"]

# (3)OTPの検証:ユーザーが入力したコードを照合
resp = requests.post(
    "https://api.xoxzo.com/otp/verify/",
    auth=(api_sid, api_token),
    json={
        "otp_id": otp_id,
        "code": "123456"  # ユーザーが入力したコード
    }
)

発行APIが返すOTP IDを保持しておき、検証APIでそのIDと入力コードを突き合わせる形です。電話番号はE.164形式(国番号付き)で渡します。メールOTP・プッシュ通知も、発行と検証の2ステップという構造は同型で、送信チャネルが変わるだけです。

他社のVerify系APIも設計は共通しています。Twilio Verifyは検証開始がPOST /v2/Services/{ServiceSid}/Verifications、照合がPOST /v2/Services/{ServiceSid}/VerificationCheckで、SMS・音声・メール・WhatsAppを切り替えられます。

Vonage VerifyはPOST /v2/verify/でリクエストID(request_id)を発行し、POST /v2/verify/{request_id}で入力コードを照合します。発行と検証の2つのエンドポイントを呼ぶ構造は、各社でおおむね共通しています。

出典・参考資料(3件)

認証アプリTOTPのフロー(コード例)

認証アプリを使うTOTPは、外部APIを呼ばず自前で実装できます。流れは3段階です。まずユーザーごとに共有秘密鍵を発行してサーバーに保存し、次にその鍵をQRコードにして認証アプリに登録してもらいます。最後に、ログイン時にアプリが表示する6桁コードを、サーバー側で同じ鍵と現在時刻から算出したコードと照合します。

import pyotp

# (1)ユーザーごとに秘密鍵を発行し、サーバーに保存
secret = pyotp.random_base32()

# (2)認証アプリ登録用のURI(QRコード化して表示する)
uri = pyotp.totp.TOTP(secret).provisioning_uri(
    name="user@example.com", issuer_name="MyService"
)

# (3)ログイン時:アプリが表示する6桁コードを照合
totp = pyotp.TOTP(secret)
is_valid = totp.verify("123456")  # ユーザーが入力したコード

コードの生成も照合もRFC 6238の計算式に沿ってライブラリが処理するため、送信の仕組みを持たなくても実装できます。時刻のずれを吸収する許容範囲(±1ステップなど)の設定と、秘密鍵の暗号化保管をあわせて設計します。

実装方式の横断比較(実装難易度・コスト・強度)

ここまでの方式を、実装のしやすさ・コスト・使い勝手・強度の観点で横断的に並べます。自社のユーザー層や求めるセキュリティ水準に合わせて選ぶ際の目安にしてください。

実装方式外部API実装難易度コスト構造UX(使い勝手)相対的な強度
SMS OTP必要(CPaaS)低い送信ごとに課金アプリ不要で幅広い層に届く中(SIMスワップ等の弱点あり)
メールOTP必要/自前SMTP低い低〜無料到達の速さ・迷惑判定に左右される中(メール乗っ取りに弱い)
認証アプリTOTP不要(自前)中送信料なしアプリ導入が前提高(オフラインで完結)
プッシュ通知必要中〜高認証ごとに課金タップのみで手間が少ない高(フィッシングに比較的強い)

各方式の一般的な実装事情にもとづく整理です。強度は用途・実装により変わります。

SMS OTPは導入が容易で幅広いユーザーに届く一方、SIMスワップなどの弱点があり、公的なガイドラインでも扱いに注意が促されています(詳しくは後述の「実装前に押さえる落とし穴」で解説します)。手軽さと強度のバランスを踏まえ、重要な操作では認証アプリTOTPやプッシュを併用する設計も検討に値します。

料金や機能は各社の資料でまとめて比較できます 【無料】CPaaS(通信機能API)の資料を
一括ダウンロードする

二要素認証APIに使えるサービスと選び方

ここからは、二要素認証をAPIで実装するときに使える主なサービスと、その選び方を整理します。SMSやメール、音声、プッシュを1つのAPIで扱えるCPaaSや、二要素認証に特化したVerify系APIまで、対応チャネルや料金モデルには違いがあります。まずは全体像を比較表で確認してください。

← 横にスクロールできます →
サービス名CPaaS NOWNTT CPaaSVonage VerifyRakuten CPaaSInfobipJINTEC(二段階認証)Twilio VerifyXoxzo
提供形態国産CPaaS
(SMS・メール・郵送)
国産CPaaS
(SMS・音声・メール)
認証特化API
(グローバルCPaaS)
国産CPaaS
(SMS中心)
グローバルCPaaS
(多チャネル)
国産の認証サービス認証特化API
(グローバルCPaaS)
国産のテレフォニーAPI
(SMS・音声)
対応方式SMS・音声
(認証コード機能)
SMS・音声(IVR)・メール
着信番号認証
SMS・音声・WhatsApp・メール・サイレント認証
(国内はSMS・音声を確認)
SMS
(OTP/Confirm API)
SMS・音声・メール・WhatsApp等
15種類以上
SMS・音声(IVR)・発番認証
(着信認証)
SMS・音声・WhatsApp・メール
TOTP・プッシュ・パスキー
SMS(OTP API)・音声
OTP発行・検証の方式生成〜照合を一括提供2FA APIで生成〜照合リクエストID発行→照合Confirm API(OTP)Authentication API(2FA)生成〜認証を包括処理生成〜検証を単一APIotp/request→otp/verify
料金モデル初期費用0円
SMS従量課金(1通6円〜)
認証API無料+送信従量
(SMS 1通10円/70文字まで・税込)
認証成功課金(7.5円/回)+送信料
(初期・月額なし)
初期・月額0円
SMS従量(8円/通、税込8.8円)
要問い合わせ
(従量課金)
要問い合わせ認証成功課金(1回$0.05〜)+送信料
(USD建て)
月額固定費なし
クレジット従量(SMS 8円/通〜)
国内サポート●国内専任スタッフ(日本語)●日本語(NTTグループ)●日本語(KWC PLUS経由)●日本語・24時間365日△日本法人あり(技術文書は英語主体)●日本語(国産)●日本語(ソフトバンク経由)●日本語(国産・メール窓口)
詳細情報公式資料を見るサービス詳細を見るサービス詳細を見るサービス詳細を見るサービス詳細を見るサービス詳細を見る公式サイト公式サイト

各社公式情報にもとづく目安(2026年9月時点、税込/税別の表記は各社準拠)。単価・仕様は改定されるため、契約前に公式の料金ページで確認してください。

主なサービスの個別紹介

比較表で挙げたサービスについて、二要素認証をAPIで実装する観点から特徴を紹介します。

1. CPaaS NOW(ネクスウェイ)

CPaaS NOWのウェブサイト

CPaaS NOWは、SMS・メール・郵送などのコミュニケーションをAPIで統合管理できる国産のプラットフォームです。二要素認証向けには、ワンタイムパスワードの生成から送信、照合までを1つのAPIで完結できる認証コード機能を備え、コードが届かなかったときのフォールバック送信も想定した設計になっています。

二要素認証では、コードが届かなかったときに別チャネルへ切り替えるフォールバックをどう用意するかが実装上の論点になります。この仕組みについて、提供元のネクスウェイは開発者の実装負担の観点から次のように説明しています。

田島氏
株式会社ネクスウェイ 事業推進部 マーケティングG
田島氏
独自インタビューより

「認証コード生成機能」や、「Fallback機能」を標準で用意するなど、開発面でも使いやすさにこだわりました。「Fallback機能」というのは、1つのチャネルで送信失敗となったリクエストを、自動的に別のチャネルで再送信する仕組みです。通常であれば、エラー時の受け取りや別チャネルへの切り替え処理をエンジニアが自分でプログラミングする必要がありますが、CPaaS NOWでは標準装備されているので、開発コストの削減やコア業務への集中に直結します。

資料請求で、対応チャネルや導入手順の詳細を確認できます。

2. NTT CPaaS

NTT CPaaSのウェブサイト

NTT CPaaSは、二要素認証(2FA)APIを提供し、ワンタイムパスワードの生成ロジックと照合機能を無償で使えるのが特徴です。費用は実際に送信したSMS・音声・メールの通数に応じた従量課金のみで、SMSが届かない相手には音声やメールに切り替える複数チャネル送信にも対応します。

3. Vonage Verify

Vonage Verifyのウェブサイト

Vonage Verifyは、二要素認証に特化したVerify APIで、SMS・音声・WhatsApp・メールなど複数チャネルでのコード送信をひとつのAPIから扱えます。リクエストIDを発行してから入力コードを照合する2ステップ設計で、コード送信のチャネル切り替えやリトライの制御をサービス側に任せられます。

4. Rakuten CPaaS

Rakuten CPaaSのウェブサイト

国内主要キャリアへ直接接続する配信網を強みに、Rakuten CPaaSはSMSやOTP、音声などをAPIで提供します。二要素認証向けにはOTP確認API(Confirm API)を備え、国内ユーザーへのSMS到達を重視する場合の選択肢になります。

5. Infobip

Infobipのウェブサイト

多チャネルをグローバルに束ねるCPaaSのInfobipは、二要素認証向けにAuthentication API(2FA)を提供します。PINの送信がPOST /2fa/2/pin、照合がPOST /2fa/2/pin/{pinId}/verifyという発行・検証の2ステップ構成で、SMS・音声・メールへのフェイルオーバー送信にも対応します。日本法人による窓口もあります。

6. 二段階認証による不正アクセス対策支援(JINTEC)

二段階認証による不正アクセス対策支援(JINTEC)のウェブサイト

株式会社ジンテック(JINTEC)が提供する二段階認証サービスは、SMS・IVR(自動音声)・発番認証といった方式を選べる国産の認証APIです。コード入力を求めず、指定番号への発信で本人確認を行う発番認証にも対応し、金融機関を含む導入実績を持ちます。国内での本人確認を重視する用途に向きます。

7. Twilio Verify

Twilio Verifyのウェブサイト

Twilio Verifyは、SMS・音声・メール・WhatsApp・プッシュ・TOTP・パスキーまでを1つのAPIで扱える、認証チャネルの網羅性が高いVerify APIです。方式を横断して試したい場合や、将来的にプッシュやパスキーへ広げたい場合に、実装を1つのAPIに集約できます。国内ではソフトバンク経由での提供もあります。

8. Xoxzo

Xoxzoのウェブサイト

Xoxzoは、SMS配信を中心とした日本市場向けのAPIサービスで、OTP APIを使えば発行(otp/request)と検証(otp/verify)の2つのエンドポイントだけで二要素認証を実装できます。ドキュメントに実装コード例が公開されており、まず手早くSMS OTPを組みたい開発者に向いています。

二要素認証APIの選び方

サービスを比べる前に、まず自前実装で足りるかを確かめ、必要な方式が決まってから候補を絞ると、選定が早く進みます。ここでは、その判断と、外部APIを選ぶ場合の比較軸を整理します。

自前実装と外部APIのどちらを選ぶか

認証アプリのTOTPだけで要件が満たせるなら、RFC 6238準拠のライブラリを使った自前実装で送信料をかけずに完結できます。一方、SMSやメール、プッシュでコードを届ける必要がある場合は、通信経路と到達管理を持つ外部API(CPaaSやVerify系API)を使うのが現実的です。TOTPを自前で持ちつつ、SMSを外部APIで補うといった併用も選択肢になります。

対応チャネルと国内到達率は要件に合うか

SMSだけでよいのか、音声やメール、プッシュへのフォールバックが要るのかで、選ぶAPIが変わります。国内ユーザーが中心なら、国内キャリアへの接続方式や到達率が重要な判断材料です。届かなかったときに別チャネルへ自動で切り替えられるかも、認証の完了率を左右します。

料金モデルは自社の利用量に合うか

料金は、月間の想定認証回数で試算して比べるのが確実です。ログイン頻度が高いサービスほど、課金モデルの違いが総額に効いてきます。課金モデル別の料金の目安は、後述の「二要素認証APIの料金・課金モデルの目安」で整理しています。

日本語のサポートと実装支援はあるか

導入時のつまずきを早く解消できるかは、日本語ドキュメントや国内の技術サポートの有無に左右されます。国内事業者や日本法人を持つサービスは、実装支援や請求まわりの相談を日本語で進めやすい利点があります。

ここで挙げた対応チャネル・国内到達率・料金といった判断軸は、二要素認証に限らずSMS・音声・メールをAPIで扱うCPaaS選び全般に共通します。以下の記事では、CPaaS各サービスをこれらの観点で横断比較しているので、通信機能のAPIをまとめて検討したい場合はあわせてご覧ください。

二要素認証APIの料金・課金モデルの目安

ここからは、二要素認証APIの料金の考え方を整理します。課金モデルは大きく、送信した通数に応じて課金する「送信従量型」と、認証が成立したときだけ課金する「成功課金型」に分かれ、同じ利用量でも総額の見え方が変わります。主なサービスを課金モデル別に並べると、次のとおりです。

課金モデル主なサービス料金の目安
送信従量型(認証ロジックは無料・低額、送信した通数で課金)NTT CPaaS/CPaaS NOW/Rakuten CPaaS/XoxzoSMS 1通あたり数円〜10円程度(例:NTT CPaaSは認証ロジック無料+SMS 1通10円)
成功課金型(認証が成立した回数で課金)Vonage Verify/Twilio Verify認証成功1回あたり数円〜(Vonageは初期・月額なし、Twilioは1回0.05米ドル〜)

各社公式情報にもとづく目安(2026年9月時点)。単価は改定されるため、契約前に公式の料金ページで確認してください。

実額の裏づけとして、NTT CPaaSは認証コードの生成・照合ロジックを無償とし、送信したチャネルの通数のみを従量課金する形を公開しています(2026年9月22日時点、税込)。SMS APIは1通あたり10円(70文字まで)、音声APIは1分あたり固定電話への発信が10円・携帯電話への発信が20円、メールAPIは1通あたり0.09〜0.17円です。

認証コードの生成ロジックや検証機能は無償で提供。費用は実際に送信したSMS、音声、メールの通数に応じた従量課金のみ。スモールスタートにも最適です。

出典:NTTグループの二要素認証(2FA)API | NTT CPaaS(nttcpaas.com)

成功課金型は、送信の失敗や再送の分が課金されにくく、認証の成立回数で費用を読みやすい特徴があります。総額はログイン頻度や月間の認証回数で変わるため、想定する認証回数で試算したうえで、送信従量型と成功課金型を比べるのが確実です。

実装前に押さえる落とし穴

ここからは、二要素認証をAPIで実装する際に見落としやすい落とし穴を取り上げます。いずれも設計段階で押さえておくと、あとからの手戻りを避けられます。

2FA有効化で既存のパスワード認証REST APIが使えなくなる

自社が既存のREST APIを提供している場合、そのアカウントに二要素認証を導入すると、それまでパスワードで通っていたAPIの認証経路が塞がれることがあります。実際に、サイボウズのkintoneは、2要素認証を有効にしたアカウントではパスワード認証によるAPI実行を認めず、別の認証方式へ切り替えるよう案内しています。

2要素認証を有効にしたユーザーアカウントは、次のAPIでパスワード認証を利用できません。kintone REST API/Garoon REST API/Garoon SOAP API/User API(中略)別の認証方式(APIトークン、セッション認証、OAuth認証)を利用する。

出典:「2要素認証」制限事項 | cybozu.com ヘルプ(jp.kintone.help)

同じ制約は、外部ツール側でも実務上の問題になります。kintoneのデータを扱うkrewData(メシウス)は、認証アプリによる2要素認証を設定したアカウントではREST APIをパスワード認証で使えず、データ編集フローを実行できないと明記し、2要素認証を設定していないアカウントの利用を回避策として案内しています。

既存のAPI連携がある場合は、二要素認証の導入前に、APIトークンやOAuthなどの認証方式へ切り替えられるかを確認しておくと安全です。

出典・参考資料(2件)
  • 出典:「2要素認証」制限事項 | cybozu.com ヘルプ(jp.kintone.help)
  • 出典:「2要素認証を設定している環境」| krewData ドキュメント・メシウス(docs.krew.mescius.jp)

実装側で押さえるOTPの基本対策

OTPを扱う側の実装では、いくつかの基本的な対策を最初から織り込んでおくと安全です。総当たりでコードを推測されないよう試行回数とレート制限を設ける、一度使ったコードや期限切れのコードを無効化してリプレイ(使い回し)を防ぐ、といった対策は自前実装でも外部API利用でも必要になります。

認証アプリのTOTPを自前で実装する場合は、サーバーと端末の時刻ずれを吸収する許容範囲の設定と、共有秘密鍵の暗号化保管が要点になります。外部APIを使う場合も、試行回数の制限やコードの有効期限をどこまで設定できるかを、選定時に確認しておくと安心です。

SMS OTPの弱点(SIMスワップ・到達遅延・国際コスト)とフォールバック設計

SMS OTPは導入が容易な反面、いくつかの弱点があります。NIST SP 800-63B(2017年版)は、公衆電話網(PSTN)経由の認証コード配信を「RESTRICTED(制限付き)」と位置づけています。コードを送る前には、SIMの変更や番号ポーティングなどのリスク指標を考慮すべきとされています。

攻撃者が電話番号を乗っ取るSIMスワップは、SMS OTPの代表的な弱点です。だからこそ、重要度の高い操作ではSMS単独に頼らない設計が求められます。

Use of the PSTN for out-of-band verification is RESTRICTED as described in this section and in Section 5.2.10. Verifiers SHOULD consider risk indicators such as device swap, SIM change, number porting, or other abnormal behavior before using the PSTN to deliver an out-of-band authentication secret.

出典:NIST SP 800-63B §5.1.3.3(2017年版)| NIST(pages.nist.gov)

あわせて、SMSは電波状況やキャリア側の遅延で到達が遅れることがあり、国際SMSは送信先の国によって単価が高くなります。到達しなかったユーザーが認証を完了できるよう、一定時間で音声通話やメールに切り替えるフォールバックや、認証アプリTOTPを代替手段として用意しておく設計が有効です。重要な操作ではSMS単独に依存せず、より強い方式を組み合わせる方針も検討してください。

出典・参考資料(1件)
  • 出典:NIST SP 800-63B「Digital Identity Guidelines」§5.1.3.3(2017年版)|NIST(pages.nist.gov)

SMS OTPを主軸に据える場合は、国内キャリアへの到達率やフォールバック対応の差が、そのまま認証の完了率に響きます。到達率や本人確認のやり方を含めたSMS認証サービスの選び方は、以下の記事で個別に解説しています。

まとめ

二要素認証をAPIで実装するには、まずSMS OTP・メールOTP・認証アプリTOTP・プッシュのどの方式を使うかを、外部APIを呼ぶか自前で組むかの軸で決めるのが出発点です。外部API型は発行と検証の2ステップという共通構造を持ち、CPaaSやVerify系APIを使えば送信と照合を任せられます。TOTPはRFC 6238準拠のライブラリで自前実装でき、送信料をかけずに完結します。

サービス選びでは対応チャネル・国内到達率・料金モデル・日本語サポートを、自社の要件に当てはめて比べてください。あわせて、2FA有効化で既存のREST APIが使えなくなる制約や、SMS OTPの弱点とフォールバックといった落とし穴を設計段階で押さえておくと、実装後の手戻りを防げます。まずは候補となるサービスの資料で、対応チャネルと料金を確認するところから始めるのが近道です。

料金や機能は各社の資料でまとめて比較できます 【無料】CPaaS(通信機能API)の資料を
一括ダウンロードする

よくある質問(FAQ)

Q. 二要素認証APIとは何ですか?

A. 二要素認証APIとは、ワンタイムパスワード(OTP)の発行・送信・照合といった二要素認証の処理を、自社サービスから呼び出して組み込めるAPIです。SMS・メール・音声・プッシュなどでコードを届ける処理や、入力されたコードを検証するロジックを事業者側が提供するため、認証機能をゼロから作らずにログインへ二要素認証を追加できます。

Q. 二要素認証APIと二段階認証APIに違いはありますか?

A. 二要素認証は「知識・所有・生体」という異なる種類の要素を2つ組み合わせるのに対し、二段階認証は種類を問わず認証のステップを2段階に分ける点が本来の違いです。ただし実務やサービス名では両者はほぼ同義で使われることが多く、SMSやメールでOTPを送るAPIはどちらの呼び方でも同じ実装を指すのが一般的です。名称よりも、対応チャネルや検証の仕組みで中身を確認するのが確実です。

Q. 二要素認証APIはSMS OTPと認証アプリTOTPのどちらを選ぶべきですか?

A. 二要素認証の方式は、幅広い一般ユーザーに手軽に届けたいならSMS OTP、送信料をかけず強度を高めたいなら認証アプリのTOTPが向きます。SMS OTPはアプリ不要で電話番号だけで使える反面、SIMスワップなどの弱点があり送信ごとに費用がかかります。

TOTPは外部APIを呼ばず自前で完結でき送信料もかかりませんが、ユーザーに認証アプリの登録を求める必要があります。重要な操作では、SMSにTOTPを併用する設計も有効です。

Q. 二要素認証APIの実装にはどのくらいの工数がかかりますか?

A. 外部APIを使う二要素認証の実装は、コードを発行するAPIと入力コードを照合するAPIの2つを呼び出すだけで基本的な認証フローを組めるため、実装の中心部分は比較的短期間で用意できます。認証コードの生成や有効期限の管理を事業者側が担うためです。

実際にかかる期間は、既存のログイン画面やセッション管理への組み込み、フォールバックやエラー処理の作り込み次第で変わります。自前でTOTPを実装する場合も、RFC 6238準拠のライブラリを使えば送信の仕組みを持たずに実装できます。

Q. 二要素認証APIは無料で試せますか?

A. 多くの二要素認証APIは、無料トライアルや無料枠が用意されており、契約前に実装と動作を試せます。認証コードの生成・照合ロジック自体を無償とし、実際に送信したSMS・音声・メールの通数だけを課金するサービスもあります。ただしSMSなどの送信には通数に応じた費用がかかるのが一般的なので、無料で試せる範囲と、本番運用で発生する従量課金を分けて確認してください。

Q. 二要素認証APIで海外のユーザーにもコードを送れますか?

A. 二要素認証APIは、多くのCPaaSやVerify系APIが国際SMSや複数チャネルに対応しており、海外のユーザーにもコードを送れます。ただし国際SMSは送信先の国によって単価が高くなり、到達率もキャリアや国の事情に左右されます。電話番号は国番号付きのE.164形式で渡す必要があり、海外向けにはメールやプッシュへのフォールバックを併用すると、認証の完了率を保ちやすくなります。

Q. 二要素認証APIで、コードを繰り返し間違えたユーザーの入力を制限できますか?

A. 二要素認証APIの多くは、コードの試行回数や有効期限に上限を設け、一定回数を超えた入力を制限する仕組みを備えています。これにより、総当たりでOTPを推測しようとする攻撃を防ぎます。回数制限の挙動や設定できる範囲はサービスによって異なるため、パスワードアタック対策として再入力の制限やロックの仕様を、選定時に確認しておくと安全です。

二要素認証APIの料金・資料を一括チェック

MCB FinTechカタログでは、二要素認証をAPIで実装できるCPaaS・認証サービスの最新資料を無料で一括請求できます。対応チャネルや料金モデルをまとめて比較できます。

料金や機能は各社の資料でまとめて比較できます 【無料】CPaaS(通信機能API)の資料を
一括ダウンロードする

MCB FinTechカタログに掲載しませんか?

MCB FinTechカタログでは、掲載企業様を募集しています。マネックスグループの金融実務ノウハウを活かした独自の評価軸と検索設計により、導入検討者が最適なサービスを効率的に発見できる法人向け比較プラットフォームです。掲載後は管理画面から料金表や導入事例を随時更新でき、常に最新の情報を訴求可能。まずは下記フォームより、お気軽にお問い合わせください。

監修者

マネックス証券 フィナンシャル・インテリジェンス部 暗号資産アナリスト

松嶋真倫

都市銀行にて金融実務を経験後、暗号資産関連スタートアップの創業期に参画し、市場分析・業界調査に従事。2018年にマネックスグループ入社。以降、ビットコインをはじめとするデジタルアセットからマクロ経済環境まで、金融市場を横断した調査・分析および情報発信を担う。FinTech・次世代金融領域のリサーチ統括、各種レポートや書籍の執筆、日本経済新聞など国内主要メディアへのコメント・寄稿、イベント登壇などを行う。2021年3月より現職。
記事内でご紹介している製品・サービスは監修者が選定したものではなく、編集部が独自に選定したものです。
監修の範囲は記事の一般的な解説部分であり、比較表および各製品・サービスの紹介内容は監修の対象外です。

関連記事

新着記事

CPaaS(通信機能API)
おすすめの診断サービス