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

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

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

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

Spring MVC

Spring MVCとは、Javaを用いてWebアプリケーションを開発できるフレームワーク。アーキテクチャにMVCを採用しており、画面遷移と入出力パラメータの受け渡しの基本的な機能の他、ユーザーの送信したパラメータに対する入力チェックなどさまざまな機能を持ちます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

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

Spring Boot

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

Q&A

解決済

1回答

1349閲覧

Spring SecurityのWebSecurityConfigurerAdapter継承クラスで設定したログアウト用URLにアクセスした際に、404エラーが発生する原因を知りたい。

hasshi7010

総合スコア1

Spring Security

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

Spring MVC

Spring MVCとは、Javaを用いてWebアプリケーションを開発できるフレームワーク。アーキテクチャにMVCを採用しており、画面遷移と入出力パラメータの受け渡しの基本的な機能の他、ユーザーの送信したパラメータに対する入力チェックなどさまざまな機能を持ちます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

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

Spring Boot

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

0グッド

0クリップ

投稿2022/07/12 04:42

編集2022/07/12 17:32

Spring Securityを使っています。"/auth/logout"というログアウト用URIにアクセスした際に、ログイン時にクッキーとして発行した認証用トークンを削除するようにしたいと思い、WebSecurityConfigurerAdapter継承クラスを以下ソースコードのように設定したのですが、Postmanを使って当該URIにアクセスすると以下エラーメッセージのように404エラーが発生してしまいます。

(追記)
ログイン用のURIである"/login"は、以下ソースコード(追記)のUsernamePasswordAuthenticationFilter継承クラスにおいてコンストラクタで指定しており、このURIへのリクエストは正常に作動します。

エラーメッセージ

"timestamp": "2022/07/12 13:17:22", "status": 404, "error": "Not Found", "message": "No message available", "path": "/login"

ソースコード

Java

1@Configuration 2public class WebSecurityConfigurer extends WebSecurityConfigurerAdapter { 3 4 @Autowired 5 MyUserDetailsService userDetailsService; 6 7 @Override 8 protected void configure(AuthenticationManagerBuilder auth) throws Exception { 9 auth.userDetailsService(this.userDetailsService) 10 .passwordEncoder(this.getPasswordEncoder()); 11 } 12 13 @Override 14 protected void configure(HttpSecurity http) throws Exception { 15 http.csrf().disable() 16 .cors().and() 17 .authorizeRequests() 18 .antMatchers("/auth/admin/**").hasRole("ADMIN") 19 .antMatchers("/auth/**").authenticated() 20 .anyRequest().permitAll() 21 .and() 22 //問題の箇所 23 .logout().logoutUrl("/auth/logout").deleteCookies("Authorization") 24 .addLogoutHandler(new MyLogoutHandler()).and() 25 .addFilter(new MyAuthenticationFilter(authenticationManagerBean() , getPasswordEncoder())) 26 .addFilter(new MyAuthorizationFilter(authenticationManagerBean() , userDetailsService)) 27 .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS); 28 } 29 30 @Override 31 @Bean 32 public AuthenticationManager authenticationManagerBean() throws Exception { 33 return super.authenticationManagerBean(); 34 } 35 36 @Bean 37 public PasswordEncoder getPasswordEncoder(){ 38 return new BCryptPasswordEncoder(); 39 } 40 41}

ソースコード(追記)

Java

1public class MyAuthenticationFilter extends UsernamePasswordAuthenticationFilter { 2 3 private AuthenticationManager authenticationManager; 4 private PasswordEncoder passwordEncoder; 5 6 public MyAuthenticationFilter(AuthenticationManager authenticationManager , PasswordEncoder passwordEncoder) { 7 8 this.authenticationManager = authenticationManager; 9 this.passwordEncoder = passwordEncoder; 10 // ログイン用URIの指定 11 this.setRequiresAuthenticationRequestMatcher(new AntPathRequestMatcher("/login" , "POST")); 12 13 this.setUsernameParameter("email"); 14 this.setPasswordParameter("password"); 15 16 } 17}

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

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

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

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

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

guest

回答1

0

ベストアンサー

エラーメッセージに書いてあるとおり、404 Not Foundになっているのは
/loginなのではないでしょうか?

投稿2022/07/12 05:09

Luice

総合スコア766

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

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

hasshi7010

2022/07/12 08:00 編集

回答を受けて追記を書かせていただきました。 追記の通り/loginへのアクセスは正常に動作します。 そして/auth/logoutにアクセスすると、当エラーメッセージが返ってきてしまいます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問