Forgerock - OpenAM - получение всех допустимых сессий для определенного пользователя
Как мне получить все действительные сеансы для определенного пользователя? Например, если пользователь вошел в систему с нескольких устройств и решил сменить пароль или сбросить пароль. Мне нужно, чтобы истек срок действия всех активных сеансов и выходил пользователь из всех устройств. Это особенно важно, если пользователь подозревает, что его учетная запись была взломана, и ему необходимо сменить пароль. В настоящее время я могу получить RME, но не сессии. Я знаю, что это выполнимо из пользовательского интерфейса, но мне нужно поместить эту функцию в SDK или API. Есть ли команда curl, чтобы легко добиться этого?
1 ответ
Сара,
В настоящее время не существует конечной точки, которая позволила бы вам сделать недействительными все пользовательские сеансы. Вам потребуется маркер сеанса каждого сеанса, а затем несколько раз вызывать конечную точку REST /json/session /?_ Action=logout (один раз за сеанс).
При этом вы можете использовать следующий класс, чтобы получить список сеансов для конкретного пользователя:
com.iplanet.dpro.session.service.SessionCount
Вы можете прочитать Javadoc здесь.
Однако существуют некоторые ограничения для использования этого метода. Квота сеанса должна быть включена. Вы можете включить квоту сеанса на консоли администратора, зайдя в Конфигурация -> Глобальные -> Страница сеанса и:
- Установите количество "активных пользовательских сессий"
- Включите "Включить ограничения квоты"
Подводя итог, вы можете создать собственную настраиваемую конечную точку, которая будет принимать идентификатор пользователя и вызывать SessionCount.getAllSessionsByUUID(uuid), чтобы получить список активных сеансов. После этого вы можете перебирать список сеансов и аннулировать их один за другим.
Надеюсь, что это ответ на ваш вопрос.