PDPrincipal.implies弃用,替代类暗示方法需要Subject

时间:2015-08-07 03:33:18

标签: tivoli tivoli-identity-manager

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

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类中的implies方法已被弃用。

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

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

1 个答案:

答案 0 :(得分: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);

Next构造新的PDPrincipal和PdPermission对象,如下所示,并调用implies方法

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);