GeekFactory

int128.hatenablog.com

OpenIDを個人のWebサイトで活用する

個人のWebサイトでOpenIDを活用する方法を考えてみます。

IDとパスワードによる認証では、サービス提供者と利用者の間で秘密情報(パスワード)を共有しておく必要があります。共用パスワードを使ったり、利用者に初期パスワードを発行したりしていると思います。前者は本人性が確認できない問題があり、後者は利用者の手間が大きい問題があります。

必ずしもサービス提供者が秘密情報を保持しておく必要はなく、秘密情報による本人識別は他者に委譲できます。認証をIdPに委譲することで、サービス提供者はIDのみ知っていればよく、認可のみ実装すればよいことになります。

例:mixiにいる友達の間でWikiを共有する

デザインや拡張性の問題で、自前でWikiを立てている人も多いと思います。例えばPukiwikiではpukiwiki.ini.phpにIDとパスワード(のハッシュ)を書く必要がありますが、OpenIDでは既存のIDを書くだけで済みます。

OpenIDに対応していないWikiサービスだと個別にアカウントを取ってもらう必要があります。mixiのように十分なWebリテラシーを求められない世界では、操作性の点でシングルサインオンが重要になります。mixi上の「友達まで公開」と同様のことができれば、情報共有がやりやすくなります。

リアル世界のつながりで意味を持つ話かもしれません。

既存のWebアプリがOpenIDに対応するまでの「つなぎ」

アプリケーション層がOpenIDに対応するには手間と時間がかかります。そこで、サービス提供者と利用者の間に1つの層を置くことで、容易にアクセス制御を実現できます。Apacheにモジュールを組み込んだり、リバースプロキシを配置するといった方法があります。

モジュールの組み込みもリバースプロキシの配置もできないようなレンタルサーバ環境で上記を実現する仕組みを考えています。具体的には、アプリケーション層でリバースプロキシを実装します。サービス提供者から見ると、OpenID Layerをインストールしてちょっと設定するだけでアクセス制御が可能になります。