携帯電話のユーザー識別情報まとめ

携帯電話のユーザー識別情報まとめ

会員サイトを作成する上で、個人を識別するため、ログインIDやパスワードが必要となる場面があります。しかし、携帯向けのサイトでは、入力の手間から、ログインID・パスワードではなく、携帯電話からユーザーを識別できる情報を取得し、利用することが少なくありません。個人を識別する方法としては、大きく

  1. 携帯電話の製造番号(ハードウェアの識別)
  2. 携帯電話の契約と関連付けされた情報(契約の識別)

の2種類ありますが、それぞれキャリアによって取得方法が異なります。また、機種変更の際、こうした識別情報が変更され、今までログインできていたサイトにログインできなくなる場合もあります。今回は、そうした携帯電話のユーザー識別情報についてまとめます。なお、本エントリーでは、ユーザーを識別するための情報として、ユーザー識別情報と呼ぶことにします。なお、今回調査した内容について、にまとめました。開発の参考になればと思います。

関連記事:

docomoのユーザー識別情報は3種類

docomoでは、

  1. 製造番号
  2. iモードID
  3. ユーザーID

の3つのユーザー識別情報が存在します。ただし、ユーザーIDに関しては、公式サイトの場合のみ取得可能、かつキャリアの守秘義務契約に属しますので、本エントリーでは割愛します。製造番号とiモードIDの特徴を下記にまとめます。

製造番号の特徴

iモード対応HTML3.0以降の携帯電話では、utnと呼ばれる識別子を利用した、個体識別が可能です(SO210i、SH251i、SH251iSを除く)。これは各携帯電話がハードウェアとして持っている情報になります。FOMAの場合はFOMA端末製造番号とFOMAカード製造番号(UIM)の2種類、movaの場合、端末製造番号が該当します。全て、User-Agentヘッダから取得可能です。HTMLに下記のコードを記述することで、製造番号を取得することができます。

<a href="test.jsp" utn>テストページへ</a>

取得されるユーザーエージェントはこういったフォーマットです。

(例)FOMAの製造番号


DoCoMo/2.0 P903i(c100;TB;W24H12;


ser0123456789abcde;icc0123456789abcdefghij)

上記の太字の部分が製造番号です。serで始まる値がFOMA端末製造番号、iccで始まる値がFOMAカード製造番号になります。

製品番号利用時の問題

utnを利用したページを利用するたびに、確認のダイアログが出る点が問題点として上げられます。確認ダイアログが何度も出現するのは、ユーザビリティーの点では好ましくありません。また、携帯電話やSIMカードというハードウェアに依存する情報のため、機種変更を行った場合に変更される場合があります。例えばmovaからFOMAに機種変更した場合、桁数からして変わってきます。なお機種変更をしても、FOMAカードが変わらない場合は、FOMAカード製造番号は変わりません。

iモードID

iモードIDに関しては、koreandaysさんが以前のエントリーで詳しく説明されていますが、2008年3月31日から始まった個体識別情報です。guidというパラメーターを付ける事で、非公式サイトでもユーザーの識別情報が取得可能です。また、製品番号と異なり、確認ダイアログもでないため、ユーザービリティーを損ねることなく、個人の識別が可能になります。ただし、製品番号と異なり、SSLページでは取得できません。例えばECサイトなど、SSLページが必要なサイトを作成する際は、iモードIDのみで個人の識別ができないので注意が必要です。

String imodeId= request.getHeader("X-DCMGUID")

取得されるユーザーエージェントはこういったフォーマットです。

(例)iモードID


0123abc

auの場合

EZ番号やサブスクライバ IDと呼ばれる識別子でユーザーを識別します。x-up-subnoヘッダから取得可能です。ただし、ユーザーが携帯電話の設定で、EZ番号の送信を許可している必要があります。EZ番号は、契約に紐付いており、機種変更で変更されることはありません。また、EZ番号はSSLページでも取得が可能です。

String ezNumber = request.getHeader("x-up-subno")

取得されるEZ番号はこういったフォーマットです。

(例)EZ番号


01234567890123_ab.ezweb.ne.jp

