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

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

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

rails

deviseを使ってユーザ登録フォームを作る

1 はじめに1.1 前提条件2 deviseについて2.1 deviseとは2.2 deviseでできること3 登録処理の実装3.1 Gemのインストール3.2 deviseのインストール3.3 デフ ...

aws

ALB+EC2な環境でhttpをhttpsにリダイレクトする

1 はじめに1.1 前提条件2 ALBの設定3 Nginxの設定3.1 注意点4 さいごに はじめに httpsに対応済みのWebサイトの場合、httpでアクセスされた時にhttpsでリダイレクトする ...

Rubyを使ってDialogflowのお勉強

1 はじめに1.1 環境2 とりあえずAPIで叩いてみる2.1 テスト用のIntentを作成2.2 Gemの設定3 Eventについて3.1 WELCOMEイベント3.2 パラメータ付きで叩く3.3 ...

rails

Railsのバリデーション

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

page_side_300rect

Web版MyCoach

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

アプリ情報

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

リンク

follow us in feedly
2017年6月
« 5月 7月 »
 123
45678910
11121314151617
18192021222324
252627282930