我有一个以下代码来重置使用IBM Portal的PUMA API的密码: 下面的代码检查用户输入的旧密码是否正确:
loginService.checkPassword(userName, oldpswd.toCharArray());
在代码下方更新新密码:
ibmPumaUtility.updateUserPassword(userName,resetPasswordForm.getNewPassword());
PumaController pController = pumaHome.getController();
PumaLocator locator = pumaHome.getLocator();
String defaultRealm = "xyz";
User user = locator.findUserByIdentifier("uid=" + username + ",cn=users,o=" + defaultRealm);
HashMap<String, String> userAttrs = new HashMap<String, String>();
userAttrs.put("password", updatedPassword);
pController.setAttributes(user, userAttrs);
问题是,当用户再次使用旧密码登录时,他可以登录但只能在5-10分钟内登录,之后他可以使用新密码登录。
有人可以建议我如何解决这个问题。
答案 0 :(得分:2)
用于验证&#34;旧密码&#34;的API调用。仍然没问题: loginService.checkPassword(userName,oldpswd.toCharArray());
实际上,默认情况下,在WAS级别上使用性能优化验证。这与大多数用例相匹配。 &#34;真正的登录&#34;不会让你进入 - 这真的会检查当前的密码。 因此,如果您打开第二个浏览器并尝试使用&#34;旧密码&#34;登录到门户网站。你没有获得有效的会话。 (某些LDAP服务器有例外,因为它们仍然允许使用旧密码登录大约60分钟。)
但是如果你需要API立即返回正确的值,那么就有一个配置选项。 你切换了&#34;基本登录&#34;到&#34;完全登录&#34;通过: •单击WP AuthenticationService。在“其他属性”下,选择“自定义属性”。
•单击“新建”以创建新的自定义属性。
•在“名称”字段中,键入authentication.basic.login.target
•在“值”字段中,键入Portal_LTPA
•单击“确定”以确认更改。
•保存配置。
•重启服务器。
在此更改之后,验证将利用完整的Portal_LTPA登录堆栈并返回错误,如果&#34;旧密码&#34;使用。