高木のブログ

【Rails】OmniAuthを2系に上げたら、Twitter認証でログインできなくなったので対応した

· 94 words · 1 minutes to read
Tags: Rails Gem

Twitter認証を導入している個人Railsアプリの話

問題 🔗

omniauth を2系に上げたら、Twitter認証でログインできなくなってしまった
正確にはomniauth-twitter を使っていて、内部で使われているomniauthをバージョンを上げた

エラーメッセージ 🔗

Started GET "/auth/twitter" for 192.168.48.1 at 2021-05-06 22:40:45 +0900
Cannot render console from 192.168.48.1! Allowed networks: 127.0.0.0/127.255.255.255, ::1

ActionController::RoutingError (No route matches [GET] "/auth/twitter"):

原因 🔗

CSRFの脆弱性(CVE-2015-9284 )の対応に伴う変更らしい
サービスプロバイダの認証画面へのリダイレクトが2系ではPOSTのみ有効になった

対処法 🔗

  • CSRFの脆弱性対応用のGemを追加する
  • Twitter認証画面へリダイレクトをGETからPOSTに変更する

CSRFの脆弱性対応用のGemを追加する 🔗

omniauth-rails_csrf_protection を追加

  gem 'omniauth-twitter'
+ gem 'omniauth-rails_csrf_protection'

Twitter認証画面へリダイレクトをGETからPOSTに変更する 🔗

オプションmethod: :postを追加

- <%= link_to '/auth/twitter', class: 'btn btn-block btn-primary' do %>
+ <%= link_to '/auth/twitter', method: :post, class: 'btn btn-block btn-primary' do %>

参考 🔗

Categories


Tags