Spring Security:推迟到HTTP Basic Auth之前的IP地址白名单

Nei*_*lis 5 spring-security basic-authentication

我有一个可以通过我使用Spring Security的DaoAuthenticationProvider锁定的servlet访问的URL.我现在要求某些传入的IP地址必须列入白名单,因此不要求进行身份验证.

如果IP地址与已知的IP地址匹配,我可以通过覆盖DaoAuthenticationProvider的身份验证方法并绕过超类的实现来轻松解决这个问题,但这只适用于请求的发送者提供用户名和密码(即使它是无意义的).否则,提供者不会被调用.

最好的方法是什么?如果传入已知的IP地址,是否应该使用过滤器绕过身份验证过程?

dbr*_*aux 10

你能用这个hasIpAddress()表达吗?我们这样做似乎是一个类似的案例.

<security:intercept-url pattern="/services/**" access="hasIpAddress('192.168.1.0/24')"/>
Run Code Online (Sandbox Code Playgroud)

  • 我们如何使用控制器中特定映射的注释来实现这一点? (2认同)

axt*_*avt 3

我认为惯用的 Spring Security 方法是实现一个预身份验证过滤器,Authentication当客户端位于白名单中时,该过滤器将使用有效对象填充安全上下文。您可以从头开始实现这样的过滤器(例如,如此处)或使用AbstractPreAuthenticatedProcessingFilter(尽管它对于您的任务来说似乎过于复杂)。