SlideShare a Scribd company logo
1 of 49
Herokuで作るDevise
      認証サイト
2012.5.29 【第2回】渋谷Railsだったり勉強会
      @iR3 iRubySystems 福井修
福井修 自己紹介
Twitter:iR3  Facebook:fukui.osamu
Ruby大好き中年です。
1977/4より日立大みか工場で、鉄鋼向けプラント制御
システム構築に従事。以後様々なシステム構築36年。
2001/5 初RubyはRuby1.4
2002/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/frames

An 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 install

deviseの環境準備
$ 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.yaml
attributes.ja.yaml
devise.ja.yml
helpers.ja.yml
i18n日本語対応
    i18n で日本語辞書を対応づけて翻訳
ja.yaml
http://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パッチモンスターなかださんもJoin
2012年2月 エンタープライズRailsを頑張った@ayuminもJoin
2012年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-12520711

ProGit日本語訳 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 master

DB migrate
$ heroku run rake db:migrate

Heroku 公開確認
$ 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


特定の期間に活動がなかった場合、セッションを破棄しま

す。
Validatable


Eメールとパスワードによる確認。これは、オプションでカ

スタマイズできるので、専用の確認を定義できる。
Lockable


サインインの試みが特定の回数失敗したらアカウントをロッ

ク。

Eメール、または、特定の期間の後、アンロック。

More Related Content

Viewers also liked

Core Graphicsでつくる自作UIコンポーネント入門
Core Graphicsでつくる自作UIコンポーネント入門Core Graphicsでつくる自作UIコンポーネント入門
Core Graphicsでつくる自作UIコンポーネント入門
cocopon
 
ARCでめちゃモテiOSプログラマー
ARCでめちゃモテiOSプログラマーARCでめちゃモテiOSプログラマー
ARCでめちゃモテiOSプログラマー
Satoshi Asano
 
Shadow gunのサンプルから学べるモバイル最適化
Shadow gunのサンプルから学べるモバイル最適化Shadow gunのサンプルから学べるモバイル最適化
Shadow gunのサンプルから学べるモバイル最適化
Katsutoshi Makino
 
Extending the Unity Editor Extended
Extending the Unity Editor ExtendedExtending the Unity Editor Extended
Extending the Unity Editor Extended
Masamitsu Ishikawa
 

Viewers also liked (18)

Air printで遊んでみた
Air printで遊んでみたAir printで遊んでみた
Air printで遊んでみた
 
Sencha study
Sencha studySencha study
Sencha study
 
Core Graphicsでつくる自作UIコンポーネント入門
Core Graphicsでつくる自作UIコンポーネント入門Core Graphicsでつくる自作UIコンポーネント入門
Core Graphicsでつくる自作UIコンポーネント入門
 
mq 使ってみたよ
mq 使ってみたよmq 使ってみたよ
mq 使ってみたよ
 
ARCでめちゃモテiOSプログラマー
ARCでめちゃモテiOSプログラマーARCでめちゃモテiOSプログラマー
ARCでめちゃモテiOSプログラマー
 
vImageのススメ
vImageのススメvImageのススメ
vImageのススメ
 
Unityのasset bundle運用実例@lordofknights
Unityのasset bundle運用実例@lordofknightsUnityのasset bundle運用実例@lordofknights
Unityのasset bundle運用実例@lordofknights
 
Shadow gunのサンプルから学べるモバイル最適化
Shadow gunのサンプルから学べるモバイル最適化Shadow gunのサンプルから学べるモバイル最適化
Shadow gunのサンプルから学べるモバイル最適化
 
Extending the Unity Editor Extended
Extending the Unity Editor ExtendedExtending the Unity Editor Extended
Extending the Unity Editor Extended
 
ruby、sinatraで作るfacebookアプリ
ruby、sinatraで作るfacebookアプリruby、sinatraで作るfacebookアプリ
ruby、sinatraで作るfacebookアプリ
 
Cocos2d-x(JS) ハンズオン #08「様々な画像描画方法」
Cocos2d-x(JS) ハンズオン #08「様々な画像描画方法」Cocos2d-x(JS) ハンズオン #08「様々な画像描画方法」
Cocos2d-x(JS) ハンズオン #08「様々な画像描画方法」
 