SoftBankの場合

SoftBankでは端末シリアル番号とユーザーIDの2種類で個体識別が可能です。

端末シリアル番号

端末シリアル番号はP型以降取得が可能になっています(モトローラ製を除く)。それぞれ、P型は11桁の英数字、W型以降は15桁の英数字となっています。携帯電話のブラウザの設定メニューで端末シリアル番号を送信するかどうか、設定可能です。端末シリアル番号はユーザーエージェントに含まれます。

String userAgent = request.getHeader("user-agent")

端末シリアル番号はユーザーエージェント内に含まれる、/SNで始まる文字列になります。

(例)端末シリアル番号


SoftBank/1.0/830SH/SHJ001/SN012345678901234 Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1

ユーザーID(SoftBank)

ユーザーIDは16桁の英数字です。docomo・イーモバイルと同じ名称なので、混乱しないよう、注意が必要です。サイト上の設定で、ユーザーIDを「送出する」に設定している場合に、自動で送信されます。x-jphone-uidヘッダで取得が可能です。

String userId = request.getHeader("x-jphone-uid")

取得されるユーザーIDはこういったフォーマットです。

(例)ユーザーID(SoftBank)


0123456789abcdef

イー・モバイルの場合

イー・モバイルではEMnet対応端末の場合、ユーザIDで個体識別が可能です。x-em-uidヘッダから取得できます。

String userId = request.getHeader("x-em-uid")

弊社に実機がありませんでしたので、詳細は不明です。ご存知の方がおられましたら、コメントにて詳細をお教えていただけると、幸いです。

まとめ

本エントリーをまとめるにあたり、2点注意点をあげます。1点目はdocomoの製造番号・iモードIDを取得する場合、HTML側に記述が必要であることです。その他のユーザー識別情報に関しては、HTML側の対応は不要なので、注意点としてあげておきます。2点目は本エントリーで取り上げたユーザー識別情報は、書き換えが可能であることです。例えばFirefoxのプラグイン、FireMobileSimulator等を使えば、ユーザー識別情報を簡単に設定できます。そうした書き換えに対応するためには、実際の携帯電話からのアクセスに限定すれば、書き換えはできなくなります。つまり携帯電話キャリアのIPアドレスでアクセスを制限すれば良いのです。そうすることで、穂年とリーで取り上げたユーザー識別情報で、個人の特定が可能になります。下記に各キャリアのユーザー識別情報について、下記の表にまとめました。開発の参考になればと思います。

ユーザー識別子
キャリア 識別子の場所 SSL 通知設定 機種変更による

 

識別子の変更

docomo 製造番号 User-Agentヘッダ 確認ダイアログ あり
iモードID X-DCMGUIDヘッダ × iモードメニュー なし
au EZ番号 X-Up-Subnoヘッダ au oneメニュー なし
SoftBank 端末

 

シリアル番号

User-Agentヘッダ ブラウザ設定 あり
ユーザーID X-Jphone-Uidヘッダ メニュー なし
イー・モバイル ユーザID X-Em-Uid 不明 メニュー 不明
ユーザー識別子
キャリア フォーマット
docomo 製造番号 ser[15桁の英数字]

 

icc[20桁の英数字]

ser[11桁の英数字]

ser0123456789abcde

 

icc0123456789abcdefghij

ser0123456789a

iモードID 7桁の英数字 0123abc
au EZ番号 [14桁の数値]_[2桁の英字].ezweb.ne.jp 01234567890123_ab.ezweb.ne.jp
SoftBank 端末

 

シリアル番号

SN[15桁の英字] SN012345678901234
ユーザーID [16桁の英数字] 0123456789abcdef
イー・モバイル ユーザID u[17桁の英数字] 不明

(参考サイト)

docomo
その他の留意点 | サービス・機能 | NTTドコモ
au
KDDI au: そのほかの技術情報 > ユーザーエージェント
KDDI au: auからのお知らせ一覧 > お知らせ
SoftBank
WEB & NETWORK 技術資料
イー・モバイル
技術情報 | イー・モバイル

Page Top