前回のおさらい
前回はRPのサンプルをRails上で動作させました。 この時に使用したRailsのアクションをまとめておきます。
- ConsumerController#begin
- OpenIDリクエストを生成するRailsのアクション。
- ConsumerController#complete
- OpenIDレスポンスを受信するRailsのアクション。
OpenIDの一番の特徴は,
- Discovery
- 利用者が入力したOpenIDアカウント名
(User-Supplied Identifier) を元にOPのログイン画面 (OP Endpoint URL) を見つける。 - SREG
- OpenIDの拡張領域を使って利用者のメールアドレスなどをOPとRPで交換する。
Discovery…OpenIDアカウント名からOPのログイン画面を見つける
前回のサンプルでは,
# ユーザが入力したopenid_identifierを元にOpenIDリクエストを作成
17 oidreq = consumer.begin(params[:openid_identifier])
consumerはOpenID::Consumerクラスのオブジェクトで,
# 利用者をOPのログイン画面(OP EndPoint)へと誘導する
47 redirect_to oidreq.redirect_url(realm, return_to, params[:immediate])
ここで重要なのは,
- はてな
- 利用者が入力したOpenIDアカウント名
(User-Supplied Identifier) - http://
www. hatena. ne. jp/ kmachu/ - OPのエンドポイントURL
(OP Endpoint URL) - http://
www. hatena. ne. jp/ openid/ server
- 利用者が入力したOpenIDアカウント名
- Yahoo!
- 利用者が入力したOpenIDアカウント名
(User-Supplied Identifier) - yahoo.
com - OPのエンドポイントURL
(OP Endpoint URL) - https://
open. login. yahooapis. com/ openid/ op/ auth
- 利用者が入力したOpenIDアカウント名
OpenIDでは不特定多数のOPが存在するため,
- HTMLの中にOPのエンドポイントURLを記述する
- YadisとXRDSを用いる
概念を説明するよりも,
discoveryコマンドを使って認証サーバを見つけよう
ruby-openidライブラリには,
ruby-openid-2.0.4/examples/discover
まず,
$ ./discover http://www.hatena.ne.jp/kmachu/ ================================================== Running discovery on http://www.hatena.ne.jp/kmachu/ Claimed identifier: http://www.hatena.ne.jp/kmachu/ Discovered services: 1. Server URL : http://www.hatena.ne.jp/openid/server Type URIs: * http://openid.net/signon/1.1
Claimed identifierが入力したOpenIDアカウント名です。
discoverコマンドはこのURLを元にdiscoveryを行い,
Yahoo!でも試してみましょう。
Yahoo!の場合は利用者のOpenIDアカウント名ではなくyahoo.
$ ./discover yahoo.com Running discovery on yahoo.com Claimed identifier: http://www.yahoo.com/ Discovered services: 1. Server URL : https://open.login.yahooapis.com/openid/op/auth Type URIs: * http://specs.openid.net/auth/2.0/server * http://specs.openid.net/extensions/pape/1.0
はてなの例と同じように,
なお,
$ ./discover http://www.hatena.ne.jp/ ================================================== Running discovery on http://www.hatena.ne.jp/ Claimed identifier: http://www.hatena.ne.jp/ No OpenID services found