いまさら聞けないUnity小技
いまさら聞けないUnity小技いまさら聞けないUnity小技
いまさら聞けないUnity小技
 
Cocos2d-xで画像周りを自由自在に表示してみよう
Cocos2d-xで画像周りを自由自在に表示してみようCocos2d-xで画像周りを自由自在に表示してみよう
Cocos2d-xで画像周りを自由自在に表示してみよう
 
Unity5.3の機能まとめ
Unity5.3の機能まとめUnity5.3の機能まとめ
Unity5.3の機能まとめ
 
かんたんHeroku入門 - Heroku へのデプロイと運用 -
かんたんHeroku入門 - Heroku へのデプロイと運用 -かんたんHeroku入門 - Heroku へのデプロイと運用 -
かんたんHeroku入門 - Heroku へのデプロイと運用 -
 
ゲーム開発とデザインパターン
ゲーム開発とデザインパターンゲーム開発とデザインパターン
ゲーム開発とデザインパターン
 
特盛!Heroku
特盛!Heroku特盛!Heroku
特盛!Heroku
 
自治体向けCMSをRubyで開発
自治体向けCMSをRubyで開発自治体向けCMSをRubyで開発
自治体向けCMSをRubyで開発
 

Similar to Herokuで作るdevise認証サイト

ngx_small_lightで動的サムネイル生成 #yapcasia2012
ngx_small_lightで動的サムネイル生成 #yapcasia2012ngx_small_lightで動的サムネイル生成 #yapcasia2012
ngx_small_lightで動的サムネイル生成 #yapcasia2012
Tatsuhiko Kubo
 
Ruby Sapporo Night Vol4
Ruby Sapporo Night Vol4Ruby Sapporo Night Vol4
Ruby Sapporo Night Vol4
Koji SHIMADA
 
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
emasaka
 
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
Naoya Ito
 
3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfes3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfes
Takeshi Komiya
 

Similar to Herokuで作るdevise認証サイト (20)

Sinatra and heroku for mac
Sinatra and heroku for macSinatra and heroku for mac
Sinatra and heroku for mac
 
怖いRails
怖いRails怖いRails
怖いRails
 
ngx_small_lightで動的サムネイル生成 #yapcasia2012
ngx_small_lightで動的サムネイル生成 #yapcasia2012ngx_small_lightで動的サムネイル生成 #yapcasia2012
ngx_small_lightで動的サムネイル生成 #yapcasia2012
 
Using Dancer
Using DancerUsing Dancer
Using Dancer
 
130329 perl casual_ruik
130329 perl casual_ruik130329 perl casual_ruik
130329 perl casual_ruik
 
Ruby Sapporo Night Vol4
Ruby Sapporo Night Vol4Ruby Sapporo Night Vol4
Ruby Sapporo Night Vol4
 
Haikara
HaikaraHaikara
Haikara
 
CodeIgniterによるPhwittr
CodeIgniterによるPhwittrCodeIgniterによるPhwittr
CodeIgniterによるPhwittr
 
今、最もイケてるPHPフレームワークLaravel4
今、最もイケてるPHPフレームワークLaravel4今、最もイケてるPHPフレームワークLaravel4
今、最もイケてるPHPフレームワークLaravel4
 
Play勉強会 第3回
Play勉強会 第3回Play勉強会 第3回
Play勉強会 第3回
 
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
 
Rails解説セミナー: Railsアプリケーションのデバッグ
Rails解説セミナー: RailsアプリケーションのデバッグRails解説セミナー: Railsアプリケーションのデバッグ
Rails解説セミナー: Railsアプリケーションのデバッグ
 
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
 
20150207コデアルエンジニア学生向けハッカソン就活イベント発表資料
20150207コデアルエンジニア学生向けハッカソン就活イベント発表資料20150207コデアルエンジニア学生向けハッカソン就活イベント発表資料
20150207コデアルエンジニア学生向けハッカソン就活イベント発表資料
 
