Spring Security Basi c Auth с дайджестом по http для API без сохранения состояния - PullRequest
1 голос
/ 25 апреля 2020

Некоторые клиенты / клиенты будут использовать веб-приложение для крупномасштабных автономных целей с системой управления пользователями. В этом отношении, они обеспечивают реальную боль при развертывании приложения с поддержкой HTTPS. Оставьте предупреждение о недоверии ООН браузерами для самозаверяющих сертификатов, что заставляет клиентов жаловаться.

  • В этом случае, ради аргумента. Какие есть варианты использования безопасной аутентификации пользователя по HTTP?

Я пытался использовать Spring Security с Spring Boot для защиты API без сохранения состояния с использованием аутентификации Basi c, но я хотел бы контролировать шифрование / дешифрование заголовка base64, исключающее отправку учетных данных в очень простой для расшифровки строке base64.

@Override
    protected void configure(HttpSecurity http) throws Exception {
      http.csrf()
          .disable()
          .cors()
          .and()
          .authorizeRequests()
          .antMatchers("/login")
          .permitAll()
          .and()
          .httpBasic();
    }

Этот метод конфигурации расширяет WebSecurityConfigurerAdapter. Я попытался взглянуть на исходный код BasicAuthenticationFilter и обнаружил, что он использует BasicAuthenticationConverter для создания нового объекта, поэтому я не могу предоставить пользовательский преобразователь в виде bean-компонента для управления расшифровкой base64 с более сильной альтернативой (или дополнительной one).

Также это нарушает стандарт Basi c Auth в любом случае. Digest Auth сохраняет пароль в виде текста, и это не вариант для меня.

Итак,

  • В любом случае можно использовать Basi c Auth с HTTP, контролирующим base64 расшифровывать, пытаясь немного приблизиться к тому, что предлагает HTTPS?

  • Или использовать Digest Auth с зашифрованными сохраненными паролями?

...