Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
KN
Uploaded by
Kazuhiro Nishiyama
PDF, PPTX
18 views
devise-two-factor gem を 4.x から 5.x に上げた話
[大阪Ruby会議04](https://regional.rubykaigi.org/osaka04/)のスポンサーLTの発表資料です。
Software
◦
Read more
0
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 13
2
/ 13
3
/ 13
4
/ 13
5
/ 13
6
/ 13
7
/ 13
8
/ 13
9
/ 13
10
/ 13
11
/ 13
12
/ 13
13
/ 13
More Related Content
PDF
小規模個人アプリをRails 7.xにバージョンアップした話
by
Kazuhiro Nishiyama
PDF
docs.ruby-lang.org/ja/ の生成方法を (GitHub Actions に)変えた
by
Kazuhiro Nishiyama
PDF
Rubyの日本語リファレンスマニュアルの現在と未来 (松江Ruby会議11) 2024-10-05
by
Kazuhiro Nishiyama
PDF
Ruby on Rails と私 at 関西Ruby会議08 After Party: 叡電LT 🚃
by
Kazuhiro Nishiyama
PDF
Ubuntuのriscv64版をqemuで動かした at LILO&東海道らぐオフラインミーティング 2024-04-27
by
Kazuhiro Nishiyama
PDF
riscv64.rubyci.org internal at RubyKaigi 2025 LT
by
Kazuhiro Nishiyama
PDF
Ruby リファレンスマニュアル改善計画 2022 進捗報告
by
Kazuhiro Nishiyama
PDF
lilo.linux.or.jp を buster から bullseye に上げた
by
Kazuhiro Nishiyama
小規模個人アプリをRails 7.xにバージョンアップした話
by
Kazuhiro Nishiyama
docs.ruby-lang.org/ja/ の生成方法を (GitHub Actions に)変えた
by
Kazuhiro Nishiyama
Rubyの日本語リファレンスマニュアルの現在と未来 (松江Ruby会議11) 2024-10-05
by
Kazuhiro Nishiyama
Ruby on Rails と私 at 関西Ruby会議08 After Party: 叡電LT 🚃
by
Kazuhiro Nishiyama
Ubuntuのriscv64版をqemuで動かした at LILO&東海道らぐオフラインミーティング 2024-04-27
by
Kazuhiro Nishiyama
riscv64.rubyci.org internal at RubyKaigi 2025 LT
by
Kazuhiro Nishiyama
Ruby リファレンスマニュアル改善計画 2022 進捗報告
by
Kazuhiro Nishiyama
lilo.linux.or.jp を buster から bullseye に上げた
by
Kazuhiro Nishiyama
More from Kazuhiro Nishiyama
PDF
Wireguard 実践入門
by
Kazuhiro Nishiyama
PDF
Ruby 3.0.0 コネタ集
by
Kazuhiro Nishiyama
PDF
Ruby svn to git
by
Kazuhiro Nishiyama
PDF
最近のrubyのインストール方法
by
Kazuhiro Nishiyama
PDF
Certificate Transparency
by
Kazuhiro Nishiyama
PDF
ブログを Octopress 2 + GitHub Pages から Jekyll 3 + AMP + Netlify に移行した話
by
Kazuhiro Nishiyama
PDF
あまり知られていないRubyの便利機能
by
Kazuhiro Nishiyama
PDF
Action Cableで簡易チャットを作ってみた
by
Kazuhiro Nishiyama
PDF
workflow,job,step の使い分けの基準を考える
by
Kazuhiro Nishiyama
PDF
systemdでよく使うサブコマンド
by
Kazuhiro Nishiyama
PDF
systemd 再入門
by
Kazuhiro Nishiyama
PDF
Dockerのオフィシャルrubyイメージとは?
by
Kazuhiro Nishiyama
PDF
Ruby 2.6 Update
by
Kazuhiro Nishiyama
PDF
Language update 2018 - ruby
by
Kazuhiro Nishiyama
PDF
qemuのriscv64にDebianを入れてみた
by
Kazuhiro Nishiyama
PDF
rubykaigi2022-rurema-history-and-future.pdf
by
Kazuhiro Nishiyama
PDF
Dokku の紹介
by
Kazuhiro Nishiyama
PDF
チャットボットのススメ
by
Kazuhiro Nishiyama
PDF
livedoor天気API終了対応
by
Kazuhiro Nishiyama
PDF
fukuoka03-rubima-reboot-rubyist-magazine-reboot.pdf
by
Kazuhiro Nishiyama
Wireguard 実践入門
by
Kazuhiro Nishiyama
Ruby 3.0.0 コネタ集
by
Kazuhiro Nishiyama
Ruby svn to git
by
Kazuhiro Nishiyama
最近のrubyのインストール方法
by
Kazuhiro Nishiyama
Certificate Transparency
by
Kazuhiro Nishiyama
ブログを Octopress 2 + GitHub Pages から Jekyll 3 + AMP + Netlify に移行した話
by
Kazuhiro Nishiyama
あまり知られていないRubyの便利機能
by
Kazuhiro Nishiyama
Action Cableで簡易チャットを作ってみた
by
Kazuhiro Nishiyama
workflow,job,step の使い分けの基準を考える
by
Kazuhiro Nishiyama
systemdでよく使うサブコマンド
by
Kazuhiro Nishiyama
systemd 再入門
by
Kazuhiro Nishiyama
Dockerのオフィシャルrubyイメージとは?
by
Kazuhiro Nishiyama
Ruby 2.6 Update
by
Kazuhiro Nishiyama
Language update 2018 - ruby
by
Kazuhiro Nishiyama
qemuのriscv64にDebianを入れてみた
by
Kazuhiro Nishiyama
rubykaigi2022-rurema-history-and-future.pdf
by
Kazuhiro Nishiyama
Dokku の紹介
by
Kazuhiro Nishiyama
チャットボットのススメ
by
Kazuhiro Nishiyama
livedoor天気API終了対応
by
Kazuhiro Nishiyama
fukuoka03-rubima-reboot-rubyist-magazine-reboot.pdf
by
Kazuhiro Nishiyama
Recently uploaded
PPTX
JavaScript/TypeScript実力強化書 2章のアップデート Forkwell Library
by
Yoshiki Shibukawa
PDF
20251122_OWASPNagoya_takei_ITU-T,X.1060,security
by
OWASP Nagoya
PDF
最高峰のストレージとバックアップ:ARTESCA+Veeam:統合型ソフトウェア
by
株式会社クライム
PDF
Gluesync:RDBMS、NoSQL,データレイク間のリアルタイム・データレプリケーション
by
株式会社クライム
PDF
Veeam&WasabiでトリプルV: クラウドへのランサムウエア対策の決定コンビ
by
株式会社クライム
PDF
N2WS Backup & Recovery と Veeam Backup for AWS
by
株式会社クライム
JavaScript/TypeScript実力強化書 2章のアップデート Forkwell Library
by
Yoshiki Shibukawa
20251122_OWASPNagoya_takei_ITU-T,X.1060,security
by
OWASP Nagoya
最高峰のストレージとバックアップ:ARTESCA+Veeam:統合型ソフトウェア
by
株式会社クライム
Gluesync:RDBMS、NoSQL,データレイク間のリアルタイム・データレプリケーション
by
株式会社クライム
Veeam&WasabiでトリプルV: クラウドへのランサムウエア対策の決定コンビ
by
株式会社クライム
N2WS Backup & Recovery と Veeam Backup for AWS
by
株式会社クライム
devise-two-factor gem を 4.x から 5.x に上げた話
1.
devise-two-factor を4.xから5.xに上 げた話 Kazuhiro NISHIYAMA 株式会社Ruby開発 大阪Ruby会議04 2024-08-24
2.
self.introduction 西山 和広 Ruby のコミッター github
など: @znz 株式会社Ruby開発 www.ruby-dev.jp
3.
devise-two-factor とは? devise を
TOTP の2要素認証に対 応するのに使う gem ユーザごとに以下のデータを保存 暗号化された OTP シークレット (認証アプリに登録するもの) 使用済み OTP を区別できる情報 OTP が有効かどうか
4.
4.x から 5.x
への変更 下2個はそのままでいいが OTP シークレットの保存方法が変更 (再掲載) ユーザーごとに以下の データを保存 暗号化された OTP シークレット 使用済み OTP を区別できる情報 OTP が有効かどうか
5.
4.x から 5.x
への変更 4 は attr_encrypted gem encrypted_otp_secret, encrypted_otp_secret_iv, encrypted_otp_secret_salt に Base64 でそれぞれ保存 5 は Rails 7+ 標準の encrypted attribute 暗号化したものを Base64 して JSON で otp_secret 1カラムに保存
6.
更新手順 4 から 5
は Rails 6 から Rails 7 と同時に上げる必要あり https://github.com/devise-two-factor/ devise-two-factor/blob/main/ UPGRADING.md に手順あり ほとんど gem は複数の Rails に 対応していて独立して更新可能 今回はそうなっていない
7.
なぜか? (推測) attr_encrypted gem
と Rails 7 で #encrypted_attributes メ ソッドが衝突する Rails 7 対応の attr_encrypted に 更新すると二度手間だから一気に 移行する手順になっている?
8.
問題点 実運用環境なら Rails 7
に上げた 後に Rails 6 に戻す可能性もある のでは? Rails 7 でユーザーの認証アプリと otp_secret だけが更新 → このまま Rails 6 に戻すと encrypted_* が古くて認証失敗 UPGRADING.md には戻す手順はない → 独自対応が必要
9.
具体的には UPGRADING.md に legacy_otp_secret の実装例 公式の手順途中の動作 読み込み 新カラムが設定されていれば
→ otp_secret なければ旧カラムを読む → legacy_otp_secret 書き込み は新しい otp_secret のみ
10.
独自に書き込み対応 新しい otp_secret 書き込み時に legacy_otp_secret
の逆手順で encrypted_* に同期 → legacy_otp_secret でデコードした 結果が otp_secret と一致するのを確認 して自動テストも追加
11.
手動ダウングレードテスト 実際に戻してみてテスト → うま く動かないので、さらに調査 →
attr_encrypted が salt に prefix と して _ をつける encode_salt オプショ ンがデフォルトで true Base64.decode64 は _ を無視する ので legacy_otp_secret は動く → 同期時に _ を prepend して解決
12.
まとめ 非互換のダウングレード対応は新 バージョンでの互換メソッドの自 動テストだけでは不十分 手動でダウングレード確認も必須 その他の対応も場合分けして用意 例: ダウングレード中に encrypted_*
だ けが更新されて otp_secret が古くなる → otp_secret を nil に戻すタスク
13.
宣伝 福岡Rubyist会議04 https:// regional.rubykaigi.org/fukuoka04/ 2024.09.07 Sat.
9:30–18:00 主催: Fukuoka.rb / 株式会社Ruby開発
Download