TOP情報セキュリティ> 第3回:IdPサンプルでログイン機能を実装 (1/3)




使って広がるOpenIDの輪

使って広がるOpenIDの輪

第3回:IdPサンプルでログイン機能を実装

著者:はてな  水野 貴明

公開日:2007/12/20(木)

IdPを立ててみよう

第2回:PHPで作ろうConsumer」では、PHP-OpenIDのサンプルを利用して、Consumerを作成しました。今回は引き続き「Identity Provider(以下、IdP)」を作成します。OpenIDはオープンな規格のため、自分でIdPを立ち上げることも可能なのです。

前回利用したPHP-OpenIDのバージョン2にもIdPのサンプルは含まれていますが、OpenID 2.0を使う仕様となっています。OpenID 2.0は現時点で仕様が決まったばかりであり、クライアントの中には非対応のものも存在しています。このため、今回はPHP-OpenID 1.0系のライブラリを使ったサンプルにて解説を行います。PHP-OpenID 1.0系のライブラリの現時点での最新版は1.2.3です。配布元(http://www.openidenabled.com/php-openid/)からダウンロードしてください。

IdPの立ち上げに必要なのは「examples」に収められた「server」ディレクトリと、ライブラリが格納されている「Auth」および「Sercvices」ディレクトリの3つです(PHP-OpenID 2.XではServicesディレクトリはAuthに統合されていました)。なお、後述するserver.phpが動作するために「GMP(http://gmplib.org/)」ライブラリが必要なため、PHPのインストール時に「--with-gmp」を指定し、PHPからもこのライブラリが使えるようにしておく必要があります。

IdPはConsumerと違い、ただファイルをサーバ上にコピーしただけでは使えず、設定ファイル「config.php」を用意する必要があります。サンプルにはconfig.phpを自動生成するための「setup.php」が付属しています。Webブラウザからsetup.phpにアクセスし、サーバのURL(サンプル中のserver.phpを置く場所)と、データ保存方式(ファイルに保存するか、MySQLなどのデータベースか)、さらに作成するユーザのIdentifier URLとパスワードをそれぞれ指定することでconfig.phpを生成・表示できます。

config.php作成の流れ
図1:config.php作成の流れ
(画像をクリックすると別ウィンドウに拡大図を表示します)

このIdentifier URLとパスワードのセットは複数設定可能で、IdPに必要なログイン/ログアウトシステムを提供します。あらかじめ、テストに利用するIdentifier URLを決め、同時にパスワードを設定しておきましょう。

最後に「Generate Configuration」ボタンを押すと、PHPのコードが生成されます。これを「config.php」という名前でコピーして、server.phpと同じディレクトリに保存しておきます。

server.phpに直接アクセスすると、Identifier URLに埋め込むべきlink要素とcheck用のログインフォームが表示されるので、これらをIdentifier URLに記述しておきます。さらに、右上の「Log In」リンクからログイン画面にアクセスし、先ほどsetup.phpで指定したIdentifier URLとパスワードを入力します。ログインが完了すると画面上部にログインしているIdentifier URLが表示されます。

このIdPを利用して、ログインをしてみましょう。例えばOpenID関連のサイトを集めているディレクトリサービス
「OpenIDDirectory(http://openiddirectory.com/)」にログインしてみます。

ログインアカウントとして、準備しておいたIdentifier URLを入力すると、IdPの「Trust This Site」というページにアクセスします。ここで、「Confirm」をクリックすると、ログインが行われるはずです。もし、サーバ側でログインをしていなかった場合は、ログインページが表示されます(setup.phpで設定したIdentifirer URLとパスワードでログインします)。

「Trust This Site」で、「Remember this decision」というチェックボックスにチェックを入れてから「Confirm」を行った場合、その情報は保持され、次回からこのサイトのログイン時には「Trust This Site」の確認画面は出なくなります。そして、その情報は、サーバのURLに直接アクセスした際に上部に表示される「Remembered Sites」というリンクをクリックすれば、その一覧を表示したり、情報を削除することができます。

このように、サンプルにはこれまでおそらく皆さんもみたことのある、IdPの基本的な機能が用意されています。 次のページ


1   2  3  次のページ


株式会社はてな 水野 貴明
著者プロフィール
株式会社はてな  水野 貴明
1973年東京生まれ。エンジニア兼技術系ライター。株式会社はてな勤務。近著に「俺流Amazonの作り方」(アスキー)、「詳解RSS〜RSSを利用したサービスの理論と実践」(ディー・アート)など。趣味はラテン音楽と海外旅行と神輿。主な原稿の執筆場所はスターバックスと通勤電車の中。


この記事の評価をお聞かせください
ボタンをクリックしますとウインドウが開きます。

INDEX
第3回:IdPサンプルでログイン機能を実装
IdPを立ててみよう
  サンプルの中をみてみよう
  IdPでのログインと認証の関係を見てみる
使って広がるOpenIDの輪
第1回 2行で簡単Identifierをはじめよう
第2回 PHPで作ろうConsumer
第3回 IdPサンプルでログイン機能を実装
第4回 OpenIDの仕様を改めて復習してみよう