Edit
OpenIDとは

OpenIDとは、ユーザー認証をすでにユーザー登録しているサイトのログイン機構を利用して、他のサイトにログインできるようにする仕組みである。簡単な処理フローは以下の通り。

  1. https://www.mysite.com/(例) を表示すると、OpenID対応のログインページがある。ここで、利用したい、すでにアカウントを持っているサイト(ここではyahooを例にする)のアドレスを入力するか、またはボタンを押す。
  2. ボタンを押すと、Yahooのサイトにジャンプし、yahooのログイン画面でyahooにログインする。もちろんyahooIDとyahooのパスワードを入力するが、ここのポイントは、https://www.mysite.com/のサイトでパスワードを入力するわけではなく、あくまでyahooのサイトで、正式なログインを行う。
  3. yahooサイトが正式なユーザーを認証すると、yahooはyahooIDとは関係ない、ユニークなIDやログインした人のニックネームなどの情報をhttps://www.mysite.com/のサイトに渡して、画面を元の画面に戻す。
  4. こうしてyahooIDを、https://www.mysite.com/に知られることなく、本人の認証が可能となる。

Edit
ライブラリ

OpenIDには非常に便利なライブラリが準備されている。以下はそれらのライブラリについての説明となる。

Edit
OpenID Enabled.comによるライブラリ

現在、OpenIDの標準的なライブラリともいえる、このライブラリは、PHP, Python, Rubyの3種類のスクリプトに対応しており、一番使いやすいといえる。

Edit
ダウンロード

ここでは、PHPによるOpenID利用の設定を考える。

# wget http://openidenabled.com/files/php-openid/packages/php-openid-2.1.3.tar.bz2
# bzip2 -d php-openid-2.1.3.tar.bz2
# tar xvf php-openid-2.1.3.tar

出来上がったフォルダから、必要なプログラムを自分のサイトにコピーする。基本的にはAuth フォルダ以下のものをコピーすれば必要なものは存在する。とりあえずは、webサーバーのドキュメントフォルダの直下においておくと良いだろう。(後のテストで便利)

Edit
PHPの設定

PHPのコンフィグ設定時に、./configureに--with-opensslとして、opensslを利用できるように設定する必要がある。

# ./configure ............... --with-openssl  <- 他のオプションはそれぞれに。

またsslを同梱したPHPを作成後は、httpdの再起動も忘れないようにする。

# service httpd restart

Edit
証明書が必要なサイトの場合。

  1. yahoo.co.jpのOpenIDでは証明書を必要としないが、mixiなどのサイトでは、証明書を必要とする。そのため、https;//mixi.jp/ のページを開き、ブラウザの証明書を見る画面から、証明書のexportを行う必要がある。
  2. exportには、「証明書パスを含むX.509証明書(PEM)」の形式で .crt ファイルを出力し、サーバの /etc/pki/tls/certs/ の以下のフォルダにある ca-bundle.crt ファイルに追記する。
    # cat mixi.jp.crt >> /usr/share/ssl/certs/ca-bundle.crt

Edit
テスト

ダウンロードした、OpenIDライブラリの中には テストできるプログラムがおいてある。

http://localhost/php-openid-2.1.3/examples/consumer/

このページに、yahooなら、「yahoo.co.jp」。mixiなら、「mixi.jp」と入力することで早速OpenIDの動作が確認できる。

Edit
セキュリティについて

Edit
XSS

Edit
参考リンク