Защита API с помощью токена в Spring Boot - PullRequest
1 голос
/ 08 апреля 2019

У нас есть простое приложение с двумя потребителями и 5 конечными точками. Для одной конечной точки мне нужен какой-то способ аутентификации. Мне нравится полосатый способ сделать это, но я не знаю, как я могу сделать это в весенней загрузке.

"Аутентификация в API выполняется через HTTP Basic Auth. Укажите ваш ключ API в качестве базового значения имени пользователя auth. Вам не нужно указывать пароль."

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

@Override
protected void configure(HttpSecurity http) throws Exception {
http
    .authorizeRequests()
    .antMatchers("/qr")
    .hasRole("user")
    .and()
    .sessionManagement()
    .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
    .and()
    .httpBasic()
    .and()
    .csrf()
    .disable();
}

@Bean
public UserDetailsService userDetailsService() {
val encodedPassword = new BCryptPasswordEncoder().encode("test");

final InMemoryUserDetailsManager manager = new               InMemoryUserDetailsManager();
   manager.createUser(User.withUsername("admin").password(encodedPassword).roles("user").build());
           //manager.createUser(User.withUsername("admin").roles("user").build());

  return manager;
}

@Bean
public PasswordEncoder passwordEncoder(){
return new BCryptPasswordEncoder();
}
}

Я пытался удалить пароль из manager.createUser, но это не сработало.

1 Ответ

0 голосов
/ 08 апреля 2019

Базовая аутентификация выполняется из user:password в закодированной форме base64. Таким образом, ваш пользователь должен иметь пароль, равный пустая строка , чтобы работала базовая аутентификация. Вы также можете избавиться от BCryptPasswordEncoder и использовать NoOpPasswordEncoder , так как вы не используете значение пароля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...