如何在 Spring Boot 中使用 IPwhitelisting 和 OAuth2? [复制]
Posted
技术标签:
【中文标题】如何在 Spring Boot 中使用 IPwhitelisting 和 OAuth2? [复制]【英文标题】:How do I use IPwhitelisting and OAuth2 in spring boot? [duplicate] 【发布时间】:2021-06-18 01:00:44 【问题描述】:我在我的 Spring Boot 应用程序中使用 OAuth2,我想将 IP 白名单用于 IP 地址范围。即我想让白名单用户在不提供令牌的情况下访问特定资源。 我有大量列入白名单的 IP,并且我正在使用 Oauth2 令牌验证,因此我有一个资源服务器。我想首先使用 IP 白名单,如果失败,用户应该有有效的令牌才能访问资源。你能告诉我我该怎么做吗?
【问题讨论】:
【参考方案1】:在 Spring Security 中,您可以使用安全配置类中的 hasIpAddress 方法配置特定端点和白名单。
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter
@Override
protected void configure(HttpSecurity http) throws Exception
http.authorizeRequests()
.antMatchers("/api/**").hasIpAddress("11.11.11.11")
.anyRequest().authenticated()
.and()
.formLogin().permitAll();
如果你有多个IP地址,那么你可以这样使用
http
.authorizeRequests()
.antMatchers("/api/**").access(
"hasIpAddress('10.0.0.0/16') or hasIpAddress('127.0.0.1/32')")
对于资源服务器,您可以在 @EnableResourceServer 类中执行此操作,并且可以使用相同的配置方法来设置 Ipwhitelisting,如下所示
@Configuration
@EnableResourceServer
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class ResourceServerConfig extends ResourceServerConfigurerAdapter
@Override
public void configure(HttpSecurity http) throws Exception
http.requestMatcher(new OAuthRequestedMatcher())
.anonymous().disable().authorizeRequests();
http
.authorizeRequests()
.antMatchers("/api/**").access("hasIpAddress('10.0.0.0/16') or hasIpAddress('127.0.0.1/32')");
现在,既然您提到您有很多 IP 地址,您可以在属性文件 (application.properties) 中列出一个列表,并在应用程序启动时,您可以遍历这些地址以构建必须传入的参数字符串访问方法。
【讨论】:
我有大量用于白名单的 IP 范围,并且我正在使用 OAuth2,因此我正在使用资源服务器及其本身我想使用自定义 IP 白名单。我该怎么做? @JayantKokitkar - 我已经编辑了在资源服务器中处理相同逻辑的答案。 @JayantKokitkar - 如果它适合您,请接受答案。以上是关于如何在 Spring Boot 中使用 IPwhitelisting 和 OAuth2? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Spring Boot 中使用 Spring Security 启用 CORS
如何在 Spring Boot 中使用 Spring Security 配置 CORS? [复制]
如何在Spring Boot 中使用 HandlerMethodArgumentResolver