SPA(React + Rails)環境でCookieを使った認証機能を作ったらChromeでまともに動かなくて涙

タイトルの通り。 以下の感じでお試しのログイン機能を作ったが、まぁなぜかCookieでの認証がまともに動いてくれない。

github.com

結論から言うと「Chromeの仕様で3rd party製Cookiehttpsじゃないと動かない」とのことだった。 より正確には「SameSite=None; Secure 」の設定があるCookieのみ利用可能。 詳細は以下記事。 qiita.com

ふと「じゃあ全部Railsで作ったモノリシックなWebアプリでもhttpsにしないとCookie使えないのか?」と思ったが、 「3rd party製Cookie」だけの話なので対象外。 サードパーティCookieとファーストパーティCookieって話知らなかった。酷い。

admage.jp

軽く開発したいだけなのにいちいちhttpsの環境なんて立ててらんねーよめんどくさい。 一応Chromeの設定を変えることで回避も可能みたいだ。 (chrome://flags/にアクセスしてSameSite by default cookiesをDisableにする。 https://developers-jp.googleblog.com/2019/11/cookie-samesitenone-secure.html も参照)

ただそれは流石にちょっと許されないね。。。

SPA環境はもうめんどくさいからJWTをLocalStorageにぶち込む感じで行こうと思います。 セキュリティ?どうせCookie使ったってXSS回避しきれないんだし変わらないでしょ。

まぁ緩和策は可能な範囲でとって、残ったリスクを許容する、というのがいいのかね。。。? もしくはそれなりにセキュリティに気を使うなら、認証関連は多少お金かけてでも外部サービスを使えよという話? 手堅い手段は何なんだ?誰か教えてくれ。

(20200812 追記) 色々考えた結果ローカル開発環境でもhttps環境立てた方が楽で早くて心にも優しいという結論に達しました。

(20200813 追記) SameSite周りのエラーがChromeで出たのは以下(&返信)のような要因。普通にやればこの記事のようなことは起きないと判明。悲しみ。