Проверка IP-адреса источника запроса на данные Dynami c с помощью Spring Securiy WebSecurityConfigurerAdapter - PullRequest
0 голосов
/ 05 апреля 2020

Предполагая, что у меня есть следующий код класса:

@EnableWebSecurity
@Configuration
public static class ApiWebSecurityConfigurationAdapter extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests().antMatchers("/api/**").hasIpAddress("runtime other device ip");
    }
}

во время выполнения, когда запрос входит в систему, я хочу проверить, что он поступил из "ip другого устройства времени выполнения", который может отличаться в время получения запроса.

Предположим, у меня есть утилита, которая может извлечь этот "ip другого устройства времени выполнения" Utility.getOtherDeviceIP();

Есть идеи?

Спасибо

1 Ответ

0 голосов
/ 05 апреля 2020

Да, используйте .access() с пользовательским компонентом, который имеет класс Utility @Autowired и принимает текущий запрос HttpServlet в качестве параметра, который Spring автоматически внедрит для вас (рядом с текущим объектом аутентификации).

Пример:

@Override
protected void configure(HttpSecurity http) throws Exception {
    http.authorizeRequests().antMatchers("/api/**").access("@yourCustomIpCheckerBean.check(authentication, request)");

}

Хотя вы, вероятно, могли бы также напрямую записать его как SpEL, если это просто ваша утилита, необходимая для проверки IP. Что-то вроде (не проверено):

.access("request.remoteAddr == @yourUtility.getOtherDeviceIP()")
...