1

以下のコードを使用して、承認チェックを行っています。

PDPrincipal whoIsit = new PDPrincipal(userId,configURL);
PDPermission whatTheyWant = new PDPermission(objectSpaceName,"TbvA");
boolean haveAccess = whoIsit.implies(whatTheyWant);

ただし、com.tivoli.mts.PDPrincipal の暗黙メソッドは推奨されておらず、別のパッケージの新しい PdPrincipal クラスの暗黙メソッドに置き換えられています。

com.tivoli.pd.jazn.PDPrincipal 

新しい方法は次のとおりです。public boolean Implict(javax.security.auth.Subject subject)

新しいメソッドはサブジェクトを取ります。

新しいメソッドを使用するようにコードを変更する方法を教えてください。サブジェクトを作成するにはどうすればよいですか、またはどこかからサブジェクトを取得できますか?

ありがとう、ロヒット

4

1 に答える 1

1

これに対する解決策を見つけることができたので、ここで共有して、同じ問題に直面している他の人がこのコードを使用できるようにします。

新しい com.tivoli.pd.jazn.PDPermission クラスには、PdAuthorization コンテキストと、以前のクラス com.tivoli と同じ許可検査を行う com.tivoli.pd.jazn.PDPrincipal オブジェクトを取り込むメソッドが含まれていることがわかりました。 .mts.PDPrincipal を使用します。

以下に、同じ認証を行う方法を示します。このコードでは、JAAS コードを実装する必要はありません。

まず、以下に示すように PdAuthorizationContext を構築します。閉じるまで再利用できるように、必ず静的な PdAuthorizationContext オブジェクトを定義してください。承認チェックごとに PDAuthorizationContext を構築することはリソースを大量に消費するため、お勧めできません。ロジックの最後でコンテキストを閉じます

URL configURL = new URL("file:" + String locationToTamConfigFile); PDAuthorizationContext pdAuthCtx = new PDAuthorizationContext(configURL);

次に、以下に示すように新しい PDPrincipal オブジェクトと PdPermission オブジェクトを作成し、implicit メソッドを呼び出します。

com.tivoli.pd.jazn.PDPrincipal pdPrincipal = new com.tivoli.pd.jazn.PDPrincipal(pdAuthCtx,userId); com.tivoli.pd.jazn.PDPermission pdPermission = new com.tivoli.pd.jazn.PDPermission(objectSpaceName,"TbvA"); boolean newimpliesTry = pdPermission.implies(pdAuthCtx,pdPrincipal);

于 2015-09-04T05:56:37.403 に答える