PDPrincipal.implies устарел, метод implies альтернативного класса требует субъекта
У меня есть следующий код выполнения, чтобы определить, может ли пользователь редактировать пространство имен объекта
com.tivoli.mts.PDPrincipal whoIsit = new PDPrincipal(userId,configURL);
com.tivoli.mts.PDPermission whatTheyWant = new PDPermission(objectSpaceName,GMTConstants.tamPermissions);
boolean haveAccess = whoIsit.implies(whatTheyWant);
Проблема в том, что метод implies из класса com.tivoli.mts.PDPrincipal устарел.
Это было заменено com.tivoli.pd.jazn.PDPrincipal.implies(тема javax.security.auth.Subject)
Вопрос в том, как мне построить этот объект Subject. Во-вторых, могу ли я продолжать использовать устаревшие классы и метод?
1 ответ
Я смог найти решение для этого, поэтому поделился им здесь, чтобы любой, кто столкнулся с той же проблемой, мог использовать этот код.
Я обнаружил, что у нового класса com.tivoli.pd.jazn.PDPermission есть метод подразумевает, который принимает контекст PdAuthorization, и объект com.tivoli.pd.jazn.PDPrincipal, который выполняет ту же авторизацию, что и предыдущий класс com.tivoli..mts.PDPrinal для использования.
Упомянуто ниже, как можно сделать то же самое разрешение. С этим кодом вам не нужно реализовывать код JAAS.
Сначала создайте PdAuthorizationContext, как показано ниже. Убедитесь, что вы определили статический объект PdAuthorizationContext, чтобы его можно было использовать повторно, пока вы не закроете его. Создание PDAuthorizationContext для каждой проверки авторизации требует значительных ресурсов и не рекомендуется. закройте контекст в конце вашей логики
URL configURL = new URL("file:" + 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);