0

我有以下运行代码来确定用户是否可以编辑对象命名空间

com.tivoli.mts.PDPrincipal whoIsit = new PDPrincipal(userId,configURL);
    com.tivoli.mts.PDPermission whatTheyWant = new PDPermission(objectSpaceName,GMTConstants.tamPermissions);

    boolean haveAccess = whoIsit.implies(whatTheyWant);

问题是 com.tivoli.mts.PDPrincipal 类的隐含方法已被弃用。

这已被 com.tivoli.pd.jazn.PDPrincipal.implies(javax.security.auth.Subject subject) 取代

问题是我如何构造这个 Subject 对象。其次,我可以继续使用已弃用的类和方法吗?

4

1 回答 1

0

我能够为此制定解决方案,因此在此处共享它,以便其他面临相同问题的人可以使用此代码。

我发现新的 com.tivoli.pd.jazn.PDPermission 类有一个方法,它接受 PdAuthorization 上下文和一个 com.tivoli.pd.jazn.PDPrincipal 对象,它执行与前一个类 com.tivoli 相同的授权检查.mts.PDPrincipal 用来做。

下面提到的是如何进行相同的授权。使用此代码,您无需实现 JAAS 代码。

首先构造 PdAuthorizationContext,如下所示。确保定义一个静态 PdAuthorizationContext 对象,以便在您关闭它之前可以重复使用它。为每个授权检查构造 PDAuthorizationContext 是资源密集型的,不推荐。在逻辑结束时关闭上下文

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

接下来构造新的 PDPrincipal 和 PdPermission 对象,如下所示并调用暗示方法

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-04T06:05:05.427 回答