在春季启动中使用令牌保护 API

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


“对 API 的身份验证是通过 HTTP 基本身份验证执行的,提供您的 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();

}

}

我试图从管理器.create用户中删除密码,但这不起作用。


隔江千里
浏览 105回答 1
1回答

陪伴而非守候

基本身份验证以 base64 编码形式组成。因此,您的用户必须具有等于空字符串的密码,基本身份验证才能正常工作。您还可以摆脱BCrypt密码编码器并使用NoOp密码编码器,因为您不使用密码值。user:password
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java