当经过身份验证的用户访问不受保护的页面时,getRemoteUser()将返回null

时间:2010-11-16 20:08:42

标签: java security java-ee servlets

我有一个J2EE Web应用程序,包含受保护的页面和不受保护的页面。成功验证并访问受保护的页面后,我立即访问了一个未受保护的页面。此时,getRemoteUser()返回null,就像我从未进行过身份验证一样。这是关于J2EE安全性的预期行为吗?

我已经看了servlet规范(2.4)和J2EE教程(1.4)的安全性部分,我无法找到任何关于访问不受保护的资源是否应该保留用户的评论。身份验证状态。

编辑:我在呈现未受保护的页面之前立即在当前的HttpServletRequest对象上调用getRemoteUser()。

编辑:我还检查了JavaDoc for HttpServletRequest.getRemoteUser()和HttpServletRequest.getUserPrincipal(),他们也没有对此问题发表评论。

1 个答案:

答案 0 :(得分:4)

除非您使用的是JAAS(例如:JOSSO),否则它属于RFC-2617 HTTP Authentication: Basic and Digest Access Authentication

然后归结为客户端是否发送带有请求的凭据。对于基本身份验证,它基于需要凭据的请求的URI。当您访问树的该分支之外的路径时,除非遇到401,否则不会发送凭据。

所以,是的,我期待一个null。