2011-02-09 8 views
1

今日、ログイン資格情報を必要とするWebサービスでは、Cookieベースの認証が選択されているようです。HTTP認証とクッキー

しかし、クライアントがブラウザではなく、HTTP経由でリソースにアクセスするクライアントソフトウェア(モバイルアプリケーションなど)のWebサービスを開発する場合は、HTTP認証またはCookie認証を使用しますか?

HTTP認証:

  • Webサーバーが
  • が自動的に非コードリソース(例えばJPG、XMLなど)(サイドQに適用する必要があれば、そう簡単にWebアプリケーションプラットフォームを変更するには、認証を処理します。ですそこにクッキーベースの認証でこれを行う方法)
  • サーバー認証(.htaccessファイル/ .htpasswdの)

クッキー認証を使用して、データベースに格納された資格情報を統合するのは難しい:?

(クッキーの有効期限を経由して)
  • ファイングレイン・アクセス・コントロールは、(コードリソースが資格情報に基づいて異なる反応をすることができます)
  • セッションの有効期限に対する制御
  • ユーザーログイン経験

他の何を完全に制御検討事項は私が去っていますか?その他の長所/短所

Some helpful discussion is here

+0

この2つのタイプの認証のセキュリティに興味がある場合は、次のURLを参照してください。http://stackoverflow.com/questions/5052607/cookies-vs-basic-auth/5052622#5052622 –

答えて

1

HTTP認証では、コードリソースは要求を行ったユーザーに応じて異なる応答をすることができます。ユーザーの名前は通常、HTTPヘッダーを介してコードに渡されます。

HTTP認証では、引き続きセッションを使用でき、セッションと同じ利点があります。実際には、セッションに格納されているユーザーがHTTP認証で認証されたユーザーと同じであるかどうかをテストできるため、セッションの盗難はそれほど問題にはなりません。同じ理由で、セッション識別子は、Cookieベースの認証である必要があるため、それを推測できないものである必要はありません。

+0

良い点。しかし、あなたは "セッションスチール"は問題ではないと言います。あなたはHTTPパケットを盗聴し、セッションクッキーをコピーすることを指していますか? user:passは[簡単にデコード可能なBase64](http://en.wikipedia.org/wiki/Basic_access_authentication)で送信されるので、HTTP認証も同様に脆弱であるようです。 HTTPを介して送信される場合、HTTP認証資格情報を盗むのはわずかに難しいでしょう。またはあなたのポイントを理解していないのですか? – jpeskin

+0

HTTP認証では、セッション識別子はほとんど使用されません(Webアプリケーションが起動してセッション識別子を調べる前にWebサーバーによるエントリが拒否されているためです)。攻撃者はユーザー名とパスワードも知っている必要があります。一方、許可されるためには、すべてのHTTP要求でユーザー名とパスワードを送信する必要があります。だから、パケットスニッフィングはCookieベースの認証と同じくらい危険です。私は、セッション識別子とのリンクを共有するようなことについて話していました。 – Oswald

0

まあ、クライアントはモバイルアプリや通常のブラウザではない何かであるとき、サーバアプリはまだセッショントラッキングのいくつかの種類を必要とします。セッショントラッキングを実行する最も簡単な方法は、標準のHTTP CookieまたはカスタムセッションIDのような何らかの「クッキー」を使用することです。したがって、セッション識別子は、標準のクッキーメカニズムが使用されていなくても、効果的に「クッキー」です。私は常にクライアントセッションにセッション識別子を割り当てます。したがって、私はCookie認証に投票する傾向があります。

0

HTTP基本認証は、すべての正当なクライアントを最初に変更せずにパスワードを変更する方法がないため、パスワードが侵害されたときの悪夢です。また、個々のユーザーに認証解除を強制することはできません。また、認証資格情報を送信するメカニズムは安全ではありません(httpsでラップしない限り)。

本当に、Cookieベースのシステムを使用し、個々の認証されたセッションの制御