2016年5月31日火曜日

【Rails4.2.6】omniauth-google-oauth2でJWT::InvalidIatError

  • 公開日:2016年05月31日

記事概要

Railsでomniauth-google-oauth2を使った時に、JWT::InvalidIatErrorが発生しました。
このエラーの修正方法を記述した記事です。

環境

  • rbenv
  • bundler
  • rails 4.2.6
  • ruby 2.3.0

omniauth-google-oauth2

omniauth-google-oauth2は、Railsのgoogleログインの認証ライブラリです。
少ないコードでgoogleログインの認証処理が実装できます。

エラー

googleログイン認証のコールバック時に、JWT::InvalidIatErrorが発生しました。 原因は、OSの時間のずれです。
この時、セッショントークンの生成に問題が発生します。

本番環境では、まず発生しないエラーです。vagrantやdockerを使用していると発生する可能性があります。

修正方法

OmniAuth::Builderに:skip_jwt => trueを設定します。

{project_folder}/config/initializers/omniauth.rb

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :google_oauth2, "GOOGLE_CLIENT_ID", "GOOGLE_CLIENT_SECRET", {:skip_jwt => true }
end

ファイル変更後に、サーバーを再起動して再度ログインします。
同じ失敗をする場合は、古いセッションを削除してから試してください。

まとめ

Railsのomniauth-google-oauth2は、deviseと連携した記事がほとんどなので、単体で使うとエラーの調査に苦戦します。
twitterやfacebookのログインよりも安定感があるので、皆さんにももっと積極的に利用して欲しいです。

以上。

PICK UP オススメ書籍

運営サイト(railsで作成しています)

参考記事

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

6 件のコメント:

Related Posts Plugin for WordPress, Blogger...