Herokuで作るdevise認証サイト

12,877 views

Published on

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

  • Be the first to comment

Herokuで作るdevise認証サイト

  1. 1. Herokuで作るDevise 認証サイト2012.5.29 【第2回】渋谷Railsだったり勉強会 @iR3 iRubySystems 福井修
  2. 2. 福井修 自己紹介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
  3. 3. 2002年KOFにて Matzを囲む
  4. 4. はじめに結論から
  5. 5. 良い道具で  良いもの        をつくる
  6. 6. Devise を使っていますか?
  7. 7. OmniAuth を使っていますか?
  8. 8. バイブルには認証の説明はOmniAuth のみ
  9. 9. http://www.machu.jp/diary/20110522.html#p01
  10. 10. 重要な指摘!!!• 単なる OAuth 2.0 を認証に使うと、車が 通れるほどのどでかいセキュリティー・ ホールができる• http://www.sakimura.org/ 2012/02/1487/
  11. 11. • OAuth 2.0 の Client は、そのClient (サ イト)にログインしたすべての人になりす まして、任意の他のOAuth 対応サイトに ログインできるのです。• これは、OAuth の問題ではありません。
  12. 12. • OAuth は Authorization Delegation Protocol = 認可をデリゲーションするた めのプロトコルであって、ユーザ認証の ためのプロトコルではないからです。 はっきり言って、楽ちんだからといっ て、それを単体で認証の代わりに使って いる方が悪い。 と崎村夏彦 @_natさんが 御指摘されています!!
  13. 13. OAuthの意味• OpenIDは紹介状、OAuthは合 http://www.sakimura.org/ 2011/05/1087/ ここの説明が秀逸。必見!!
  14. 14. で結局どうなの?• TwitterはOAuth1.xなので該当しない• Facebookはトークンのチェック機構あり• トークン(合 )の管理重要!• OpenID Connectが安全• GoogleはOpenID。 OmniAuthも対応済み• id,パスワード認証もまだまだ現役
  15. 15. Deviseとは?Devise は Warden をベースにした Rails のための  柔軟で高機能な認証ライブラリRackベースRails エンジンに基づいた完全な MVC ソリューション必要な部分だけ使えるモジュラー構造2012.5.29現在 devise2.1 で12モジュール構成
  16. 16. 仕様/サンプル/参考本家 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
  17. 17. 認証ライブラリの変遷 CGI時代 Rails1 Rails2 Rails3 当初Clearance/ acts_as_authent restful_authent Authlogic個別作り込み icated ication ,warden 徐々にdevise
  18. 18. 認証ライブラリの変遷続き自分で0から実装するよりライブラリが便利なのは明らかなので現状では、deviseがほぼ定番化。但し 新しいライブラリも登場。Sorcery :Rails 3 or Sinatra 用のシンプルな認証ライブラリ@jugyoさんの日本語訳 http://blog.twiwt.org/e/63070f
  19. 19. deviseインストールGemfileに指定を追加 gem devise$ bundle installdeviseの環境準備$ rails generate devise:installこの結果に手順が出力されます。以下 @fukajunさんの次のサイトの記事がおすすめです。http://kitbc.s41.xrea.com/main/?use_devise
  20. 20. 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
  21. 21. i18nの翻訳辞書ファイル翻訳辞書追加config/locales下にja.yamlattributes.ja.yamldevise.ja.ymlhelpers.ja.yml
  22. 22. 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: - 日曜日     :
  23. 23. i18n日本語対応翻訳辞書追加config/locales下にattributes.ja.yaml ja:テーブル定義の activerecord: attributes: 項目名 user: email: メールアドレス password: パスワード password_confirmation: パスワード(再入力) remember_me: 次回からパスワードを省く
  24. 24. i18n日本語化helpers.ja.yml ja: helpers: submit:form文の文言 create: "登録する" update: "更新する" submit: "保存する" label: user: email: "メールアドレス" password: "パスワード"
  25. 25. 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: 本登録を行ってください。
  26. 26. i18n翻訳ファイル2012.5.12時点のファイルを以下に置いてあるのでご参考に。https://github.com/ir3/tatekoto/tree/master/config/locales
  27. 27. ではdeviseをHerokuで動作させましょう
  28. 28. Heroku を使っていますか?
  29. 29. 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にとって何か特別の存在に。
  30. 30. Heroku参考情報Heroku開発本家 https://devcenter.heroku.com/Heroku-ja Meetup #1 スライドまとめhttp://codenote.net/heroku/274.html
  31. 31. Heroku いいよ♪Heroku! しかし....
  32. 32. さて そびえる Git 山
  33. 33. Heroku を使うには英語とGitを避けて通れない のでやるしかない!
  34. 34. いまさらながら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
  35. 35. ローカルGitリポジトリ$rails new hoge Railsプロジェクト作成$cd hoge プロジェクトホームへ$git init$git add . リポジトリ初期化$git commit -m ‘hoge start’ 変更分をindex登録 ローカルリポジトリcommit
  36. 36. Heroku登録のコツproductionのみPostgreSQLを使う(development,testはsqlite3)Gemfileに次の分岐 group :production do gem pg end group :development, :test do gem sqlite3 : end
  37. 37. Herokuに登録Herokuリポジトリ作成$ heroku create hoge --stack cedarリモートリポジトリにpush$ git push heroku masterDB migrate$ heroku run rake db:migrateHeroku 公開確認$ heroku open
  38. 38. Heroku で作るDevise認証サイトhttp://tatekoto.herokuapp.com/https://github.com/ir3/tatekoto ご清聴ありがとうございました
  39. 39. Registerableはじめのユーザ登録処理登録プロセスを通してサインアップ処理。また、アカウントを編集・削除。
  40. 40. Database Authenticatableユーザーがサインインする時に認証するためにパスワードをデータベースに暗号化し保存。この認証は POST リクエストまたはBasic認証を通して行われる。
  41. 41. Token Authenticatable! 登録が済んでいれば、id,パスワードでログイン。 今どきサインインという("single access token"として知られる)認証トークンに基づいてサインインします。この認証トークンはクエリ文字列またはBasic認証を通して与えらる。
  42. 42. Confirmable 必要であればメールでの確認もできる確認のためにEメールを送り、サインインの際に既に確認されたかどうか検査
  43. 43. Recorverbleパスワード忘れ時には、パスワードのリセットができる パスワードをリセットし、リセットの指示を送る。
  44. 44. Rememberableユーザーを記憶するために、保存されたクッキーから、トークンを生成・消去。
  45. 45. Trackableサインインのカウント・タイムスタンプ・IPアドレスを記録。
  46. 46. Timeoutable特定の期間に活動がなかった場合、セッションを破棄します。
  47. 47. ValidatableEメールとパスワードによる確認。これは、オプションでカスタマイズできるので、専用の確認を定義できる。
  48. 48. Lockableサインインの試みが特定の回数失敗したらアカウントをロック。Eメール、または、特定の期間の後、アンロック。

×