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

page_footer_300rect




page_footer_300rect




-BackEnd

執筆者:


comment

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

CAPTCHA


関連記事

rails

Rails5.2+Pumaのデプロイ設定

1 はじめに1.1 環境2 Pumaとは?2.1 Unicornとの比較2.2 Pumaのスレッド3 Pumaの使い方4 デプロイ設定4.1 Gemを追加4.2 Capfileの設定4.3 deplo ...

rails

Ruby、Railsの時間に関するメソッドを使用してみた

はじめに 普段PHPのお仕事をしています、tonnyです。 半年程前からRuby on Railsの勉強を始めました。 今回はよく使う時間に関するメソッドついてまとめたいと思います。 目次 1 はじめ ...

js

GoogleAppsScriptを使ってmBaaSの定期実行処理を実装する

1 はじめに1.1 簡単な状況説明1.2 定期実行を行う方法2 実装2.1 実装の流れ2.2 JavaScriptの実装2.3 スクリプトをアップロードする2.4 Google Apps Script ...

rails

Railsのバリデーション

1 はじめに2 基本的なバリデーション3 EachValidatorクラス4 Validatorクラス5 autoload_pathsの編集6 さいごに はじめに 今回はRailsのActiveRec ...

rails

Shrineをモデルに関連付けないで使用してハマったこと

1 はじめに2 アップロード時にリサイズする3 アップロード時のバリデーション4 アップロード時に古いファイルを削除する5 さいごに はじめに ShrineはRailsでのアップロードを簡単に行えるよ ...

フォロー

follow us in feedly

AppLink

page_side_300rect

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

アプリ情報

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

Web版MyCoach

私たちはより広い方にコーチングを知ってもらいたいと考えています。 下記のサイトにて、コーチの方々を紹介しておりますので、よろしければご覧ください。