Портал Websphere 7: сервлет проверяет состояние входа в портал? - PullRequest
3 голосов
/ 06 февраля 2011

Я использую портал WebSphere 7.0. Нужно войти в систему, чтобы увидеть любую информацию, которая подходит для всех портлетов. Но кроме того, есть пара сервлетов, которые развертываются в одном и том же военном файле и генерируют необработанные данные для AJAX-скриптов.

В настоящее время можно обойти аутентификацию из WebSphere Portal, если известен URL этого конкретного сервлета. Я хочу изменить это и проверить, вошел ли пользователь в данный момент в портал. Как мне это сделать? Я пытался ((PumaHome) new InitialContext().lookup(new CompositeName(PumaHome.JNDI_NAME))).getProfile().getCurrentUser();, но это возвращает ноль.

1 Ответ

6 голосов
/ 06 февраля 2011

WebSphere Application Server возвращает основного и удаленного пользователя, только если вы сконфигурировали его для использования контекста безопасности JavaEE для вашего веб-приложения. Отредактируйте ваш web.xml так, чтобы он содержал что-то вроде

<security-constraint>
 <display-name>userConstraint</display-name>
 <web-resource-collection>
  <web-resource-name>secure</web-resource-name>
  <url-pattern>/*</url-pattern>
  <http-method>GET</http-method>
  <http-method>POST</http-method>
 </web-resource-collection>
 <auth-constraint>
  <description>user</description>
  <role-name>user</role-name>
 </auth-constraint>
</security-constraint>
<security-role>
 <description>secrole</description>
 <role-name>user</role-name>
</security-role>

и повторно разверните ваше приложение. После развертывания приложения ознакомьтесь с настройками приложения в административной консоли. Вы заметите «Отображение пользователя / роли». Добавьте «всех прошедших проверку пользователей из надежных областей» к вновь добавленной роли. Перезапустите приложение.

После этого анонимные пользователи больше не смогут получить доступ к вашему приложению. Кроме того, getRemoteUser и другие API вернут пользователя должным образом.

...