とあるプロジェクトのつらみなコード
とあるプロジェクトのつらみなコードとあるプロジェクトのつらみなコード
とあるプロジェクトのつらみなコード
 
debexpo(mentors.d.n)をハックするには
debexpo(mentors.d.n)をハックするにはdebexpo(mentors.d.n)をハックするには
debexpo(mentors.d.n)をハックするには
 
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
 
⑯jQueryをおぼえよう!その2
⑯jQueryをおぼえよう!その2⑯jQueryをおぼえよう!その2
⑯jQueryをおぼえよう!その2
 
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略
 
3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfes3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfes
 

More from Fukui Osamu

20140212 develove テスト自動化のアプローチ拡張トレンド 〜Excel項目定義手動テストから自動テストへ〜
20140212 develove テスト自動化のアプローチ拡張トレンド 〜Excel項目定義手動テストから自動テストへ〜20140212 develove テスト自動化のアプローチ拡張トレンド 〜Excel項目定義手動テストから自動テストへ〜
20140212 develove テスト自動化のアプローチ拡張トレンド 〜Excel項目定義手動テストから自動テストへ〜
Fukui Osamu
 
20130831 No Ruby No Test #kanrk05
20130831 No Ruby No Test #kanrk0520130831 No Ruby No Test #kanrk05
20130831 No Ruby No Test #kanrk05
Fukui Osamu
 

More from Fukui Osamu (11)

20160529 tokyurubykaigi10
20160529 tokyurubykaigi1020160529 tokyurubykaigi10
20160529 tokyurubykaigi10
 
20141129 tokyurubykaigi08
20141129 tokyurubykaigi0820141129 tokyurubykaigi08
20141129 tokyurubykaigi08
 
20141101渋谷ruby会議
20141101渋谷ruby会議20141101渋谷ruby会議
20141101渋谷ruby会議
 
20140823 devlove甲子園 東日本 心トラック5回裏 #devlove
20140823 devlove甲子園 東日本 心トラック5回裏 #devlove20140823 devlove甲子園 東日本 心トラック5回裏 #devlove
20140823 devlove甲子園 東日本 心トラック5回裏 #devlove
 
20140212 develove テスト自動化のアプローチ拡張トレンド 〜Excel項目定義手動テストから自動テストへ〜
20140212 develove テスト自動化のアプローチ拡張トレンド 〜Excel項目定義手動テストから自動テストへ〜20140212 develove テスト自動化のアプローチ拡張トレンド 〜Excel項目定義手動テストから自動テストへ〜
20140212 develove テスト自動化のアプローチ拡張トレンド 〜Excel項目定義手動テストから自動テストへ〜
 
20131016 エンドツーエンド検証をJenkinsで回す話 #shibuyarb
20131016 エンドツーエンド検証をJenkinsで回す話 #shibuyarb20131016 エンドツーエンド検証をJenkinsで回す話 #shibuyarb
20131016 エンドツーエンド検証をJenkinsで回す話 #shibuyarb
 
20130921 カジュアルにテストしてフォーマルに検証する #toRuby
20130921 カジュアルにテストしてフォーマルに検証する #toRuby20130921 カジュアルにテストしてフォーマルに検証する #toRuby
20130921 カジュアルにテストしてフォーマルに検証する #toRuby
 
20130831 No Ruby No Test #kanrk05
20130831 No Ruby No Test #kanrk0520130831 No Ruby No Test #kanrk05
20130831 No Ruby No Test #kanrk05
 
Rubyistに 不足しているのは会計(そろばん)!
Rubyistに 不足しているのは会計(そろばん)!Rubyistに 不足しているのは会計(そろばん)!
Rubyistに 不足しているのは会計(そろばん)!
 
Rubyistに 不足しているのは会計(そろばん)!
Rubyistに 不足しているのは会計(そろばん)!Rubyistに 不足しているのは会計(そろばん)!
Rubyistに 不足しているのは会計(そろばん)!
 
20101106 ramaze発表
20101106 ramaze発表20101106 ramaze発表
20101106 ramaze発表
 

Herokuで作るdevise認証サイト

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n