いくつかの重要なプロパティを持つEclipse RCPアプリケーションがあります。プロパティは、ユーザーが入力した秘密キーに基づいて暗号化されます。バンドル/プラグインは、プロパティーとそれらを暗号化する必要があるかどうかを定義します。そのトリックはこれです:プロパティを定義するバンドルは、(デフォルトで)復号化されたそのプロパティにアクセスすることが許可されている唯一のバンドルでなければなりません。通常、各バンドルには独自に管理されているプロパティが必要ですが、集中管理された場所からプロパティが取得されるため、これは不可能です。Eclipse RCPのメソッドへのアクセスをバンドルで制限する
public byte[] getByteArrayProperty(Object id){
if (method is being called by code in bundle: bundleId)
return decrypt(property);
else
throw new SecurityException("Bundle " + bundleId + " not authorized to access property " + id);
}
任意およびすべての提案をありがとう:
すなわち、どのように私はこれを行うことができます!
./P
呼び出し元のバンドルのIDを使用してプロパティを格納/取得する 'storeProperty(password)'や 'getProperties(password)'などのメソッドを提供するサービス(例えば 'PropertyRepository')店の鍵として?その後、各バンドルは、一意のパスワード(ランダムハッシュ?)を生成する必要があります。これは、格納/検索に使用します。必要に応じて、関連するバンドルのコレクション全体にわたってパスワードをハードコードすることができます。 – drozzy
悪意のあるわけではありませんが、パスワードを見つけるためのソースコードを読んでいる人はいらっしゃいますか。 – Phaedrus
セキュリティを有効にして、その特定のバンドルだけに許可を与えることはどうですか?これにより、パスワードを取り除くことさえできます。セキュリティに関するいくつかのプレゼンテーション(ただし、osgi仕様には詳細があります):http://felix.apache.org/site/presentations.data/Building%20Secure%20OSGi%20Applications%20Workshop.pdf – drozzy