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でログインできるような
しくみを提供したほうが良いと思います。
まだ、多少問題などありますが、
利用者にもサイト提供者にもメリットがある
仕組みなので良い方向性だと思います。
今後、ユーザ情報を提供する拡張仕様についても
調べてみる予定です。