Как сгенерировать пароль на основе политики паролей в OIM 11gr2ps2

Я создаю обработчик событий для изменения пароля пользователя с помощью OIM UserManager API. Но теперь мне нужно рассмотреть политику паролей, а затем сгенерировать новый пароль, совместимый с политикой паролей, определенной в OIM.

Не могли бы вы указать некоторые API и методы, которые могут здесь помочь?


person SME    schedule 16.05.2016    source источник


Ответы (3)


import oracle.idm.common.ipf.api.password.RandomPasswordGenerator;
import oracle.idm.common.ipf.api.password.RandomPasswordGeneratorImpl;

Приведенные выше классы фактически дают обработку случайно сгенерированного пароля, который я искал. В приведенном ниже коде показана реализация того же самого.

PasswordPolicyInfo passwordPolicyInfo = ((PasswordMgmtService)Platform.getService(PasswordMgmtService.class)).getApplicablePasswordPolicy(entityId, Boolean.valueOf(false));

  RandomPasswordGenerator randomPasswordGenerator = new RandomPasswordGeneratorImpl();

  OimPasswordPolicy policy = new OimPasswordPolicy(Utils.getIpfPasswordPolicyInfoVO(passwordPolicyInfo));
  policy.setId(passwordPolicyInfo.getId());
  policy.setName(passwordPolicyInfo.getName());

  char[] generatedPassword = randomPasswordGenerator.generatePassword(policy, null);
person SME    schedule 19.09.2016

В качестве альтернативы, используя приведенные ниже API-интерфейсы OIM, вы можете сгенерировать пароль, а также проверить его на соответствие любой политике в OIM:

import oracle.iam.passwordmgmt.api.PasswordMgmtService;
import oracle.iam.passwordmgmt.domain.generator.RandomPasswordGeneratorImpl;

Вот фрагмент:

RandomPasswordGeneratorImpl randomPasswordGenerator = new RandomPasswordGeneratorImpl();
UserRepository userRepository = new DBUserRepository();
UserInfo usrInfo = userRepository.getUserAndManagerInfo(usrLogin);
String generatedPassword = new String(randomPasswordGenerator.generatePassword(Utils.getUser(usrInfo)));
PasswordMgmtService passMgmt = Platform.getService(PasswordMgmtService.class);
ValidationResult result = passMgmt.validatePasswordAgainstPolicy(generatedPassword.toCharArray(), Utils.getUser(usrInfo), Locale.getDefault());
person ps2090    schedule 16.01.2017

Вы можете использовать PasswordMgmtService API, предоставленный OIM. Вы можете использовать приведенный ниже метод в логике генерации пароля в коде обработчика событий.

PasswordPolicyDescription getApplicablePasswordPolicyDescription(java.lang.String userID) 

В объекте PasswordPolicyDescription у вас есть все свойства, которые были настроены при создании политики паролей.

person varpekv    schedule 31.08.2016
comment
Это не решает проблему полностью, так как мне нужно получить случайно сгенерированный пароль, а не правила, связанные с политикой паролей. С помощью этих правил я могу построить свою логику для генерации пароля, но обработчик паролей по умолчанию делает то же самое, поэтому я думаю, что будет какой-то API, который позволит ему это сделать. Так что все еще ищу его - person SME; 19.09.2016