結論
- Expressでクッキーレスセッションはできない
- 代わりにJWT認証を使おう
以下、物語。
発端
今あるサービスのWebAPIを作っていて、アプリ開発サイドに向けて、一旦仕様を出した。
クッキー使えると思うのですが、調べてと言って、こう返事が帰ってきた。
ほんとに?と思ったが、自分はよく調べてなかったので、「分かりました!」と安請け合いしてしまった。
これが物語の始まり。
クッキーレスセッションとは
セッションでは、セッション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」でググると、こちらはたくさん情報が出てくるので、安心する。
やりたいことはこっちで実現するのが良さそう。