如何在 OIM 11gr2ps2 中生成基于密码策略的密码
How to generate password policy based password in OIM 11gr2ps2
我正在创建事件处理程序以使用 OIM UserManager API 修改用户密码。但现在我需要考虑密码策略,然后生成与 OIM 中定义的密码策略兼容的新密码。
能否请您指出一些 APIs 和方法可以帮助这里?
可以使用OIM提供的PasswordMgmtService
api。
您可以在事件处理程序代码中的密码生成逻辑中使用以下方法。
PasswordPolicyDescription getApplicablePasswordPolicyDescription(java.lang.String userID)
在 PasswordPolicyDescription
对象中,您拥有创建密码策略时配置的所有属性。
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);
或者使用以下 OIM API,您可以生成密码并根据 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());
我正在创建事件处理程序以使用 OIM UserManager API 修改用户密码。但现在我需要考虑密码策略,然后生成与 OIM 中定义的密码策略兼容的新密码。
能否请您指出一些 APIs 和方法可以帮助这里?
可以使用OIM提供的PasswordMgmtService
api。
您可以在事件处理程序代码中的密码生成逻辑中使用以下方法。
PasswordPolicyDescription getApplicablePasswordPolicyDescription(java.lang.String userID)
在 PasswordPolicyDescription
对象中,您拥有创建密码策略时配置的所有属性。
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);
或者使用以下 OIM API,您可以生成密码并根据 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());