質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Spring Security

Spring Securityは、Springのサブプロジェクトの一つでWebアプリケーションに必要な機能を追加します。正規ユーザーであるかを確認するための「認証機能」と、ユーザーのアクセスを制御する「認可機能」を簡単に追加することが可能です。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

1回答

6971閲覧

SpringSecurity実装時の起動エラー解消(UserDetailsService that could not be found.)

Ryuji7777

総合スコア4

Spring Security

Spring Securityは、Springのサブプロジェクトの一つでWebアプリケーションに必要な機能を追加します。正規ユーザーであるかを確認するための「認証機能」と、ユーザーのアクセスを制御する「認可機能」を簡単に追加することが可能です。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

0クリップ

投稿2020/03/06 10:10

前提・実現したいこと

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

過去に似た内容の質問がありましたが、パッケージスキャンの対象にないからでしょうか。
https://teratail.com/questions/159915

で、org.springframework.security.core.userdetails.UserDetailsServiceについてはこちらで
https://stackoverflow.com/questions/46297832/required-a-bean-of-type-org-springframework-security-core-userdetails-userdetai/46298769

で、@Beanについてはこちらが参考になるかと
https://dev.classmethod.jp/server-side/java/springboot-what-is-bean/

投稿2020/03/06 17:45

storm3

総合スコア330

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Ryuji7777

2020/03/09 05:41

回答ありがとうございました。結論から申しますと、UserDetailsServiceインターフェイスを実装したクラスが必要でした。移行対象から漏れてしまったようです。 回答いただいた内容が正解では無かったですが参考になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問