No.389
【SMS認証】SMS認証の実装を検討する
メールアドレス認証…迷惑メール扱い…クレーム…うっ…頭が…
インターネット上の個人認証といえば一昔前はメールアドレスに認証URL付きのメールを送るのが主だった。
今は電話番号宛てにパスコードが記載されたショートメールを送信する方式が主流だ。大手サイトは概ねこの方式になってきているのではないだろうか。
というわけで自分で実装するための情報を検討してみた。
結論
結論から言うと、大規模なシステムでなければSMS送信代行業者のAPIを利用する方がよさそう。
あと、送信毎に料金が発生するので、いたずら送信されないようにreCAPTCHAなどで防御するのは必須だろう。
SMSを送信する前提
SMSの前提としては
- 携帯電話、正確には電話番号をも持つ機械からしか送信できない。
ということがある。
だからEメール等のようにPCから送信することはできない。
また、この前提のため、MVNOでも電話番号(もしくはSMS対応していない)が無い通信専用カードでは、SMSは送受信できないことになる。別契約(オプション)になるので注意。
解決方法①:SMS送信サービスを使う
一番お手軽な方法としてはSMS送信を代行してくれる業者を使うことだ。
業者ごとに使用や料金は違うが、大抵はAPIやSDK(開発キット)が提供されていて、WEBシステムと接続しやすい作りになっている。
有名な会社だとTwilioというところがある。
料金は一通あたり0.08ドル、1ドル120円として約10円で送信可能だ。
APIを使う前提であればそれ以外のコストはかからないと考えて良い(重要)。
解決方法②:自分でSMS送信を行う
自分でSMS送信を行うためには下記の準備が必要となる。
- 何らかのSMS送信機器 ** 加えて、その送信機器にSMS送信を命ずるプログラム
- SMS送信ができるSIMカード
SMS送信機器としては Raspberry Piと通信モジュール(3G通信モジュール 3GPiや4G通信モジュール 3GPiなど)を組み合わせたものが比較的手軽か。
コストはMVNOを使うと最低文字数で一通3円くらい。BIGLOBEだと国内一通3円、海外宛100円が最低価格となる。(70文字160バイト。税別)
一通あたりのコストは安いが、それ以外のコストがけっこうかかる。プログラミングも必要だ。