2

HttpServiceのおかげで、サーブレットを開発してOSGIコンテナに登録しています。私の目標は、OSGIコンテナに登録されているすべてのサーブレットを保護することです。セキュリティを処理するために、独自のhandleSecurityメソッド実装を使用してサーブレットをHttpContextに登録できることを確認しました。

しかし、バンドルがサーブレットをデフォルトのHttpContextに登録する場合を考えています(セキュリティがないことを意味します)。

だから私の質問は、私のOSGIコンテナにデプロイされたすべてのサーブレットのセキュリティを一度に強制する方法はありますか?

4

3 に答える 3

3

簡単な答えは、HttpServiceを使用する場合は「いいえ」です。

長い答えですが、OSGi仕様ではまだ利用できないホワイトボードエクステンダーを使用すると、このようなことが達成される可能性がありますが、felixとpax-webはそれを提供します。ホワイトボードエクステンダーを使用すると、サーブレットをHttpContextへの参照(プロパティとして)と組み合わせて登録できます。もちろん、このHttpContextも「カスタマイズされた」ものである必要がありますが、登録する必要があるのは1回だけで、サーブレットから参照できます。これはおそらくあなたがあなたの質問に最も近いものです。

于 2012-09-20T13:10:19.890 に答える
3

HttpService.registerServletの動作をオーバーライドするために、サービスフック機能(OSGI 4.3)を使用します。私のフックでは、HttContext実装の使用を強制します。

このソリューションでは、サーブレットをHttpServiceに登録するバンドルはすべて、私のHttpContext実装によって保護されます。

于 2012-09-21T07:03:48.873 に答える
3

Apache Felixホワイトボードエクステンダーを使用してサーブレットフィルターを登録できる場合、さまざまな戦略をサポートするのが簡単なので、これはセキュリティを処理するためのはるかに優れた方法です。意図は、フィルターとホワイトボードがHttpサービスの次のアップデートでサポートされることです:https ://github.com/osgi/design/tree/master/rfcs/rfc0189

提案されているようにフックを使用することもできますが、使用しないでください。フックは、アプリケーション指向の側面ではなく、深いミドルウェアを対象としていました。それらは開始/停止順序の問題を引き起こし、デバッグツールに対してシステムをより不透明にします。つまり、システムをはるかに複雑にします。これらの目的でフックを使い始めると、さらに多くのユースケースが見つかり、それらが相互作用し始めます。非常にコアなシステムミドルウェアを除いて、それらから離れてください。

于 2013-09-19T06:41:11.243 に答える