理想未来ってなんやねん

娘可愛い。お父さん頑張る。

OpenID

自己紹介

全員の自己紹介

概要

「1つのIDをインターネット上で無料かつ簡単に使うための仕組み」
利用者の認証を外部のサービスに任せる仕組み。
Yahooやはてなのアカウントを持っていれば認証できるようになる。

主な用語

OP(OpenID Provider)

OpenIDによる認証サービスの提供者

RP(Relying Party)

OpenIDによる認証を受け入れるサイト

Claimed Identifer

利用者のOpenIDアカウント名

OpenIDの認証の仕組み

             5.利用者の認証(パスワード) +------------+
      +-------------------------------->|認証サービス|
      |      +------------------------->|    (OP)    |
+----------+ | +------------------------|            |
|利  用  者| | |6.認証応答              +------------+
|          | | |                             ^  |
|(END USER)| | | (OpenID Response)           |  | 3.鍵共有
|          | | |                 2.Discovery |  V 
+----------+ | |                        +------------+
      |      | +----------------------->| 対応サイト |
      |      |4.認証要求(OpenID Request)|            |
      |      +--------------------------|    (RP)    |
      +-------------------------------->|            |
              1.ID(URL)の提示           +------------+
                                        7.認証応答の検証

OpenIDのログイン方法には2種類ある

  • OpenIDのアカウント名を入力してログインする(はてなの例)
  • OPのURLを入力してログインする(Yahoo!の例)

余談

OpenID 1.xはセキュリティ的にまずかった。
YahooはOpenID 2.xにしか対応していない。
先日OpenIDの勉強会があった。
ビジネス的に野村証券さんが関わっているらしい。。。

使ってみる

ruby-openid

RubyOpenIDライブラリ
インストール

sudo gem install ruby-openid
サンプルを動かしてみる

サンプルのコピー

cp -r /opt/local/lib/ruby/gems/1.8/gems/ruby-openid-2.0.4/examples/rails_openid rails_openid
cd rails_openid

Railsを動かすために必要なlog、dbディレクトリを作成する

mkdir log db

サーバーを2つ動かす。

ruby script/server --port=3000
ruby script/server --port=3001

一つは認証サーバー
もう一つはRP
同じスクリプトなのでどちらがどちらでも構わないが、説明の便宜上3000の方を認証サーバーとして扱い、3001の方をRPとして扱う。

認証サーバー http://localhost:3000/ にアクセスする。
サンプルではテキストボックスにnameを入れてLoginをクリックすると勝手にユーザーを作るようになっているので、とりあえずtestを入力して、loginをクリックする。

Your OpenID URL is http://localhost:3000/user/test

と表示されるので、『http://localhost:3000/user/test』がOpenIDになる

RP http://localhost:3001/consumer にアクセスする。
テキストボックスに、http://localhost:3000/user/testと入力して、Verifyを押す。

ここまでで時間切れ

OpenID Authentication

RailsOpenIDプラグイン
ruby-openidライブラリーのラッパー。
OpenID Authenticationプラグインを使うことで、ruby-openidライブラリをそのまま使うよりも簡単に、OpenIDRailsアプリケーションに組み込むことができる。