いますぐ使えるOpenID

第2回 OpenIDライブラリに付属しているRPサーバを動かしてみる

この記事を読むのに必要な時間:およそ 3 分

連載の第1回では既存サービスを例にして,OP(OpenID Provider)が提供するOpenIDアカウントでRP(Relying Party)へのログインを試してみました。

今回からは,自分でOpenIDに対応したRPを動かしながら,OpenIDの使い方を説明していきます。

第2回ではOpenIDに対応したライブラリを紹介し,Ruby用のライブラリを使ってRPのサンプルを動作させてみましょう。

OpenIDの対応ライブラリ

OpenIDアカウントでログイン可能なサイト(RP)を作るためには,OpenIDの仕様で定められたプロトコルに準拠しなければいけません。

幸い, OpenIDの仕様に対応した各言語のライブラリがオープンソースとして公開されています。これらのライブラリを使うことで,OpenIDの細かなプロトコルを自分でプログラミングしなくて良いようになっています。

ここでは,いくつかのOpenID対応ライブラリをご紹介します。

OpenID Enabledのライブラリ

openidenabled.comというサイトにて,JanRain, Inc.が実装したOpenIDライブラリが公開されています。

対応言語はPHP,Python,Rubyの3種類です。いずれもOpenIDのバージョン2に対応しています。JanRain, Inc.はmyOpenIDというOPも運営しています。

code.sixapart.comのライブラリ

PerlでのOpenIDライブラリは,Six Apart Codeリポジトリにて公開されているモジュールに,limilic.comで公開されているパッチを当てたものが使われているようです。

詳しくはYappoLogsのエントリが参考になります。

それでは,Ruby用のOpenIDに付属しているRailsのサンプルを動かしてみましょう。

RailsでOpenID対応のRPを動かしてみよう

こんどは,自前のRPサーバを動かしてみましょう。Rubyで使えるOpenIDライブラリとして,ruby-openidというものがあります。ruby-openidにはRailsのサンプルも付属しているので,それを使用します。筆者はMac OS X上で動かしましたが,Railsが使える環境であれば他のOSでも大丈夫です。

ここでは,以下の環境を想定しています。すでにRailsを動かしているのであれば,RubyGemsもインストールされているでしょう。

  • Ruby1.8.6
  • RubyGems1.0.2
  • Rails2.0.2

OpenIDライブラリのインストール

Ruby用のOpenIDライブラリであるruby-openidのバージョンは2.0.4です。このライブラリはOpenID Authentication 2.0に対応しています。

ruby-openidは以下のようにRubyGemsを使ってインストールします。

$ sudo gem install ruby-openid

正しくインストールされたかどうかは,listコマンドで確認できます。

$ gem list
*** LOCAL GEMS ***
(中略)
rails (2.0.2)
rake (0.8.1)
ruby-openid (2.0.4)

RubyGemsでruby-openidをインストールすると,ライブラリの一式は下記のディレクトリにコピーされます。 ここで,${RUBYLIB}はRubyライブラリのインストール先に読み替えてください。 一般的には/usr/lib/rubyや/usr/local/lib/rubyが相当します。

${RUBYLIB}/gems/1.8/gems/ruby-openid-2.0.4

このディレクトリには,ライブラリ本体以外にサンプルやテストも同時にインストールされます。 READMEやCHANGELOGに目を通されておくといいでしょう。

Railsサンプルの起動

ruby-openidライブラリには,Railsを使ったOPとRPのサンプルが含まれています。 これらのサンプルはライブラリインストール先のexample/rails-openidにあります。 まず,このディレクトリをどこか適当な場所にコピーしてください。

$ cp -r example/rails-openid $HOME/openid
$ cd $HOME/openid/rails-openid

Railsを動かすために,必要なlog,dbディレクトリを作成します。

$ mkdir log db

なお,ruby-openidに付属するRailsのサンプルでは,Rails2.0を動作させるために必要なセッションCookieの設定が書かれていません。そのため,設定ファイルにセッションの設定を追記する必要があります。下記のように:session_key, :secretを設定してください。 secretは30文字以降のランダムな文字列です。

$ vi config/environment.rb
  config.action_controller.session = {
    :session_key => '_openid_session',
    :secret      => 'c67504f48.....7e2557bc0'
  }

準備ができたらRailsサーバを起動します。

ruby script/server

ブラウザでhttp://サーバのアドレス:3000/consumerにアクセスしてログイン画面が表示されれば起動成功です。

図1

著者プロフィール

松岡浩平(まつおかこうへい)

NTTコムウェア株式会社にて,オープンソースを活用した認証システムの開発を担当しています。ここ2年は,情報セキュリティ大学院大学に通学しながら,OpenIDを使った認証システムについて研究していました。

コメント

コメントの記入