是否可以在Tomcat中组合RemoteAddrValve和Authentication阀?

时间:2016-02-16 11:50:11

标签: tomcat tomcat7

我想用Apache Tomcat实现基于容器的访问控制。我想通过使用其中一个内置验证器阀门(例如FORM,BASIC等),通过IP地址 授予对我的Web服务的访问权限。 / p>

使用方案是允许一些提供某些身份验证凭据(最好是通过TLS)的用户从某些静态服务器IP地址访问,如果他们不在这些可信IP范围内。< / p>

是否可以通过这种方式组合两个阀门的动作?如果不是这样的好/快/简单方法呢?

1 个答案:

答案 0 :(得分:0)

不,Tomcat不支持开箱即用。你必须自己编写Authenticator来做这种事情。

例如,由于您希望合并现有的Authenticator(让我们说FormAuthenticator用于通过HTML表单挑战用户的用户名和密码),但也允许旁路对于来自IP范围的用户,只需:

  1. FormAuthenticator
  2. 的子类
  3. authenticate(Request,HttpServletResponse)方法覆盖为
    1. 检查IP请求的地址;如果匹配,请在请求上设置Principalreturn true
    2. 如果没有IP匹配,请致电super.authenticate(request,response)
  4. 详细了解FormAuthenticator.authenticate如何做到这一点,并且您可以轻松地处理Principal,如上所述。

    请记住,如果您只有IP地址,则无法知道要选择哪个用户或角色。所以你可能需要像&#34; IPauthUser&#34;在任何角色集合中都适合该用户。