简短版本:当我使用自定义身份验证筛选器时,如何让HttpServletRequest.getRemoteUser()
返回用户名?使用自定义身份验证筛选器时使用getRemoteUser()访问用户名
龙版本:
我修改目前使用的声明性安全(web.xml中&的tomcat-users.xml中),而不是使用自定义(由我写的)认证过滤器Tomcat应用程序(从衍生的javax。 servlet.Filter)。有很多关于如何做到这一点的信息,它看起来非常简单。
但是,现有的应用程序调用HttpServletRequest.getRemoteUser()
,我假设除非我在过滤器中设置此属性,否则它将返回null。我无法找到有关如何在筛选器中填充getRemoteUser()
媒体资源的任何信息(没有setRemoteUser()
)。我找到了一个post out there,建议将请求对象包装在过滤器中。如果必须的话,我会这样做,但我希望有一种侵略性较小的方法来实现这一点。
任何人都可以帮忙吗?
谢谢,看起来很容易。子问题:我看到你创建一个'Principal'并覆盖'getUserPrincipal()'。我们在这个应用程序中不使用'Principal'。如果我们不覆盖'getUserPincipal()'并且只覆盖'getRemoteUser()',我会在什么地方分手? –
不,你不会(这是我的Kerberos身份验证的具体情况)。所有你感兴趣的是getRemoteUser(),只要你返回你通过运行认证协议推导出的值,这就足够了(再次假设'HttpServletRequest'的所有客户端都使用getRemoteUser()来获得用户登录)。 – Vikdor