com.tivoli.mts.PDPrincipal.implies(com.tivoli.mts.PDPermission) 已弃用
Posted
技术标签:
【中文标题】com.tivoli.mts.PDPrincipal.implies(com.tivoli.mts.PDPermission) 已弃用【英文标题】:com.tivoli.mts.PDPrincipal.implies(com.tivoli.mts.PDPermission) deprecated 【发布时间】:2015-08-25 02:39:36 【问题描述】:我正在使用以下代码进行授权检查。
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 主题)
新方法接受一个主题。
您能否告诉我如何更改我的代码以使用新方法?我如何构建主题或者我可以从某个地方获取主题?
谢谢, 罗希特
【问题讨论】:
【参考方案1】:我能够为此制定一个解决方案,因此在这里分享它,以便遇到相同问题的任何其他人都可以使用此代码。
我发现新的 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对象并调用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);
【讨论】:
以上是关于com.tivoli.mts.PDPrincipal.implies(com.tivoli.mts.PDPermission) 已弃用的主要内容,如果未能解决你的问题,请参考以下文章