いくつかのWebサービスを実装するJavaサーバーアプリケーションがあるとします。また、アプリケーションユーザーを認証できるとします。JavaアプリケーションでWebサービスの使用を制限する方法は?
ここでは、ユーザーあたりの制限数をと追加したいと思います。レートリミット(要求数/秒)、最大要求サイズなど
これを行うためにJavaには「すぐに使える」ライブラリがありますか?
いくつかのWebサービスを実装するJavaサーバーアプリケーションがあるとします。また、アプリケーションユーザーを認証できるとします。JavaアプリケーションでWebサービスの使用を制限する方法は?
ここでは、ユーザーあたりの制限数をと追加したいと思います。レートリミット(要求数/秒)、最大要求サイズなど
これを行うためにJavaには「すぐに使える」ライブラリがありますか?
私はまだ利用可能なものを見ています。しかし、Java EE統合セキュリティを使用している場合は、独自のLoginModuleを実装してブートストラップすることができます。ここでは、Webサービスコードに触れずにチェックを行うことができます。
はあなたがインターセプタを設定することで、ApacheのCXFでそれを行うことができhttp://docs.oracle.com/javase/6/docs/technotes/guides/security/jaas/JAASLMDevGuide.html
すべての通話が通過する認証/認可サービスをお持ちの場合は、このユーザーごとの制限をそれに組み込むことができます。私はあなたがカスタムコーディングなしで行うことができるフレームワークを認識していません。
理想的には、この種のロジックは、サービス自体の外部で構成するのが最適です。私はラクダが要求の数を調整して提供していることを知っています。独自のスロットルポリシーを定義して、ユーザーごとの要求数をマップできます。
Simpleインターセプタクラスを作成する必要があります。カスタムチェックを入れるonPreExecute()メソッドがあります。私は春にそれを使用しました。
アイデンティティに基づく制限(ユーザーXはサービスを1分間に100回しか呼び出せないなど)を明確にするだけですか? – home
はい、アイデンティティに基づく制限を意味します。 – Michael