2016-05-16 45 views

回答

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

您可以使用OIM提供的PasswordMgmtService api。 您可以在您的事件處理程序代碼中使用以下方法在您的密碼生成邏輯中。

PasswordPolicyDescription getApplicablePasswordPolicyDescription(java.lang.String userID) 

PasswordPolicyDescription對象,你有哪些是在創建密碼策略配置的所有屬性。

+0

是這個答案解析你的問題。 – varpekv

+0

它不是完全解決問題,因爲我需要獲得隨機生成的密碼,而不是與密碼策略相關的規則。有了這些規則,我可以構建我的邏輯來生成密碼,但默認密碼處理程序也是這樣,所以我認爲會有一些API允許它這樣做。所以仍然在尋找它 – Chaitanya

2

或者使用下面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());