2016年1月26日火曜日

ログイン手段再考: OAuthよりもメールアドレス認証がいいんじゃない?

最近は色んなウェブサイトでOAuthを使った登録やログインが用意されるようになってきました。

それに伴い、OAuthを使ったサイトでID/パスワードとは違う別の不便さを感じるようになってきました。


確かにID/パスワードは、認証方法としてはセキュリティ的にあまり望ましいものではありません。なぜならパスワード使い回しによって、セキュリティが弱いウェブサイトでパスワードが露呈すると、全てのウェブサイトへのアクセスが破られてしまうという恐れがあるからです。

もちろんこれはパスワードを使い回すユーザが悪いのですが、しかしユーザがどのようなパスワードを設定するかを制限しなければ、使い回したり、異常に簡単なパスワードを設定されてしまうことは防げません。

そうした問題や、またユーザ登録の面倒くささなどを防ぐためにOAuthを使ったサイトが増えているのだとは思います。


しかしOAuthにも別の問題があります。

多くのウェブサイトではOAuthのサービスプロバイダとしてGoogle, Facebook, Twitterなどをサポートしていますが、こうしたウェブサイトは単なるID認証のためにOAuthを提供しているのではなく、API連携をするためにOAuthを提供しています。

そのためOAuthでログインしたユーザは、自分が単に認証するためだけのつもりが、不用意に個人情報をウェブサイトに渡してしまうことになりかねません。

また、私が個人的に困っていることとして、ログイン手段としてGoogle, Facebook, Twitter, メールアドレスなどが用意されていると、どれで登録したかを忘れてしまう場合があることです。この場合、アカウントへのログインはほぼ絶望的になります。

私としては、もしOAuthを認証手段として使うのであれば、思い切ってサービスプロバイダの種類を一種類に限定してしまい、ログイン手段を忘れないようにすることをお勧めしたいところです。

(それでもGoogleだとAppsのアカウントとgmailのアカウントの二種類があったりするので、どちらを使ったのか忘れてしまう危険はありますが)

ちなみにこれまで使ったOAuth対応サイトの中で最悪だなと思ったのはpixivです。OAuthを使って登録を促しているのに、実際に登録しようとするとIDやパスワードなどの登録フォームが出てくるという意味不明な作りです。こんなことをするくらいなら最初からメールアドレスを入れるようにすればいいのではないでしょうか?

マーケティング上の理由などで、メールアドレス確認の手順をなくして登録途中での離脱を減らしたいなどあるのかもしれませんが、ユーザにとってプライバシーを失うだけでメリットのないようなOAuthの使い方は避けるべきではないでしょうか。


私が最近思うのは、どうせメールアドレスという情報は必要であり、かつメールアドレスにパスワードの再発行などを送るようになっているのだから、メールアドレスに認証を委ねてしまえば良いのではないかということです。

ID/パスワードなどをユーザに管理させるのではなく、ログインするときにもしパスワードが分からなければメールアドレスにメールを送って、そこのリンクからログインしてもらえば良いと。

弊社では、いまはユーザが登録したときにパスワードをこちらで自動生成して送って、それをそのまま使ってもらうようにしています。ユーザがパスワードを設定しないほうがずっと安全であると思っています。

これまでは、メールで送信すると、どうしても平文で送られることになるので、セキュリティ上の問題があるという意識を持つプログラマは多かったでしょう。しかしどっちにしろ多くのウェブサイトではメールアドレスを最終的なアカウントの確認手段として使っているので、それが脆弱であると見なして仕様を決めるのは難しいです。

さらにインターネットのメールサーバ同士の通信が盗聴されるということは現実的にはかなり低いリスクでしょう。そう考えると実質的に脆弱なのは、ユーザが危険な通信路(公衆Wifiとか)を使って、暗号化していないPOPでメールを取得するような場合だけです。しかし、いまどき大多数のユーザは、ウェブメールかPOP over SSLを使っているのではないですかね?

今後、開発するウェブシステムに関して言えば、もうパスワードなどというものを全廃してしまい、メールのリンクからのログインだけに絞りたいくらいの気持ちです。実際にはモバイルやAPIのアクセスなどもあるので、単純なログインリンクだけでは駄目ですが、そこは工夫して乗り越えたいところです。

もしセキュリティを高めるのであれば、二因子認証(スマホやSMSを使うone-time password等)を併用する方がベターでしょう。

また、むやみにセッションを失効させるウェブサイトも考え物です。ユーザにログインを促せば、それだけ利便性が下がり、離脱率が上がってしまうわけですから、セッションはデータベースの能力が許す限り長期間保持するべきでしょう。

ログイン手段については旧態依然とした考え方がまかり通るこの業界ですが、そろそろ全面的な再考が必要ではないでしょうか。色々とご意見などもらえればありがたいです。

1 件のコメント:

  1. いくつかのチャットアプリは電話番号で認証して SMS で PIN を送ってきますね。似たようなもんかも。

    返信削除