无法从JSP中的Http Request标头获取用户详细信息以使用Windows身份验证执行SSO

时间:2011-09-14 11:24:33

标签: java jsp iis jboss single-sign-on

我正在使用JBoss-4.2.3.GA并将IIS配置为集成Windows身份验证并禁用了匿名访问。

我使用以下代码创建了一个JSP页面 -

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

其中显示null并且未获取用户名。

但是,如果我使用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,内容长度。

我还查看了JBoss目录中的server.xml,发现 enableLookups =“false” 我将其更改为 enableLookups =“true”但在服务器重启时它会自动修改为 enableLookups =“false”。是否有必要将enableLookups设为true?如果是这样,当我重新启动JBoss服务器时如何阻止它自动设置为假?

如何从请求对象中获取远程用户名?

谢谢!

2 个答案:

答案 0 :(得分:1)

尝试按照here在AJP连接器对象上设置tomcatAuthentication="false"。 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以及独立的Web服务器,但似乎值得一试)

如上面的链接中所述,enableLookups属性仅控制request.getRemoteHost()是否实际执行DNS查询,因此无法正确设置REMOTE_USER标头< / p>

答案 1 :(得分:0)

对于JBoss,我必须编写一个asp并通过Request.ServerVariables(“REMOTE_USER”)获取用户名,然后将其传递给我的JSP