###前提・実現したいこと
SpringBootでbasic認証をベースに
独自の認証に変更したいです。
###発生している問題
httpBasic()を使用せずに、
BasicAuthenticationFilterを継承し、
doFilterInternal()をオーバーライドしたものを取り込めば良いと思っていましたが、
ステータス401ではなく403が返ってきます。
###該当のソースコード
Java
1@Configuration 2@EnableWebSecurity 3public class WebSecurityConfig extends WebSecurityConfigurerAdapter { 4 @Override 5 protected void configure(HttpSecurity http) throws Exception { 6 http 7 .authorizeRequests() 8 .antMatchers("/").permitAll() 9 .anyRequest().authenticated(); 10 11 http 12 .httpBasic().disable(); 13 14 AuthenticationManager authenticationManager = this.authenticationManager(); 15 BasicAuthenticationEntryPoint entryPoint = new BasicAuthenticationEntryPoint(); 16 BasicAuthenticationFilter filter = new BasicAuthenticationFilter(authenticationManager, entryPoint); 17 18 http.addFilterAfter(filter, BasicAuthenticationFilter.class); 19 } 20 21 @Override 22 protected void configure(AuthenticationManagerBuilder auth) throws Exception { 23 auth 24 .inMemoryAuthentication() 25 .withUser("user").password("user").roles("USER").and() 26 .withUser("admin").password("admin").roles("ADMIN"); 27 } 28 29}
###試したこと
httpBasic()の後にdisable()呼ばない場合は401が返ってくることは確認しました。
HttpBasicConfigurerにあたるものを用意していないからでしょうか?
アドバイス等を頂ければ幸いです。
よろしくお願いします。
###[追記]
実現したい内容について、
補足いたします。
BasicAuthenticationFilterクラス内の
doFilterInternal()メソッドでの
SecurityContextHolder.getContext().setAuthentication(authResult);
によってRoleを付与しているのだと思いますが、
今回は、認証時にRoleの情報は変更せず、Sessionに付与するように変更をしたい。
HttpBasicConfigurerクラスに手を加えることも考えましたが
configure()メソッドで、BasicAuthenticationFilterを
newしているため、変更はできそうにありませんでしたし、
HttpBasicConfigurerクラスは継承不可なので、
オーバーライドもできないため、無理だと判断しました。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/28 15:50