第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の仕様を改めて復習してみよう

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30