Определение пользователя сети из приложения Java Websphere

#java #web-applications #websphere

#java #веб-приложения #websphere

Вопрос:

У меня есть внутреннее веб-приложение, созданное на Java 1.6 и Websphere. Только пользователи, вошедшие в домен, могут получить доступ к приложению. Мне нужно иметь возможность получить доступ к имени пользователя любого пользователя, использующего приложение. Мы используем контроллеры домена Windows. Я довольно новичок в Java и не могу понять, как получить эту информацию. Будем признательны за любую помощь. Если вам нужна дополнительная информация, я буду рад предоставить ее.

Спасибо,

Эндрю

Комментарии:

1. Позвольте мне проверить это. Я свяжусь с сетевыми пользователями, чтобы узнать, как именно они это делают. Может занять несколько часов, поскольку я нахожусь на 8 часовых поясов впереди них.

Ответ №1:

Вот код, который в конечном итоге сработал.

 LdapClient ldapClient = new LdapClient();
Boolean foundUserInAD = Boolean.FALSE;
foundUserInAD = ldapClient.userIsInAD(userName, password);

if(foundUserInAD) {
    //Do stuff.
}
  

Ответ №2:

Из того, что я знаю о J2EE и веб-приложениях, обычно вы можете получить основной объект, а затем извлечь из него имя пользователя. Это то, что вам нужно?

Вот пример того, как вы могли бы сделать это в сервлете внутри методов doGet или doPost:

 //here is the HttpServletRequest object. retrieve user from it.
Principal principal = request.getUserPrincipal();
//now get the name out of it.
String userName = principal.getName();
  

Получить пароль намного сложнее, но если все, что вам нужно, это имя пользователя, это должно быть имя, с которым они «вошли» на ваш WebSphere server (т. Е. любой идентификатор, который был передан ему).

Это то, что вы ищете?

Ответ №3:

Смотрите:javax.servlet.http.HttpServletRequest.getRemoteUser()

 Returns the login of the user making this request, if the user has been authenticated, or null if the user has not been authenticated.
  

Ответ №4:

Ваш вопрос на самом деле не относится к Java, но был связан. В принципе, если вы хотите использовать средства безопасности WAS для веб-безопасности, все ваши пользователи должны быть найдены из LDAP, для которого настроен WAS. Если для вас это невозможно, пожалуйста, внесите изменения в приложение, чтобы оно реализовало свои собственные механизмы безопасности (аутентификации и авторизации).

Похоже, кто-то включил роль безопасности JavaEE для сервлетов, используемых вашим приложением, и, возможно, также для SPNEGO. Это довольно приятная конфигурация, но она действительно не позволяет никому, кто не найден в LDAP по умолчанию, получить доступ к чему-либо.