java - com.tivoli.mts.PDPrincipal.implies(com.tivoli.mts.PDPermission) 已弃用

标签 java jaas tivoli tivoli-identity-manager

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

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

但是,com.tivoli.mts.PDPrincipal 上的implied 方法已被弃用,并已被来自不同包的新PdPrincipal 类的implied 方法所取代。

com.tivoli.pd.jazn.PDPrincipal 

新方法如下。 公共(public) boolean 值意味着(javax.security.auth.Subject主题)

新方法需要一个主题。

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

谢谢, 罗希特

最佳答案

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

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

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

首先构造 PdAuthorizationContext,如下所示。确保定义一个静态 PdAuthorizationContext 对象,以便可以重复使用它,直到您关闭它。为每个授权检查构造 PDAuthorizationContext 是资源密集型的,不建议这样做。在逻辑末尾关闭上下文

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

下一步构造新的 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);

关于java - com.tivoli.mts.PDPrincipal.implies(com.tivoli.mts.PDPermission) 已弃用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32194689/

相关文章:

java - 如何将定制的 Java 程序作为 Java 插件添加到 IBM Tivoli Provisioning Manager (TPM)?

java - 网络打印机对 Windows Server 2008 JBoss EAP 6.3.0 上的lookupPrintServices不可见

security - Websphere 中 Java 2 安全性、J2EE 安全性和 JAAS J2C 身份验证之间的区别

jsf - 使用 JAAS 登录后出现 RES_NOT_FOUND

docker - SQL1032N 未发出启动数据库管理器命令。 SQLSTATE=57019

java - Netcool 对象服务器 API

java - 使用递归打印星号

java - 存储可修改数组的各种方式的效率

java - 使用 Android MediaCodec 进行视频转码

java - Flink 集群上的 Kafka jaas 验证失败