Java 如何使用华夫饼干获取客户端用户名?
我正在Java 如何使用华夫饼干获取客户端用户名?,java,jsp,tomcat,waffle,Java,Jsp,Tomcat,Waffle,我正在windows7上运行tomcat7。所有客户端也在运行Windows 7 我试图在test.jsp页面上打印客户端用户名,因此我使用Waffle。下面是WEB-INF/WEB.xml <filter> <filter-name>SecurityFilter</filter-name> <filter-class>waffle.servlet.NegotiateSecurityFilter</filter-class>
windows7
上运行tomcat7
。所有客户端也在运行Windows 7
我试图在test.jsp
页面上打印客户端用户名,因此我使用Waffle
。下面是WEB-INF/WEB.xml
<filter>
<filter-name>SecurityFilter</filter-name>
<filter-class>waffle.servlet.NegotiateSecurityFilter</filter-class>
<init-param>
<param-name>impersonate</param-name>
<param-value>true</param-value>
</init-param>
</filter>
但是,它总是打印服务器
计算机用户名。我在许多客户机
机器上试用了它,它总是打印服务器
,而不是客户机
用户ID
为什么??如何纠正这一点 神奇之处在于:
$pageContext.request.remoteUser
首先,将waffle-api.jar放在项目类路径上。然后将此xml代码放在web.xml上
<filter>
<filter-name>SecurityFilter</filter-name>
<filter-class>waffle.servlet.NegotiateSecurityFilter</filter-class>
<init-param>
<param-name>principalFormat</param-name>
<param-value>fqn</param-value>
</init-param>
<init-param>
<param-name>roleFormat</param-name>
<param-value>both</param-value>
</init-param>
<init-param>
<param-name>allowGuestLogin</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>securityFilterProviders</param-name>
<param-value>
waffle.servlet.spi.NegotiateSecurityFilterProvider
waffle.servlet.spi.BasicSecurityFilterProvider
</param-value>
</init-param>
<init-param>
<param-name>waffle.servlet.spi.NegotiateSecurityFilterProvider/protocols</param-name>
<param-value>
Negotiate
NTLM
</param-value>
</init-param>
<init-param>
<param-name>waffle.servlet.spi.BasicSecurityFilterProvider/realm</param-name>
<param-value>WaffleFilterDemo</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>SecurityFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
有关更多详细信息,请访问:
功劳归于
资源链接:
非常感谢你。我知道
getRemoteUser()
方法。但是,它要求客户端使用用户ID和密码进行身份验证。也许我应该重申我的问题。我需要在客户端不需要经过身份验证的情况下获取客户端用户ID。但是,getRemoteUser()
会触发一个带有用户ID和密码的弹出窗口。此弹出窗口无法实现此目的。用户输入userid以便可以在页面上打印它。为此,我甚至不需要华夫格。您必须使用ntlm协议才能在不输入凭据的情况下使用华夫格。这对我有用。@john你有什么解决办法吗?谢谢。但是,此方法会触发一个弹出窗口,要求客户端键入用户ID和密码。这违背了目的。我甚至不需要华夫饼干。我可以简单地要求用户在文本字段中键入一个userid。我希望在客户端不需要进行任何额外操作的情况下获取用户IDsteps@john如果是这样的话,要么华夫饼干坏了,要么你做错了什么。它只适用于Internet Explorer。Chrome和Firefox显示弹出式身份验证窗口。@john,正如我所说的,你做错了什么。您必须告诉Firefox执行SPNEGO身份验证,它将执行您需要的操作。修改网络。协商身份验证受信任的URI
和网络。协商身份验证委派URI
,它将起作用。
<filter>
<filter-name>SecurityFilter</filter-name>
<filter-class>waffle.servlet.NegotiateSecurityFilter</filter-class>
<init-param>
<param-name>principalFormat</param-name>
<param-value>fqn</param-value>
</init-param>
<init-param>
<param-name>roleFormat</param-name>
<param-value>both</param-value>
</init-param>
<init-param>
<param-name>allowGuestLogin</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>securityFilterProviders</param-name>
<param-value>
waffle.servlet.spi.NegotiateSecurityFilterProvider
waffle.servlet.spi.BasicSecurityFilterProvider
</param-value>
</init-param>
<init-param>
<param-name>waffle.servlet.spi.NegotiateSecurityFilterProvider/protocols</param-name>
<param-value>
Negotiate
NTLM
</param-value>
</init-param>
<init-param>
<param-name>waffle.servlet.spi.BasicSecurityFilterProvider/realm</param-name>
<param-value>WaffleFilterDemo</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>SecurityFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
HttpServletRequest request = (HttpServletRequest)Executions.getCurrent().getNativeRequest();
String user = request.getRemoteUser();