Не удалось получить сведения о пользователе из заголовка HttpRequest в JSP для выполнения единого входа с проверкой подлинности Windows - PullRequest
2 голосов
/ 14 сентября 2011

Я использую JBoss-4.2.3.GA и настроил IIS на Встроенная проверка подлинности Windows и отключил анонимный доступ.

Я создал страницу JSP со следующим кодом -

<% out.print(request.getHeader("Proxy-Remote-User")); %>

Который отображает ноль и не получает имя пользователя.

Но если я попробую использовать ASP с -

Request.ServerVariables("AUTH_USER")

Это дает мне правильное имя пользователя.

Я пробовал другие методы в объекте запроса, как -

out.print(request.getHeader("AUTH_USER"));
out.print(request.getUserPrincipal());
out.print(request.getHeaderNames());
out.print(request.getRemoteUser());

Но все они дали нулевые значения.

Список заголовков в объекте запроса, который я получаю, -
соединение, принять, принять-кодировать, принять-язык, авторизация, cookie, хост, пользовательский агент, tomcatworkeridx6a6b0000, длина контента. Я также заглянул в файл server.xml в каталоге JBoss и обнаружил enableLookups = "false" Я изменил его на enableLookups = "true" , но он автоматически изменился на enableLookups = "false" при перезагрузке сервера. Необходимо ли включить enableLookups как true? Если это так, как предотвратить автоматическую установку значения false при перезапуске сервера JBoss?

Как я могу получить имя удаленного пользователя из объекта запроса?

Спасибо!

Ответы [ 2 ]

1 голос
/ 14 сентября 2011

Попробуйте установить tomcatAuthentication="false" на вашем объекте коннектора AJP, как указано здесь . Ваш коннектор в server.xml должен выглядеть примерно так:

<Connector port="8009" address="${jboss.bind.address}"
  emptySessionPath="true" enableLookups="false" redirectPort="8443" 
  protocol="AJP/1.3" connectionTimeout="600000" maxThreads="200"
  tomcatAuthentication="false" />

(Я не уверен на 100%, что относится к AS, а также к автономному веб-серверу, но, похоже, стоит попробовать)

Как отмечено в ссылке выше, свойство enableLookups просто контролирует, действительно ли request.getRemoteHost() выполняет DNS-запрос или нет, и, следовательно, не имеет никакого отношения к правильной установке заголовка REMOTE_USER

0 голосов
/ 14 сентября 2015

Для JBoss мне пришлось написать asp и получить имя пользователя по Request.ServerVariables ("REMOTE_USER"), а затем передать его в мой JSP

...