簡體   English   中英

登錄/使用 Api 休息,Spring Security 基本身份驗證不起作用

[英]Login/Consume Api rest with Spring Security basic Auth not Working

我是 Spring Security 的新手,所以為了學習目的,我使用spring-boot 2.0.3.RELEASEspring-boot-starter-security創建了一個 api。

這是我得到的

    public class SecurityConfig extends WebSecurityConfigurerAdapter {

        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http.csrf().disable().authorizeRequests().anyRequest().authenticated().and().httpBasic();
        }

        @Autowired
        public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {       
auth.inMemoryAuthentication().withUser("admin").password(passwordEncoder().encode("admin")).roles("USER");
        }

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

    }

控制器類

@RestController
@RequestMapping(value = "/security")
public class AppController {

    @Autowired
    SpringSecurityService service;

    @GetMapping(value = "/{id}")
    public Person findOne(@PathVariable("id") final int id) {
        return service.findOne(id);
    }
}

當我嘗試通過某些瀏覽器使用 get 方法findOne ,會提示登錄表單,因為所有瀏覽器都支持基本身份驗證我嘗試使用admin作為用戶和密碼登錄,但顯示錯誤憑據的錯誤。

我還嘗試通過郵遞員發送授權和$2a$10$c6MFPW.7MD7a.2V2rJYlXO0.YOLQEmsbu5GBmFsf.jShduBPenQ6O作為值來使用該方法。

我從這里得到了密碼的值:

System.out.println(new BCryptPasswordEncoder().encode("admin"));

我知道這是一些菜鳥的錯誤,但我不知道我錯過了什么

在我自己的項目中嘗試了您的代碼。 看起來您只是在WebSecurityConfigurerAdapter上缺少@Configuration注釋,因此正在進行默認配置。 控制台中的user名和登錄密碼將起作用。

工作示例 - https://github.com/DarrenForsythe/sof-60178305

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM