【问题标题】:Securing a api with an token in Spring Boot在 Spring Boot 中使用令牌保护 api
【发布时间】:2019-08-29 13:08:52
【问题描述】:

我们有一个简单的应用程序,只有两个消费者和 5 个端点。对于一个端点,我需要某种身份验证方式。我喜欢这样做的条纹方式,但我不知道如何在 Spring Boot 中构建它。

“API 的身份验证是通过 HTTP Basic Auth 执行的。提供您的 API 密钥作为基本身份验证用户名值。您不需要提供密码。”

@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 中删除密码,但这不起作用。

【问题讨论】:

    标签: java rest spring-boot authentication


    【解决方案1】:

    基本身份验证由 user:password 以 base64 编码形式组成。 因此,您的用户必须有一个等于 空字符串 的密码,基本身份验证才能工作。 您也可以摆脱 BCryptPasswordEncoder 并使用NoOpPasswordEncoder,因为您不使用密码值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-22
      • 2018-07-25
      • 2016-02-23
      • 2015-12-09
      • 2018-07-04
      • 2018-03-19
      相关资源
      最近更新 更多