如何在 spring 启动时使用 IP 白名单和 OAuth2?
How do I use IPwhitelisting and OAuth2 in spring boot?
我在我的 spring 引导应用程序中使用 OAuth2,我想对 IP 地址范围使用 IP 白名单。即我想让白名单用户在不提供令牌的情况下访问特定资源。
我有大量列入白名单的 IP,并且我正在使用 Oauth2 令牌验证,因此我只有一台资源服务器。我想首先使用 IP 白名单,如果它失败,用户应该有有效的令牌才能访问资源。你能告诉我我该怎么做吗?
在 Spring 安全中,您可以使用安全配置中的 hasIpAddress 方法配置您的特定端点和白名单 class。
@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 中执行 class 并且您可以使用相同的配置方法来设置 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) & 在应用程序启动时,你可以遍历这些来构建必须在访问方法中传递的参数字符串。
我在我的 spring 引导应用程序中使用 OAuth2,我想对 IP 地址范围使用 IP 白名单。即我想让白名单用户在不提供令牌的情况下访问特定资源。 我有大量列入白名单的 IP,并且我正在使用 Oauth2 令牌验证,因此我只有一台资源服务器。我想首先使用 IP 白名单,如果它失败,用户应该有有效的令牌才能访问资源。你能告诉我我该怎么做吗?
在 Spring 安全中,您可以使用安全配置中的 hasIpAddress 方法配置您的特定端点和白名单 class。
@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 中执行 class 并且您可以使用相同的配置方法来设置 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) & 在应用程序启动时,你可以遍历这些来构建必须在访问方法中传递的参数字符串。