OpenIDについて

以前OpenIDについて調べたことがあるのですが、
最近仕事でも利用する機会があり再調査。


OpenIDとはWEBアプリケーションの認証部分を
別のサイトへ委託する仕組みです。


たとえばYahooのユーザIDとパスワードを使用して
Yahooとはまったく別のWebアプリケーションを
利用することが出来ます。
パスワードはYahoo以外に漏れることはありません。


利用者はユーザ登録なしにアプリケーションを利用でき、
ユーザID、パスワードの一元管理が可能になります。
アプリケーション提供者は利用時の敷居が下がる、
ユーザ登録機能を作成する必要がない等のメリットがあります。


以下、OpenIDを調べた際に気になった点

  • 通信のセキュリティ

OpenIDでは、データのやりとりに暗号化などの取り決めはありません。
すべてデータは平文での扱いとなります。
一般的にOpenIDの仕組みは中間攻撃に弱いとされてる為、
認証にはhttpではなくhttpsを使用したほうが良いとされています。
httpsに未対応のOP*1も結構あるので注意が必要です。

  • IDの再利用

ユーザIDを再利用する際に
OpenIDではOP側で削除したユーザをRP*2側で
確認する手段はありません。
よくIdentifier*3として利用されるURL+ユーザIDという形式の場合
新しいユーザがサービスを利用する際に旧ユーザのデータが
表示されてしまうようなことが発生します。
IdentifierはOP側でフラグメント等を利用し必ず一意にする必要があります。
また、OPのドメインが別のユーザに取得されてしまうと
同じような問題が発生する可能性があります。

  • OPの選定

OpenIDでは基本的に自由にOPを選択することができますが、
セキュリティへの対応や安定性などOP毎にまちまちです。
RP側で安全で安定したOPのみを提供するような
対応もサービスによっては必要かと思います。
また、できればIDの名寄せ機能を提供し、
OPがダウンしても別のOPでログインできるような
しくみを提供したほうが良いと思います。


まだ、多少問題などありますが、
利用者にもサイト提供者にもメリットがある
仕組みなので良い方向性だと思います。


今後、ユーザ情報を提供する拡張仕様についても
調べてみる予定です。

*1:OpenIDプロバイダの略。認証サーバ。

*2:認証依存サイト。認証をしてほしいサイト。

*3:ユーザを特定する識別子。URLまたはXRI