前提・実現したいこと
SpringSecurityの実装について質問です。
SpringBootを使用したシステム開発を既存プログラムを流用しながら実装しています。
ログイン画面の箇所のみ流用し、コンパイルが通ったので実行したところ、起動途中でエラーになりました。
正常に起動できるようにするにはどこを変更すればよいですか。
発生している問題・エラーメッセージ
Description: Field userDetailsService in jp.co.XXXXX.config.AuthenticationConfiguration required a bean of type 'org.springframework.security.core.userdetails.UserDetailsService' that could not be found. - Bean method 'inMemoryUserDetailsManager' not loaded because @ConditionalOnMissingBean (types: org.springframework.security.authentication.AuthenticationManager,org.springframework.security.authentication.AuthenticationProvider,org.springframework.security.core.userdetails.UserDetailsService; SearchStrategy: all) found beans of type 'org.springframework.security.authentication.AuthenticationProvider' daoAuthenticationProvider Action: Consider revisiting the conditions above or defining a bean of type 'org.springframework.security.core.userdetails.UserDetailsService' in your configuration.
該当のソースコード
package jp.co.XXXXX.config; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.authentication.AuthenticationProvider; import org.springframework.security.authentication.dao.DaoAuthenticationProvider; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.authentication.configuration.GlobalAuthenticationConfigurerAdapter; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder; /** * 認証時に使用するService及びパスワード暗号化方法設定 */ @Configuration public class AuthenticationConfiguration extends GlobalAuthenticationConfigurerAdapter { /** * 認証時に呼ばれるサービス */ @Autowired UserDetailsService userDetailsService; /** * パスワード暗号化方式 * * @return */ @Bean PasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); } /** * {@inheritDoc} */ @Override public void init(AuthenticationManagerBuilder auth) throws Exception { // 認証方法を設定する auth.authenticationProvider(daoAuthenticationProvider()); } /** * 認証時に使用するService及びパスワード暗号化方法設定 * * @return */ @Bean public AuthenticationProvider daoAuthenticationProvider() { DaoAuthenticationProvider daoAuthenticationProvider = new DaoAuthenticationProvider(); // 認証時に呼ばれるServiceを設定 daoAuthenticationProvider.setUserDetailsService(userDetailsService); // 入力値をbcryptでハッシュ化した値でパスワード認証を行う daoAuthenticationProvider.setPasswordEncoder(passwordEncoder()); return daoAuthenticationProvider; } }
試したこと
pom.xmlは流用元と同じものを使っています。
補足情報(FW/ツールのバージョンなど)
Apache Tomcat/8.5.31
Spring Boot v2.0.3.RELEASE
Spring v5.0.7.RELEASE
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/09 05:41