RESTの認証

RESTは、URLにメソッドとパラメータを与えて直接値を得る方法。
http://サーバー/メソッド/パラメータ とアクセスすると、XMLJSONなどで値が返ってくる方法。

Stateless、つまり状態のない方法でサーバーから値を得る方法としてはシンプルな方法。

ただ誰でも値を得るのはセキュリティ上まずいことが多いので、認証が必要である。Cookieかsession idを使って認証したいが、もともとStatelessなのでどうしようか迷っていた。

Basic認証かDigest認証を使う方法が良いといわれているが、
Basic認証は、HTTPのヘッダーでIDとパスワードを与える点では、URL内に埋め込むのとさして違いはない。だけどユーザーごとにURLが違うのはまずいので、Basic認証はよし。
SSLで暗号化しているときはBasic認証でもいいかなと思ったが、そもそもSSLの通信は暗号化、認証、改竄のしくみを組み込んでいるので通信自体が重いものになる。

Digest認証は、クライアントとサーバーの間を何度もやりとりをするのであまりRESTには向いていないと思う。それでもユーザーから見ると実相はシンプルだな。

httpsのアクセスでは、Basic認証
そうでないときは、Digest認証でいいか。認証が必要な時は重くなるけど。

参考:
http://www.berenddeboer.net/rest/authentication.html
http://www.matsubarafamily.com/lab/category_27/item_149.html