BackEnd

Ruby2.4でCookieを手動で復号する際に発生したエラーの対処

投稿日:2017年6月2日 更新日:

はじめに

こんにちは、onoです。

現在開発中のアプリケーションでログインAPIのテストコードを実行したところ、
Ruby2.3.1ではうまくいっていたCookieの復号が、Ruby2.4.1ではエラーが発生したので調査しました。

前提条件

Ruby 2.4.1
Rails 5.1.0

発生したエラー

実際のコード

実際のコードは下記の通りです。

Ruby 2.3.1で開発していた前のアプリケーションでは、上記のコードで復号できていました。
ところが、Ruby 2.4.1で開発中のアプリケーションではエラーが発生しました。

エラー詳細

6行目の encryptor.decrypt_and_verify の箇所で下記のエラーが発生しました。

 

原因

どうやら、Rubyの openssl が変更になったために発生したようです。

今までは、keyに長すぎる値を渡すと自動的に適当な長さに切り取っていたようですが、正しい長さのkeyを渡さないと例外が発生するようになりました。
参考:http://nisshiee.hatenablog.jp/entry/2017/04/17/192703

どう対処したか

修正後のコード

修正前は64byteのkeyが生成されていましたが、ActiveSupport::KeyGeneratorでkeyを生成するようにしたところ、エラーが解消されました。

参考:https://stackoverflow.com/questions/41474176/how-to-decrypt-a-rails-5-session-cookie-manually

age_footer_300rect




age_footer_300rect




-BackEnd

執筆者:


comment

メールアドレスが公開されることはありません。

関連記事

Railsの低レベルキャッシュを使ってみた

1 はじめに1.1 環境2 ドキュメント3 準備3.1 configの確認3.2 キャッシュストア4 使ってみる4.1 #read、#write、#delete4.2 #fetch4.3 オプション4 …

RailsでS3に画像をアップロードする

1 はじめに2 今回やりたいこと3 下準備3.1 ImageMagickをインストールする3.2 Gemをインストールする4 レコード生成時にファイルを指定してアップロードする4.1 アップローダを作 …

PHP、Ruby、Pythonのfor構文を比較してみた

1 はじめに1.1 環境2 ドキュメント2.1 PHP2.2 Ruby2.3 Python3 1から100まで出力してみる3.1 PHP3.2 Ruby3.3 Python4 リスト型(配列)の出力4 …

半年ぶりにRails Tutorialをやったメモ

はじめに Railsを触り始めて半年ほどたちました、tonnyです。 復習もかねてRails Tutorialを実施したので、そのメモを残します。 やはり2回目でも気づくことは多いので、非常に勉強にな …

さらば「rails migrate」、よろしく「ridgepole」

1 はじめに2 Ridgepoleとは3 rails migrateではなく、Ridgepoleを選定した理由4 rails migrateからRidgepoleへの移行手順5 capistrano3 …

page_side_300rect




bitFlyer

bitFlyer ビットコインを始めるなら安心・安全な取引所で

アプリ情報

私たちは、目標を達成したい方を応援する、TODOアプリもリリースしております。
下記のアイコンから無料でダウンロードできます。

リンク



follow us in feedly

2017年6月
« 5月   7月 »
 123
45678910
11121314151617
18192021222324
252627282930