Spring Boot Security Localhost
От: Aleksei_Lekomtsev  
Дата: 02.04.24 11:28
Оценка:
Добрый день,

Хочется разрешить пользователю с localhost работать с приложением без аутентификации. В тоже время приложение должно работать с аутентификацией когда запрос приходит
от другого хоста. Я пробовал код, что ниже, но безрезультатно. Например, я менял hasIPAddress на 127.0.0.2 и пробовал отправить запрос с Bearer token, но в результате failed(403). С другой стороны я могу отправлять запрос без какого-либо токена если я устанавливаю hasIPAddress как 127.0.0.1 и результат успешен

  @Bean
  public SecurityFilterChain resourceServerFilterChain(HttpSecurity http) throws Exception {
    IpAddressMatcher hasIPAddress = new IpAddressMatcher("127.0.0.1");
    http.authorizeHttpRequests(
        auth -> {
          auth.requestMatchers("/**")
              .access(
                  (authentication, object) ->
                      new AuthorizationDecision(hasIPAddress.matches(object.getRequest())));
          auth.anyRequest().authenticated();
        });
    return http.build();
  }
Отредактировано 03.04.2024 7:23 Aleksei_Lekomtsev . Предыдущая версия .
spring-security spring boot
Re: Spring Boot Security Localhost
От: Слава  
Дата: 03.04.24 08:53
Оценка:
Здравствуйте, Aleksei_Lekomtsev, Вы писали:

A_L>Хочется разрешить пользователю с localhost работать с приложением без аутентификации. В тоже время приложение должно работать с аутентификацией когда запрос приходит


Вот эта ваша цепочка через точечку — это чтобы отладчиком было сложнее проходиться. Я бы заменил вызовы на обычный императивный стиль. Хорошо бы раскопать тот сервис, что проверяет токен и просто в юнит-тесте скармливать ему ваш токен.
Re[2]: Spring Boot Security Localhost
От: rosencrantz США  
Дата: 03.04.24 23:37
Оценка: 2 (1)
Здравствуйте, Слава, Вы писали:

С>Здравствуйте, Aleksei_Lekomtsev, Вы писали:


A_L>>Хочется разрешить пользователю с localhost работать с приложением без аутентификации. В тоже время приложение должно работать с аутентификацией когда запрос приходит


С>Вот эта ваша цепочка через точечку — это чтобы отладчиком было сложнее проходиться. Я бы заменил вызовы на обычный императивный стиль. Хорошо бы раскопать тот сервис, что проверяет токен и просто в юнит-тесте скармливать ему ваш токен.


Тут бестолку что-то дебажить — это "декларативная" конфигурация, которая отрабатывает 1 раз при старте приложения. Такой "стиль" написания конфигураций предлагается самим фреймворком. Если с этой конфигурацией что-то не то, дебагом самой конфигурации это не поймаешь. Чтобы дебагом разобраться почему у ТС оно не работает как он хочет — это вообще не тут дебажить нужно. В представленном коде интересно убедиться, что resourceServerFilterChain() вообще был вызван (ну — мало ли), и дальше — проверить вызывается лямбда (authentication, object) или нет.
Re[3]: Spring Boot Security Localhost
От: Aleksei_Lekomtsev  
Дата: 04.04.24 10:49
Оценка:
R>Тут бестолку что-то дебажить — это "декларативная" конфигурация, которая отрабатывает 1 раз при старте приложения. Такой "стиль" написания конфигураций предлагается самим фреймворком. Если с этой конфигурацией что-то не то, дебагом самой конфигурации это не поймаешь. Чтобы дебагом разобраться почему у ТС оно не работает как он хочет — это вообще не тут дебажить нужно. В представленном коде интересно убедиться, что resourceServerFilterChain() вообще был вызван (ну — мало ли), и дальше — проверить вызывается лямбда (authentication, object) или нет.

Можно еще включить logging for spring security
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.