如何在OIM 11gr2ps2中生成基于密码策略的密码

时间:2016-05-16 09:04:07

标签: event-handling change-password oim

我正在创建一个事件处理程序来使用OIM UserManager API修改用户密码。但现在我需要考虑密码策略,然后生成与OIM中定义的密码策略兼容的新密码。

请指点一些可以帮助的API和方法吗?

3 个答案:

答案 0 :(得分:2)

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);

答案 1 :(得分:2)

或者通过使用以下OIM API,您可以生成密码并根据OIM中的任何策略对其进行验证:

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());

以下是摘录:

{{1}}

答案 2 :(得分:0)

您可以使用OIM提供的PasswordMgmtService api。 您可以在事件处理程序代码中使用密码生成逻辑中的以下方法。

PasswordPolicyDescription getApplicablePasswordPolicyDescription(java.lang.String userID) 

PasswordPolicyDescription对象中,您拥有创建密码策略时配置的所有属性。