ID、パスワードによるサインインだけでは非常に脆弱で、今はTwitter、Facebook等のSNS、グーグル、アマゾン、マイクロソフトのアカウントなどが二段階認証を取り入れれいます。 この記事ではRuby on Railsで作られたサイトに、Devise、ActiveModel::Otp 、rqrcode及びグーグル認証システムによって二段階認証を実装する仕方を、段階を追って解説します。 ユーザーにとって、グーグル認証システムはアンドロイドでもアイフォーンで利用可能ですし、テキストで携帯に送られるOTPによる二段階認証よりも実装しやすいと思います。 devise、active_model_opt、rqrcode gemをインストール まずは必要なgemを追加します。 users_controller.rbのアップデート ここでは devise gemによって作成されるusers_controller.rbに2つの機能を追加します。 二段階認証を有効化するページの対応。有効化ページにはrqrcode gemによって作られたQRコードを表示します。このQRコードをグーグル認証システムで読むことになります。def activate_2faがその実装です ユーザーが二段階認証コード、つまりワンタイムパスワード(OTP)を送った時に、有効化のプロセスの対応。def activate_2fa_updateがその実装 二段階認証有効化ページ users_controller.rbにあるdef activate_2fa によって作られるQRコードを表示するためのページです。ユーザーが、このQRコードをグーグル認証システムで読み込んでワンタイムパスワード(OTP)を得られます。 html_safe on @svg