Suche senden
Hochladen
OpenID with Rails
•
2 gefällt mir
•
1,542 views
Kohei MATSUOKA
Folgen
Technologie
Diashow-Anzeige
Melden
Teilen
Diashow-Anzeige
Melden
Teilen
1 von 58
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
Reporte excel 2 continuación diseño de una factura en excel
Reporte excel 2 continuación diseño de una factura en excel
Alberto Luna Castañeda
Factura Electronica
Factura Electronica
JdJuan Guadalinfo
Testing with Node.js
Testing with Node.js
Jonathan Waller
Effective Hyper-V - 久しぶりエディション
Effective Hyper-V - 久しぶりエディション
Kuninobu SaSaki
Proyecto factura excel creando clientes y almacenando en una base de datos
Proyecto factura excel creando clientes y almacenando en una base de datos
JFKSOFT CORP.
Buried Treasure: NJLA Adult Services Forum Presentation
Buried Treasure: NJLA Adult Services Forum Presentation
Miraida Morales
Bluetooth 4.0 specification
Bluetooth 4.0 specification
abhiamanchopra
RubyからJavaScriptへ (!tDiary会議 2011)
RubyからJavaScriptへ (!tDiary会議 2011)
Kohei MATSUOKA
Empfohlen
Reporte excel 2 continuación diseño de una factura en excel
Reporte excel 2 continuación diseño de una factura en excel
Alberto Luna Castañeda
Factura Electronica
Factura Electronica
JdJuan Guadalinfo
Testing with Node.js
Testing with Node.js
Jonathan Waller
Effective Hyper-V - 久しぶりエディション
Effective Hyper-V - 久しぶりエディション
Kuninobu SaSaki
Proyecto factura excel creando clientes y almacenando en una base de datos
Proyecto factura excel creando clientes y almacenando en una base de datos
JFKSOFT CORP.
Buried Treasure: NJLA Adult Services Forum Presentation
Buried Treasure: NJLA Adult Services Forum Presentation
Miraida Morales
Bluetooth 4.0 specification
Bluetooth 4.0 specification
abhiamanchopra
RubyからJavaScriptへ (!tDiary会議 2011)
RubyからJavaScriptへ (!tDiary会議 2011)
Kohei MATSUOKA
PStore and Memcached benchmark
PStore and Memcached benchmark
Kohei MATSUOKA
How does the Waterfall model survive?
How does the Waterfall model survive?
Kohei MATSUOKA
OpenID Introduction
OpenID Introduction
Kohei MATSUOKA
Secured Authentication Method for Managing Consumer-Generated Information in ...
Secured Authentication Method for Managing Consumer-Generated Information in ...
Kohei MATSUOKA
about Shibuya.trac naming
about Shibuya.trac naming
Kohei MATSUOKA
ID Management
ID Management
Kohei MATSUOKA
yet another TDD
yet another TDD
Kohei MATSUOKA
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
Weitere ähnliche Inhalte
Mehr von Kohei MATSUOKA
PStore and Memcached benchmark
PStore and Memcached benchmark
Kohei MATSUOKA
How does the Waterfall model survive?
How does the Waterfall model survive?
Kohei MATSUOKA
OpenID Introduction
OpenID Introduction
Kohei MATSUOKA
Secured Authentication Method for Managing Consumer-Generated Information in ...
Secured Authentication Method for Managing Consumer-Generated Information in ...
Kohei MATSUOKA
about Shibuya.trac naming
about Shibuya.trac naming
Kohei MATSUOKA
ID Management
ID Management
Kohei MATSUOKA
yet another TDD
yet another TDD
Kohei MATSUOKA
Mehr von Kohei MATSUOKA
(7)
PStore and Memcached benchmark
PStore and Memcached benchmark
How does the Waterfall model survive?
How does the Waterfall model survive?
OpenID Introduction
OpenID Introduction
Secured Authentication Method for Managing Consumer-Generated Information in ...
Secured Authentication Method for Managing Consumer-Generated Information in ...
about Shibuya.trac naming
about Shibuya.trac naming
ID Management
ID Management
yet another TDD
yet another TDD
Kürzlich hochgeladen
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
Kürzlich hochgeladen
(9)
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
OpenID with Rails
1.
Ruby on Railsで作る OpenID対応サイト Identity
Conference #3 MATSUOKA Kohei <kohei@machu.jp> 1
2.
今日のテーマ RailsでOpenID対応サイト (RP) を作るには? Railsをつかって駆け足でRPを作成します セキュリティやSREGでの属性取得も少々 そろそろマイミク認証について一言いっておくか
2
3.
背景 2007年以降、OpenID発行サイトが充実 はてな、livedoor、Yahoo! Japan、そしてmixi でも、対応サイトが少ない Railsを使ってRPサイトを作ってみよう
3
4.
宣伝 gihyo.jp いますぐ使えるOpenID http://gihyo.jp/dev/
feature/01/openid 4
5.
作成するアプリ 簡単なチャット OpenIDでログイン mixiのニックネーム
を取得 マイミク認証 Mac OS X + NetBeans 6.1で開発 5
6.
NetBeans 統合開発環境 JRuby, CRuby,
Rails サーバの起動停止 コード補完 なかなか便利
7.
ライブラリのインストール OpenIDを利用するために必要な ライブラリとプラグインを導入します
7
8.
アプリの構成 Ruby 1.8.6-p111, Ruby
on Rails 2.1 ruby-openidライブラリ Restful Authenticationプラグイン OpenID Authenticationプラグイン 8
9.
ruby-openid sudo gem install
ruby-openid RubyでOpenIDを扱うための基本的なライブラリ http://openidenabled.com/ruby-openid/ PHP, Pythonにも同様のライブラリあり 9
10.
Railsプラグインの導入 プロジェクトを右クリックして、 「Railsプラグイン」を選択
10
11.
RESTful Authentication 認証機能の枠組み
処理 メソッド パス RESTfulな設計 ユーザ登録 POST /users OpenID Authプラ ログイン POST /sessions グインと組み合わせ て利用 ログアウト DELETE /sessions 11
12.
OpenID Authentication ruby_openidライブラリのRails向けラッパー
OpenID Providerとのやりとりを担当 authenticate_with_open_id do ¦result, identity_url¦ if result.successful? # 認証成功 else # 認証失敗 end 12
13.
5分でできる(ry サンプルの認証機能以外を作成します。 よくあるRailsチュートリアルと同じです。
13
14.
チャットのひな形を作成 script/generate scaffold message
title:string rake db:migrate script/server -> Railsサーバ (mongrel) が起動 14
15.
チャットのひな形を作成 画面をチャット風に修正
15
16.
認証機能の組み込み RESTful Authenticationプラグインを使って アプリに認証機能を組み込みます
16
17.
RESTful Authentication 認証のためのひながたを作成できる ./script/generate authenticated
user sessions 17
18.
自動生成されるファイル 種別
名称 役割 モデル User ユーザ情報を保存 UsersController ユーザ登録 コントローラ SessionsController ログイン、ログアウト users/new ユーザ登録画面 ビュー sessions/new ログイン画面 18
19.
ユーザ登録 画面遷移
/users/new チャット /messages ログイン /sessions/new 19
20.
認証と認可 class ApplicationController <
ActionController::Base include AuthenticatedSystem class MessagesController < ApplicationController before_filter :login_required, :except => [:index, :show] チャットの書き込みにはログインが必要 AuthenticatedSystemをインクルード フィルタでlogin_requiredメソッドを呼び出す 20
21.
AuthenticatedSystem コントローラに
login_required includeして使用 authorized? 認可 認証と認可に必要なメ logged_in? ソッドを定義 ログインの有無を判定 メソッドをオーバーラ NG イドすることでカスタ access_denied マイズ可能 アクセス拒否時の動作を定義 21
22.
OpenID認証への対応 OpenID Authenticationプラグインを使って パスワード認証からOpenID認証へ変更します
22
23.
OpenID認証への対応 RESTful Authenticationプラグインで作成した ひながたを元にOpenID認証に対応します 変更箇所 データベース
ログイン処理(コントローラ) ログイン画面、ユーザ登録画面(ビュー)
24.
データベースの更新 OpenIDライブラリが使用するテーブルを自動生成 rake open_id_authentication:db:create open_id_authentication_associations
open_id_authentication_nonces 24
25.
データベースの更新 usersテーブルにidentity_url属性を追加 OpenIDのVerified Identifierを保存するため rake
db:migrateを実行してDBスキーマを更新 25
26.
ログイン 画面遷移 チャット
ログイン ユーザ登録 処理 ※ ログイン→ユーザ登録となる 26
27.
ログイン処理の修正 パスワード認証をOpenID認証へ Sessionsコントローラのcreateメソッドを修正 OpenID AuthenticationのREADMEを参考 認証成功時に処理を分岐
ユーザ登録済 → セッションCookie発行 ユーザ未登録 → ユーザ登録画面へ 27
28.
ログイン処理の修正 authenticate_with_open_id do ¦result,
identity_url¦ if result.successful? if @current_user = User.find_by_identity_url(identity_url) 認証成功 successful_login else → Cookie発行 # identity_url (Verified Identifier) をセッションに保存 session[:identity_url] = identity_url 認証成功(未登録) # ユーザ登録画面へリダイレクトする redirect_to new_user_path → ユーザ登録へ end else # 認証失敗 認証失敗 flash[:notice] = result.message render :action => 'new' → ログイン画面へ end end ※ OPへのリダイレクト処理は記述不要 28
29.
ログイン画面の修正 OpenIDのアカウント 名を入力 お好みで「○○でログ イン」ボタンを追加
30.
ユーザ登録画面の修正 ニックネームのみ入力し てもらう identity_urlはセッショ ンCookieから取得する セッションCookieを持 たないユーザを拒否
30
31.
セキュリティ RPの基本的なセキュリティ対策である SSL対応(サーバ証明書の検証)について
31
32.
http://d.hatena.ne.jp/ZIGOROu/20080805/1217933206
32
33.
SSL対応の発行サイト mixi.jp でログイン →
ログに警告が出力 WARNING: making https request to https://mixi.jp/xrds_server.pl without verifying server certificate; no CA path was specified. サーバ証明書を発行したCAを信頼していないため でも警告だけで使えてしまう>< DNS Cache Poisoningされるとアウト 33
34.
証明書を検証しないSSLは ほとんど無意味 cf. オレオレ証明書
35.
SSLを 正しく 利用する 信頼していないCAへの接続は拒否する OpenID.fetcher.ca_fileにCAのリストを設定
config/environment.rb あたりに記述 cURLのCAリストを使用した OpenID.fetcher.ca_file = '/usr/share/curl/curl-ca-bundle.crt' 35
36.
SSLを 正しく 利用する OpenID.fetcher.ca_fileを設定 mixi.jpにログイン
警告ではなくエラーで停止 信頼していない証明書は受け入 れない [OPENID] Failed to fetch Yadis URL https://mixi.jp/xrds_server.pl : Error connecting to SSL URL https://mixi.jp/xrds_server.pl: certificate verify failed 36
37.
mixiの場合 id.mixi.jpとmixi.jpでルート証明書が異なる id.mixi.jp …
GTE CyberTrust Global Root mixi.jp … AddTrust External CA Root Mac OS XのcURLはAddTrustが含まれていない Netscape Communicator 4.7の証明書リスト 他のOSでは入っている証明書リストが異なる
38.
証明書リストに追加(1) 「信頼できる経路」を使っ てルート証明書を取得 今回はfirefoxを使う mixi.jpに接続 CA (AddTrust)
の証明書 を選択し、「書き出す」 38
39.
証明書リストに追加(2) BEGIN CERTIFICATEと
-----BEGIN CERTIFICATE----- MIIENjCCAx6gAwIBAgIBATANBgkqhk 書かれたファイル <略> これがCAの証明書 1Z5jJh5VkpTYghdae9C8x49OhgQ= -----END CERTIFICATE----- CAリストの末尾にこのテ キストを貼り付ける 警告もエラーも出ずにログインできるようになる! 39
40.
参考 ruby で mixi
OpenID を呼ぶには http://d.hatena.ne.jp/n_shuyo/20080911/mixi_openid php-openid で mixi のコミュニティ認証を使う http://www.machu.jp/diary/20080918.html#p01 面倒でもちゃんと設定しましょう 40
41.
SREGで属性情報を取得 SREG拡張でmixiユーザのニックネームを 取得します
41
42.
mixiのニックネームを取得 ユーザ登録時のニック ネームの初期値に利用 メールアドレスが取得で きると便利なのに…
42
43.
mixiのニックネームを取得 引数に :optional =>
:nickname を追加するだけ authenticate_with_open_id(params[:openid_url], :optional => :nickname) do ¦result, identity_url, registration¦ if result.successful? if @current_user = User.find_by_identity_url(identity_url) successful_login else # identity_url (Verified Identifier) をセッションに保存 session[:identity_url] = identity_url session[:nickname] = registration['nickname'] # ユーザ登録画面へリダイレクトする redirect_to new_user_path end 43
44.
マイミク認証 mixi独自のマイミク認証を使ってみましょう
44
45.
マイミク認証とは? 自分が誰かのマイミクであることを認証 普通のOpenIDと同じ仕組みで実現! まちゅさんのマイミク https://id.mixi.jp/1741395/friends/
45
46.
マイミク認証の例
47.
マイミク認証の手順 identity_urlからmixiのユーザIDを取得 https://id.mixi.jp/1741395/ 後ろにfriends/を付与してClaimed Identityを生成
https://id.mixi.jp/1741395/friends/ authenticate_with_openidメソッドでマイミク認証 47
48.
認証処理のコード identity_urlの生成以外は普通のOpenID認証と同じ class FriendsController <
ApplicationController def show @user = User.find(params[:user_id]) if @user.identity_url = %r¦^https://id.mixi.jp/d+¦ identity_url = "#{@user.identity_url}/friends" authenticate_with_open_id(identity_url) do ¦result, identity_url¦ unless result.successful? flash[:notice] = "あなたはマイミクではないようです!" redirect_to '/' end end 48
49.
マイミク認証の考察 マイミク認証&コミュニティ認証の 落とし穴・注意点を提起します
49
50.
マイミク認証のおさらい マイミク認証 まちゅさんのマイミク https://id.mixi.jp/1741395/friends/ コミュニティ認証 ニコニコ動画コミュニティの参加者 https://id.mixi.jp/community/1651291/ RPからは普通のOpenIDアカウントと同じにみえる
50
51.
コミュニティIDで ユーザ登録してみる https://id.mixi.jp/community/1651291/
51
52.
登録できた…
52
53.
これって、みんなで使える 共通アカウントが作れる?
54.
そんなことはありません
User Supplied Identifier ログイン前 https://id.mixi.jp/community/1651291/ User Claimed Identifier (openid.claimed_id) https://id.mixi.jp/community/1651291/1741395 ログイン後 個人のID User Verified Identifier (openid.identity) https://id.mixi.jp/1741395
55.
Claimed ID or
Verified ID サービス Claimed ID Verified ID mixi認証 https://id.mixi.jp/1741395 https://id.mixi.jp/1741395 https://id.mixi.jp/community/ コミュニティ認証 1651291/1741395 https://id.mixi.jp/1741395 https://id.mixi.jp/29704/ マイミク認証 friends/1741395 https://id.mixi.jp/1741395 delegate http://www.machu.jp/ https://id.mixi.jp/1741395 55
56.
参考 Relying PartyとIdentityの関連づけについて http://d.hatena.ne.jp/ZIGOROu/20080204/1202115281 RPはClaimed
IDを紐づけるのが正解との結論 56
57.
結論 間違ってもUser Supplied Identifierは記録しない
OpenID Authenticationプラグインを使うとUser Claimed IDが記録される コミュニティ認証やマイミク認証のIDでのユーザ登録 を拒否したければ、RPで個別対応 ここだけClaimed IDではなくVerified IDを記録
58.
おしまい
58
Jetzt herunterladen