Herokuで作るdevise認証サイト
Upcoming SlideShare
Loading in...5
×
 

Herokuで作るdevise認証サイト

on

  • 9,830 views

2012.5.29【第2回】渋谷Railsだったり勉強会での発表資料

2012.5.29【第2回】渋谷Railsだったり勉強会での発表資料

Statistics

Views

Total Views
9,830
Views on SlideShare
9,020
Embed Views
810

Actions

Likes
19
Downloads
21
Comments
0

13 Embeds 810

http://d.hatena.ne.jp 583
http://www.socialtoprunners.com 91
http://www.socialtoprunners.jp 62
http://yukihariguchi.com 41
http://webcache.googleusercontent.com 12
https://twitter.com 8
http://feedplanets.com 6
http://favtile.com 2
http://translate.googleusercontent.com 1
http://www.hanrss.com 1
http://s.deeeki.com 1
http://www35.jimdo.com 1
http://localhost 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n

Herokuで作るdevise認証サイト Herokuで作るdevise認証サイト Presentation Transcript

  • Herokuで作るDevise 認証サイト2012.5.29 【第2回】渋谷Railsだったり勉強会 @iR3 iRubySystems 福井修
  • 福井修 自己紹介Twitter:iR3  Facebook:fukui.osamuRuby大好き中年です。1977/4より日立大みか工場で、鉄鋼向けプラント制御システム構築に従事。以後様々なシステム構築36年。2001/5 初RubyはRuby1.42002/11 より関西でRubyの集まりを立上→ Ruby@関西2009/4 iRubySystems設立。 販売管理、在庫管理システムなど構築中。http://irubysystems.com最近は sendagaya.rb に出没中。 2
  • 2002年KOFにて Matzを囲む
  • はじめに結論から
  • 良い道具で  良いもの        をつくる
  • Devise を使っていますか?
  • OmniAuth を使っていますか?
  • バイブルには認証の説明はOmniAuth のみ
  • http://www.machu.jp/diary/20110522.html#p01
  • 重要な指摘!!!• 単なる OAuth 2.0 を認証に使うと、車が 通れるほどのどでかいセキュリティー・ ホールができる• http://www.sakimura.org/ 2012/02/1487/
  • • OAuth 2.0 の Client は、そのClient (サ イト)にログインしたすべての人になりす まして、任意の他のOAuth 対応サイトに ログインできるのです。• これは、OAuth の問題ではありません。
  • • OAuth は Authorization Delegation Protocol = 認可をデリゲーションするた めのプロトコルであって、ユーザ認証の ためのプロトコルではないからです。 はっきり言って、楽ちんだからといっ て、それを単体で認証の代わりに使って いる方が悪い。 と崎村夏彦 @_natさんが 御指摘されています!!
  • OAuthの意味• OpenIDは紹介状、OAuthは合 http://www.sakimura.org/ 2011/05/1087/ ここの説明が秀逸。必見!!
  • で結局どうなの?• TwitterはOAuth1.xなので該当しない• Facebookはトークンのチェック機構あり• トークン(合 )の管理重要!• OpenID Connectが安全• GoogleはOpenID。 OmniAuthも対応済み• id,パスワード認証もまだまだ現役
  • Deviseとは?Devise は Warden をベースにした Rails のための  柔軟で高機能な認証ライブラリRackベースRails エンジンに基づいた完全な MVC ソリューション必要な部分だけ使えるモジュラー構造2012.5.29現在 devise2.1 で12モジュール構成
  • 仕様/サンプル/参考本家 https://github.com/plataformatec/devise説明書 http://rubydoc.info/github/plataformatec/devise/master/framesAn example Rails 3.2 app with Devise and RSpec and Cucumber. With a tutorial. https://github.com/RailsApps/rails3-devise-rspec-cucumberユーザー認証エンジン「Devise」の参考記事まとめ   http://codenote.net/ruby/rails/1007.html
  • 認証ライブラリの変遷 CGI時代 Rails1 Rails2 Rails3 当初Clearance/ acts_as_authent restful_authent Authlogic個別作り込み icated ication ,warden 徐々にdevise
  • 認証ライブラリの変遷続き自分で0から実装するよりライブラリが便利なのは明らかなので現状では、deviseがほぼ定番化。但し 新しいライブラリも登場。Sorcery :Rails 3 or Sinatra 用のシンプルな認証ライブラリ@jugyoさんの日本語訳 http://blog.twiwt.org/e/63070f
  • deviseインストールGemfileに指定を追加 gem devise$ bundle installdeviseの環境準備$ rails generate devise:installこの結果に手順が出力されます。以下 @fukajunさんの次のサイトの記事がおすすめです。http://kitbc.s41.xrea.com/main/?use_devise
  • i18n日本語対応 i18n で日本語辞書を対応づけて翻訳Gemfile.rockでi18nのgemを確認。defaultで入る。 activesupport (3.2.3) i18n (~> 0.6)locale設定を日本語にする。config.application.rb # config.i18n.default_locale = :de config.i18n.default_locale = :ja
  • i18nの翻訳辞書ファイル翻訳辞書追加config/locales下にja.yamlattributes.ja.yamldevise.ja.ymlhelpers.ja.yml
  • i18n日本語対応 i18n で日本語辞書を対応づけて翻訳ja.yamlhttp://github.com/svenfuchs/rails-i18n/tree/master/rails/localeより入手。 deviseに限らず日付時刻表記など一般的なもの ja: date: formats: default: "%Y/%m/%d" short: "%m/%d" long: "%Y年%m月%d日(%a)" day_names: - 日曜日     :
  • i18n日本語対応翻訳辞書追加config/locales下にattributes.ja.yaml ja:テーブル定義の activerecord: attributes: 項目名 user: email: メールアドレス password: パスワード password_confirmation: パスワード(再入力) remember_me: 次回からパスワードを省く
  • i18n日本語化helpers.ja.yml ja: helpers: submit:form文の文言 create: "登録する" update: "更新する" submit: "保存する" label: user: email: "メールアドレス" password: "パスワード"
  • devise日本語対応 ja:devise.ja.yml "Sign in": サインイン "Registration": ユーザ登録 "Sign up": ユーザ登録する "Forgot your password?": パスワード忘れはこちら "Send me reset password instructions": パスワード再発行 "Resend confirmation instructions": パスワード再発行 errors:エラーメッセージ messages: not_found: "は見つかりませんでした。" # not_found: "not found" already_confirmed: "は既に登録済みです。" # already_confirmed: "was already confirmed" not_locked: "はサインイン可能です。" # not_locked: "was not locked" devise: failure: unauthenticated: サインインしてください。 # unauthenticated: You need to sign in or sign up before continuing. unconfirmed: 本登録を行ってください。
  • i18n翻訳ファイル2012.5.12時点のファイルを以下に置いてあるのでご参考に。https://github.com/ir3/tatekoto/tree/master/config/locales
  • ではdeviseをHerokuで動作させましょう
  • Heroku を使っていますか?
  • Herokuとは?PaaS : Platform As A Service のひとつRailsが動作するので、かつては知る人ぞ知る存在であった。2010年末Heroku社はSalesForceに買収され経営基盤が盤石に。2011年7月Matz(Rubyの父まつもとゆきひろ氏)がチーフアーキテクトに就任。2011年12月RubyパッチモンスターなかださんもJoin2012年2月 エンタープライズRailsを頑張った@ayuminもJoin2012年4月 Ruby1.9 VM(旧YARV)の東大ささださんもJoin今やRubyistにとって何か特別の存在に。
  • Heroku参考情報Heroku開発本家 https://devcenter.heroku.com/Heroku-ja Meetup #1 スライドまとめhttp://codenote.net/heroku/274.html
  • Heroku いいよ♪Heroku! しかし....
  • さて そびえる Git 山
  • Heroku を使うには英語とGitを避けて通れない のでやるしかない!
  • いまさらながらGit入門Rails勉強会@東京第33回の岩松信洋さんのGitの講演2008.9 http://www.ustream.tv/recorded/746377@ppworksさんのgit講座 2012.5 http://www.slideshare.net/naotokoshikawa/p4p20120408-12520711ProGit日本語訳 http://git-scm.com/book/ja
  • ローカルGitリポジトリ$rails new hoge Railsプロジェクト作成$cd hoge プロジェクトホームへ$git init$git add . リポジトリ初期化$git commit -m ‘hoge start’ 変更分をindex登録 ローカルリポジトリcommit
  • Heroku登録のコツproductionのみPostgreSQLを使う(development,testはsqlite3)Gemfileに次の分岐 group :production do gem pg end group :development, :test do gem sqlite3 : end
  • Herokuに登録Herokuリポジトリ作成$ heroku create hoge --stack cedarリモートリポジトリにpush$ git push heroku masterDB migrate$ heroku run rake db:migrateHeroku 公開確認$ heroku open
  • Heroku で作るDevise認証サイトhttp://tatekoto.herokuapp.com/https://github.com/ir3/tatekoto ご清聴ありがとうございました
  • Registerableはじめのユーザ登録処理登録プロセスを通してサインアップ処理。また、アカウントを編集・削除。
  • Database Authenticatableユーザーがサインインする時に認証するためにパスワードをデータベースに暗号化し保存。この認証は POST リクエストまたはBasic認証を通して行われる。
  • Token Authenticatable! 登録が済んでいれば、id,パスワードでログイン。 今どきサインインという("single access token"として知られる)認証トークンに基づいてサインインします。この認証トークンはクエリ文字列またはBasic認証を通して与えらる。
  • Confirmable 必要であればメールでの確認もできる確認のためにEメールを送り、サインインの際に既に確認されたかどうか検査
  • Recorverbleパスワード忘れ時には、パスワードのリセットができる パスワードをリセットし、リセットの指示を送る。
  • Rememberableユーザーを記憶するために、保存されたクッキーから、トークンを生成・消去。
  • Trackableサインインのカウント・タイムスタンプ・IPアドレスを記録。
  • Timeoutable特定の期間に活動がなかった場合、セッションを破棄します。
  • ValidatableEメールとパスワードによる確認。これは、オプションでカスタマイズできるので、専用の確認を定義できる。
  • Lockableサインインの試みが特定の回数失敗したらアカウントをロック。Eメール、または、特定の期間の後、アンロック。