我正在使用OIM UserManager API創建一個事件處理程序來修改用戶密碼。但現在我需要考慮密碼策略,然後生成與OIM中定義的密碼策略兼容的新密碼。如何在OIM中生成基於密碼策略的密碼11gr2ps2
您可以指出一些API和方法可以幫助嗎?
我正在使用OIM UserManager API創建一個事件處理程序來修改用戶密碼。但現在我需要考慮密碼策略,然後生成與OIM中定義的密碼策略兼容的新密碼。如何在OIM中生成基於密碼策略的密碼11gr2ps2
您可以指出一些API和方法可以幫助嗎?
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提供的PasswordMgmtService
api。 您可以在您的事件處理程序代碼中使用以下方法在您的密碼生成邏輯中。
PasswordPolicyDescription getApplicablePasswordPolicyDescription(java.lang.String userID)
在PasswordPolicyDescription
對象,你有哪些是在創建密碼策略配置的所有屬性。
或者使用下面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());
是這個答案解析你的問題。 – varpekv
它不是完全解決問題,因爲我需要獲得隨機生成的密碼,而不是與密碼策略相關的規則。有了這些規則,我可以構建我的邏輯來生成密碼,但默認密碼處理程序也是這樣,所以我認爲會有一些API允許它這樣做。所以仍然在尋找它 – Chaitanya