岩本隆史の日記帳(アーカイブ)

はてなダイアリーのサービス終了をうけて移行したものです。更新はしません。

フォーム認証を捨てるメリット

先日の記事「フォーム認証は本当に捨てられないのか」の続きです。

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 的に間違っているからといって、クッキーを使ったフォーム認証をやめるわけにはいかないというのもまた現実です。

この「現実」を疑ってみる、というのが先日の記事(「フォーム認証は本当に捨てられないのか」)の趣旨でした。そして、捨てようと思えば捨てられそうだ、という結論に至ったわけです。

まとめ

Basic認証を採用することで、Webアプリであると同時にWebサービスでもある、シンプルで美しいアプリケーションが作れるのではないかと思っています。APIを別途用意する必要がない点だけでも、私には充分すぎるメリットです。