我正在编写Tomcat应用程序,并且正在对Google的oauth2服务进行身份验证。我原本打算编写一个简单的Filter
来进行身份验证,但无法在Filter
中设置用户主体。根据我的理解,您必须让Filter
调用已实施的HttpServletRequestWrapper
并将其设置在该类as seen in this post内
我非常确定Tomcat只会实例化您可能定义的每种类型的Filter
,并且所有请求都会通过Filter
链中的这个单个对象(如果我错了,请纠正我)。
在链接到代码中,调用代码是否正确
next.doFilter(new UserRoleRequestWrapper(user, roles, request), response);
每个请求都在实例化一个新的UserRoleRequestWrapper
?这个过滤器是否应该有一个请求包装器实例化,以获得共享amonsgst所有请求?我很难找到关于这些类的规范的文档。
答案 0 :(得分:0)
我不认为过滤器是您正在寻找的。对于这个目的来说似乎并不合适......没有为这些用例创建过滤器;它们是为处理前/后处理请求和响应而创建的,重点是操纵实际的请求/响应数据,而不是客户端 - 服务器通信的其他方面(例如安全性)。请记住,对用户进行身份验证可能会产生进一步的影响,而不仅仅是处理HTTP请求周期。安全性与HTTP循环相比,在JavaEE框架中更低。
如果你想对oauth2进行身份验证,你应该为它实现某种JAAS实现,然后将其插入Tomcat。