Logic Delight

明日のワシは忘れてしまうから、コードにはコメントを書くのです。

Yahoo!のワンタイムパスワードをGoogle認証システム(Google Authenticator)で管理する

ログイン画面などのID/Passwordを入力させる画面がHTTPSになっていないサイトを片っ端から利用解除して他の同種サービスに乗り換えているワシです、うす。
今回は、ワンタイムパスワード生成のスマホアプリを1つに絞りたいけど絞れていないかた向けです。

不正ログインが横行していて、ID/Passwordの使い回しなんざやっていたらイチコロなここ最近のインターネット界隈ですが、Yahoo!Japanが不正ログイン事件でID流出など痛い目をみた後、手遅れながらワンタイムパスワード(以下、OTP)認証を追加導入しましたな。

ワンタイムパスワード(OTP) - Yahoo! JAPAN IDガイド

認証がセキュアになる事自体は大歓迎ですが、なぜだか肝心のYahoo!のページでOTPを設定しようとすると、独自のOTP生成アプリをスマホAndroid/iPhone)にインストールしなさい、と言われます。ま、OTPをスマホアプリで実現すること自体はGoogle認証システムという仕組みを提供しているGoogleさんも同様なんですが、他のサービスであるDropboxFacebookではGoogle認証システムで相乗り対応できていたので、あんたのところもGoole認証システムで管理出来ればいいのに、と思って無理やりQRコードを読み込ませてみたけど、有効なURLスキームじゃありません的なエラーで取り込めませんでした。仕方なく独自アプリをインストールするものの、この調子でWebサイトごとにOTP生成アプリをインストールし続けていくのもなんだかなぁ、と思ってしまうのでありますな。

ちょっと調べてみたところ、特に何も工夫をせずにYahoo!のOTPを利用できるスマホアプリは

のようで、両方とも確かにできました。後者の方が、Y!みたいな恥ずかしいアイコンじゃないので、本意ではないですが、後者を使っていました。

ただ、後日、愛読している 2段階認証ノススメ (まとめ) - セキュリティは楽しいかね? Part 2 で知ったのですが、

アプリ登録用の QRコードが独自の URLスキーム (yjotp) なため、アプリが対応していないとそのままでは登録できない。たとえば Google認証システムは未対応のため、手入力で登録する必要がある。

ということで、なるほど手入力ならできるのか、と。

そこで、早速Yahoo!ワンタイムパスワードのサイトに行って、(既にOTP設定してあるワシは)OTP設定を「変更」として、表示されるQRコードを、一般的なQRコードリーダーで読んでみました。読み取れた文字列はこんな感じ。

yjotp://totp/user_id?secret=ABCDEFGHIJKLMNOPQRSTUVWXYZ

yjotpが例の悪名高い独自URLスキームで、user_id のところには 自分のYahoo!ID が、secret= の後には認証キーとなる長い文字列が続いておりました。

これをGoogle認証システムに登録するには、Google認証システムを起動して「+」ボタンを押し「トークンを追加」画面へ行きます。「時間ベース」が選択されている状態で、アカウント欄にはOTPを識別するための任意のアカウント情報(例えば user_id@yahoo.co.jp)、キー欄には secret= のうしろに続いていた長い認証キー文字列を設定すれば、はい、めでたく登録できますた、と。

おそらく機能的には遜色なかったので、前述の HDE OTP Generator に統合していっても問題ないと思われますが、ワシは堅牢そうなGのアイコンが気に入っていたので、Google認証システムに統合しました。

皆様におかれましても、IDとパスワードだけでは大切な自分のアカウント・個人情報を守れない時代ですので、ワンタイムパスワードが利用できるサービスでまだ設定をしていない、という方は是非ご検討されてみてはいかがでしょうか。