はまやんはまやんはまやん

hamayanhamayan's blog

Expressでクッキーレスセッション(cookieless session)を実現するには

結論

  • Expressでクッキーレスセッションはできない
  • 代わりにJWT認証を使おう

以下、物語。

発端

今あるサービスのWebAPIを作っていて、アプリ開発サイドに向けて、一旦仕様を出した。

Androidだとクッキー使わないと思うので、パラメタでトークン指定する形式にしてください

クッキー使えると思うのですが、調べてと言って、こう返事が帰ってきた。
ほんとに?と思ったが、自分はよく調べてなかったので、「分かりました!」と安請け合いしてしまった。
これが物語の始まり。

クッキーレスセッションとは

セッションでは、セッションIDを発行しているが、このやり取りにクッキーを使用している。
しかし、太古の携帯では、クッキー機能を持たないブラウザがあったようで、
クッキーではなく、パラメタとして、セッションIDを含めるという手法があったみたい。
https://www.atmarkit.co.jp/fdotnet/dotnettips/189aspckless/aspckless.html
ここに書いてあるのは、もっと無理矢理やってるやつだけど。

Expressでクッキーレスセッションやりたい

https://stackoverflow.com/questions/42580911/can-a-express-session-works-without-cookie
stack overflowにぴったりな記事があった。2017年では、使えないらしい。

https://stackoverflow.com/questions/48397556/cookieless-session-in-express-js
2018年でもダメか。
代わりにtoken based authenticationを使えと書いてあるな。

https://github.com/expressjs/session/issues/543
expressのissuesを探しても、失踪記事しかない。

expressでやるのは難しそう。もしかしてヤバイ?と思ったが、
「token authentication express」でググると、「JWT」という語句を発見。

JWT

JSON Web Tokenのこと。
「express jwt」でググると、こちらはたくさん情報が出てくるので、安心する。
やりたいことはこっちで実現するのが良さそう。