Token認証
必ずしもJWTである必要がないので、もっと良い名前がありそうな気がする
OIDCの方の理解をしないといけないmrsekut.icon
この記事で通常のsession管理との違いが整理されている Artifact
トークンにはメタデータを保持せずIDのみ。メタデータはサーバ側のストレージに持つことが一般的
ServerがSessionIdを発行し、それをCookie経由でやり取りする
server側には、session idとuser情報を結びつけて保存しておく必要がある
つまりstatefulになる
Assertion
メタデータをすべて内包する形式。JWTはその代表格。
serverがsessionIdの代わりに、JWTを発行し、responseする
そのJWTには
userIdなどの情報が入っている
有効期限などの情報も入れたりする
server側の秘密鍵で署名もしくは暗号化する
clientは認証が必要な時にそのJWTも一緒に送る
serverはそのJWTを見れば、誰から送られてきたのかわかる
user情報を取り出せるので
server側はsessionを管理する必要がないので、statelessになる
この「Artifact」と「Assertion」という分類名もどこまで一般的なのか不明 #?? JWT認証は良くない、みたいなないよう
この記事に対する反論
良い
問題点
個別にserver側でsessionの無効化ができない
ユーザの能動的なログアウトで、sessionが失効されない
トークンのサイズが大きくなる場合があり、 cookie にデータを保存しにくい