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


関連記事

Go言語

Go言語でGinkgoを利用してBDDしてみた

1 はじめに2 BDDとは3 Ginkgoについて3.1 Ginkgoの概要3.1.1 Describe3.1.2 Context3.1.3 It3.1.4 JustBeforeEach3.1.5 B ...

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

Shrineでアップロードする際に画像を加工する

1 はじめに2 アップロードする画像のリサイズ2.1 Gemを追加2.2 Uploaderの修正3 サムネイルを作成する3.1 Uploaderの修正3.2 サムネイルを表示する4 バリデーションの追 ...

rails

関連するモデルのレコードを一緒に作成する方法

1 はじめに1.1 前提条件2 実装2.1 モデルの作成2.2 コントローラの作成2.3 Viewの作成3 さいごに はじめに フォームからレコードを作成する際に、関連するモデルのレコードを一緒に作成 ...

laravel logo

LaravelのDI

1 はじめに2 DIに関する機能2.1 DIとは2.2 サービスコンテナ2.3 サービスプロバイダ3 サービスコンテナ3.1 バインド3.2 bind3.3 bindIf3.4 singletonメソ ...

フォロー

follow us in feedly

page_side_300rect

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

アプリ情報

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

Web版MyCoach

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