我使用下面的代码来做授权检查。
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 新方法如下所示。公共布尔值暗示(javax.security.auth.Subject主题)
新方法采用了一个主题。
您能告诉我如何更改我的代码才能使用新方法吗?我如何构造主语,或者我可以从某个地方获取主语?
谢谢你,罗希特
发布于 2015-09-04 13:56:37
我想出了一个解决方案,因此在这里分享,这样任何其他面临同样问题的人都可以使用这段代码。
我发现新的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);
https://stackoverflow.com/questions/32194689
复制相似问题