我想用Apache Tomcat实现基于容器的访问控制。我想通过使用其中一个内置验证器阀门(例如FORM,BASIC等),通过IP地址 或 授予对我的Web服务的访问权限。 / p>
使用方案是允许一些提供某些身份验证凭据(最好是通过TLS)的用户从某些静态服务器IP地址或访问,如果他们不在这些可信IP范围内。< / p>
是否可以通过这种方式组合两个阀门的动作?如果不是这样的好/快/简单方法呢?
答案 0 :(得分:0)
不,Tomcat不支持开箱即用。你必须自己编写Authenticator
来做这种事情。
例如,由于您希望合并现有的Authenticator
(让我们说FormAuthenticator
用于通过HTML表单挑战用户的用户名和密码),但也允许旁路对于来自IP范围的用户,只需:
authenticate(Request,HttpServletResponse)
方法覆盖为
Principal
并return true
super.authenticate(request,response)
详细了解FormAuthenticator.authenticate
如何做到这一点,并且您可以轻松地处理Principal
,如上所述。
请记住,如果您只有IP地址,则无法知道要选择哪个用户或角色。所以你可能需要像&#34; IPauthUser&#34;在任何角色集合中都适合该用户。