フォーム認証を捨てるメリット
先日の記事「フォーム認証は本当に捨てられないのか」の続きです。
「WebサービスとWebアプリケーションを区別しないとうまくいく」という指針
RESTに関する下記の鼎談動画において「WebサービスとWebアプリケーションを区別しないとうまくいく」という指針が示されています。
私は最近まで、この指針は理想に過ぎず、現実には二者を区別せざるをえないと考えていました。しかし、以下に示す考え方を経て、区別の必要はないと思えるようになりました。
二者が区別される理由
そもそも、そうした指針が唱えられるのは、WebサービスとWebアプリケーションを区別するのが普通だからでしょう。
なぜ、区別するのが普通なのか。認証方式が違うからだと私は思います。それ以外の理由もあるのでしょうが、認証方式の違いに比べれば、軽微なものとしか私には思えません(ご指摘歓迎)。
WebサービスとWebアプリケーションの一般的な認証方式は下記の通りです。
これらの認証方式さえ統一すれば、WebサービスとWebアプリケーションを区別せずに済み「うまくいく」はずだ、というのが私の考えです。
統一するならステートレスな方式に
山本陽平さん(id:yohei)の「REST入門」によると、フォーム認証は、RESTの観点からみれば間違っている認証方式です。
HTTP をステートフルにする代表格はクッキーを使ったセッション管理です。REST アーキテクチャスタイルの視点からみると、クッキーを使ったセッション管理は間違った HTTP の拡張、ということになります。
ricollab Web Tech Blog » REST 入門(1 Web アプリケーションのアーキテクチャ)
であるならば、「クッキーを使ったセッション管理」(=フォーム認証)を捨て、ステートレスな認証方式(=Basic認証などのHTTP認証)に統一したくなるところです。
フォーム認証は本当に捨てられないのか
ところが「REST入門」には、こうも書かれています。
でも REST 的に間違っているからといって、クッキーを使ったフォーム認証をやめるわけにはいかないというのもまた現実です。
この「現実」を疑ってみる、というのが先日の記事(「フォーム認証は本当に捨てられないのか」)の趣旨でした。そして、捨てようと思えば捨てられそうだ、という結論に至ったわけです。