我正在使用下面的代码进行授权检查。

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


但是,不推荐使用com.tivoli.mts.PDPrincipal上的impact方法,并已使用来自不同包的新PdPrincipal类中的impact方法代替。

com.tivoli.pd.jazn.PDPrincipal


新方法如下。
    公共布尔值隐含(javax.security.auth.Subject主题)

新方法带有一个Subject。

您能否让我知道如何更改代码以使用新方法?我该如何构建主题或可以从某个地方获取主题?

谢谢,
罗希特

最佳答案

我能够为此解决一个问题,因此可以在这里共享它,以便其他面临相同问题的人都可以使用此代码。

我发现新的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对象,如下所示,并调用隐含方法

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

10-04 18:20