Как сбросить пароль в приложении IBM Portlet с помощью PUMA API

У меня есть приведенный ниже код для сброса пароля, который использует PUMA API портала IBM: приведенный ниже код проверяет, правильно ли пользователь ввел старый пароль:

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 минут, после чего он может войти в систему с новым паролем.

Может кто-нибудь предложить мне, как решить эту проблему.


person user3592257    schedule 06.05.2015    source источник
comment
проблема должна быть вызвана компонентом безопасности WebSphere. Он кэширует объект безопасности на некоторое время. Я думал, что у меня есть PMR за такое поведение, но не помню, было ли это или нет. Вы можете проверить, можете ли вы аннулировать запись в кэше WebSphere Subject, когда пользователь выходит из системы.   -  person Stefan Schmitt    schedule 06.05.2015
comment
@StefanSchmitt Я новичок в приложении Webshpere Portal. Не могли бы вы предложить, что такое и как проверить кэш WebSphere Subject?   -  person user3592257    schedule 07.05.2015
comment
проверьте ответ Саши, который должен помочь   -  person Stefan Schmitt    schedule 07.05.2015


Ответы (1)


вызов API, который вы используете для проверки правильности «старого пароля»: loginService.checkPassword(userName, oldpswd.toCharArray());

Действительно ли по умолчанию используется оптимизированная по производительности проверка на уровне WAS. Это соответствует большинству вариантов использования. «Настоящий логин» вас не впустит — он действительно проверяет текущий пароль. Поэтому, если вы откроете второй браузер и попытаетесь войти на портал в это время со «старым паролем», вы не получите действительный сеанс. (есть исключение для некоторых серверов LDAP, поскольку они все еще позволяют войти в систему со старым паролем в течение примерно 60 минут).

Но если вам требуется, чтобы API немедленно возвращал правильное значение, для этого есть опция конфигурации. Вы переключаете «базовый вход» на «полный вход» следующим образом: • Щелкните WP AuthenticationService. В разделе «Дополнительные свойства» выберите «Пользовательские свойства».

• Нажмите «Создать», чтобы создать новые настраиваемые свойства.

• В поле Имя введите authentication.basic.login.target.

• В поле Значение введите Portal_LTPA.

• Нажмите OK, чтобы подтвердить изменения.

• Сохраните конфигурацию.

• Перезагрузите сервер.

После этого изменения проверка будет использовать полный стек входа в систему Portal_LTPA и возвратится с ошибкой, если используется «старый пароль».

person Sascha Schefenacker    schedule 07.05.2015