2011年2月27日日曜日

外部認証を使ったアプリケーション① 概要

前々回 twitterのOAuthでの注意点 という記事を書いたが、今回からは GoogleAppEngine(GAE)上にどのように外部認証サービスを実装していくかを記事にしていきたいと思う。


そもそも、なぜ外部認証サービスなのか?。

利用者にいつも使っているプロバイダのIDを使って気軽にアプリケーションを使って欲しい、そして、アプリケーションにユーザー登録機能を組み込む手間を省きたい、というのが大きな理由である。

他に、メディア系サイトに多いのだが、ユーザー登録と称して大量の個人情報を集めているところがある。こんな事をしていて情報流出したらダメージは計り知れない。メールアドレスの収集さえ危険である。
このような考えの開発者には、外部認証サービスという選択は適切なものではないだろうか。

ここで今日の一言、
お金をかけても良いシステムができるわけではない、
情報をたくさん集めても活用できるわけではない。
by 筆者

※注意
Googleアカウントしか利用を許可しないのであれば外部認証サービスを組み込む必要はなく、GAE上で標準で提供されている仕組みを使えば良い。



それでは本題の外部認証サービスの組み込みについて、説明していく。

外部認証サービスというとまず、OpenID を思い浮かべる。しかし一口に OpenID と言っても、サービスプロバイダーによって実装レベルが違うようだ。またサイトによっては OpenIDではなく、OAuth や独自の仕組みを提供しているところもある。今まで調べた中では、主に次の方法でサービスの組み込みが可能なようだ。
  1. サービス認証モジュールを自前で用意する
  2. フレームワークや外部にあるライブラリーを利用する
  3. 外部サービスを利用する
1 の自前で用意する方法は、最終的に満足度としては高いと思うが、プロバイダー毎の仕様確認やモジュールの動作検証を行う必要がある。もちろんそんな技術力があるわけではなく、労力もかけられない。

2 フレームワークや外部にあるライブラリーは多種多様で数は多い。ある程度使われてきたモジュールは信頼感も高い。ただ、網羅的にプロバイダーに対応しているモジュールはほとんど無い。またモジュール内部が複雑だったり、欲しい機能とマッチしないこともあると思う。

3 外部サービスというのは、外部認証サービスプロバイダーと(自社)アプリケーションの中間に位置し、認証情報の中継を行うサービスのことである。利点としては、中継サービスのインターフェースに合わせたモジュールを用意すれば、多くのサービスプロバイダーと接続できるということである。欠点としては、一定範囲を越えるサービスは有料だったり、特に日本のサービスプロバイダーに対応していない点である。
このサービスとしては以前 RPX と呼ばれていた Janrain Engage がある。RPX については、次のサイトで説明がある。

参考: masayangの日記 RPXを使って認証を賢く簡単に


次回以降 2 の方法を主に、外部認証の組み込みについて解説していく。