Есть ли способ извлечь имя пользователя Maximo из JSESSIONID внутри настраиваемого сервлета Java? - PullRequest
1 голос
/ 04 августа 2020

Я создаю собственный сервлет Java внутри Maximo. Я хочу использовать аутентификацию Maximo, и как часть этого мне нужен способ получить информацию о пользователе (имя пользователя, отображаемое имя и т. Д. c.) Из объекта HttpServletRequest. Я могу получить доступ к JSESSIONID из файлов cookie запроса (как я понимаю, именно так Maximo / WebSphere отслеживает ваш сеанс пользователя), но мне не удалось найти способ использовать это для получения UserInfo object.

Я просмотрел документацию Javadocs, пытаясь что-то выяснить, но мне не повезло. Похоже, что Java настройки в Maximo в настоящее время довольно редки, поэтому ресурсов для этого не так много.

Ответы [ 2 ]

1 голос
/ 25 августа 2020

Получил это после некоторого покопания в Javadocs. Оказывается, я могу отключить MXSession от объекта сеанса запроса следующим образом:

Enumeration e = req.getSession().getAttributeNames();
String username = null;
while (e.hasMoreElements()) {
String attrName = (String) e.nextElement();
if (attrName.equals("MXSession")) {
  MXSession session = (MXSession) req
    .getSession()
    .getAttribute("MXSession");
  UserInfo user = session.getUserInfo();
  if (user != null) {
    username = user.getUserName().toLowerCase();
  }
}

Пример проповедника также работает, но только если есть активный WebclientSession, и для моего конкретного случая использования я хочу он также будет работать, если есть только OslcSession, с которым не всегда связан WebclientSession. Это решение работает в любом случае, поскольку MXSession всегда доступен.

1 голос
/ 11 августа 2020

А вы пробовали psdi.webclient.system.session.WebClientSessionManager.getWebClientSessionManager(javax.servlet.http.HttpSession session).getWebClientSession(javax.servlet.http.HttpServletRequest request)?

...