そこで、RESTeasyとGoogle AppEngineを使用してREST Webサービスを開発しています。私の質問はGAEとは関係ありませんが、重要な場合に備えて言及しました。当然、私のリソースと私自身のユーザー(Googleではない)を保護するため。
REST Webサービスを保護することは、非常に物議を醸す主題、または少なくとも非常に「リベラルな」主題のようです。RESTは、この問題に標準を課しません。私がWebと文献で調査したことから、私のアプリケーションに適合すると思われるアプローチが少なくとも3つあります。
OAuthは最も完全なアプローチのようです。ただし、サードパーティのアプリケーションを承認する必要がないため、このような複雑さは必要ないと思います。これは、私自身のクライアントアプリケーションによってのみ使用されるWebサービスです。
HTTP BasicおよびHTTP Digestは、Web上で最も単純なものとして表示されます、しかし実際には、たとえば、RESTeasyを使用してそれらの具体的な実装を見つけたことがありません。 RESTeasyのドキュメントで このページ と これ を見つけました。それらは確かに非常に興味深いものですが、この主題(HTTP基本またはダイジェスト)についてはほとんどまたはまったく説明していません。
だから、ここで私は尋ねています:
RESTeasyでHTTP BasicまたはDigestを使用してWebサービスを保護するにはどうすればよいですか?
おそらくそれは非常に単純なので、ドキュメントや他の場所で言及する価値はありませんか?また、RESTful Webサービスの保護に関する洞察を誰かが私に提供してくれるなら、それは役に立つかもしれません。
私は正しいアプローチを選択していますか?
RESTeasyのインターセプターを使用してこれを達成することができました。基本的に、リクエストはクラスのようなリスナーを使用してインターセプトされます。このクラスでは、リクエストのHTTPヘッダーを検査してから、通常のBasic-Authプロセスが続行されます。
便利なリンク:
http://en.wikipedia.org/wiki/Basic_access_authentication
メッセージヘッダーのパラメーターをREST API で渡す
http://www.alemoi.com/dev/httpaccess/ (サーブレット部分)
これが誰にでも役立つことを願っています。
ありがとう。
REST APIを保護する最も簡単な方法は、SSLを介したHTTP基本認証を使用することです。ヘッダーは暗号化されているため、ダイジェストを使用する意味はあまりありません。これは、維持できる限りうまく機能するはずです。クライアントで安全なパスワード。
sSLを使用しない認証方法を使用すると、セキュリティ上のリスクに確実に直面します。
ただし、SSLを使用した場合は、通常、パフォーマンスが低下します。
Oauthは、実際には、サードパーティがWebサービスにアクセスできるようにするためのソリューションです。
選択が限られているため、認証を必要とする現在のWebサービスに対する私のソリューションでは、SSL +基本の組み合わせを使用していました。
OAuth 2 の使用を検討するかもしれません。 OAuth 1よりも大幅にシンプルで、FacebookやGoogleの大規模なREST APIで積極的に使用されています。