前提・実現したいこと
現在、グループでSNSのようなWebアプリを作るため、日々制作しております。
今回はJavaのフレームワーク、「Spring boot」を使用して制作を始めました。
その中のSpring Securityを使ってユーザー認証を行おうと思ったのですが、どうしてもWebSecurityのコンフィグが反映されません。どうすれば反映されるでしょうか。
なお、この問題がどこまで広がっているか確認するため、本番のプロジェクトとは全く異なります。ただし、Mavenの依存関係は一緒です。
この原因が分かる方、ぜひよろしくお願いいたします。
発生している問題
Spring Securityは通常、依存関係に含めると全てのURLがBASIC認証で保護され、例えURLの末尾が"/"で合ったとしてもBASIC認証を通してログインしなければ到達できません。
その代わり、WebSecurityConfigurerAdapter
を継承したクラスを用意すれば自由に設定をいじれる、という認識です。
ですが、私の環境では、このクラスがどうも反映されていないように思えます。
このクラスでオーバーライドしたconfigure
メソッドに、"/"と"/login"は誰でも閲覧することが出来る、と記述しましたが、"/"に移動してもログインが求められました。
該当のソースコード
どこが問題なのか分からないので、全てのソースコードを貼り付けさせていただきます。
/src/main/java/com/test/security/Application.java
java
1package com.test.security; 2 3import org.springframework.boot.SpringApplication; 4import org.springframework.boot.autoconfigure.SpringBootApplication; 5import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration; 6 7@SpringBootApplication(exclude = SecurityAutoConfiguration.class) 8public class Application { 9 public static void main(String[] args) throws Exception { 10 SpringApplication.run(Controllers.class, args); 11 } 12}
/src/main/java/com/test/security/Controllers.java
java
1package com.test.security; 2 3import org.springframework.boot.autoconfigure.EnableAutoConfiguration; 4import org.springframework.stereotype.Controller; 5import org.springframework.web.bind.annotation.RequestMapping; 6 7@Controller 8@EnableAutoConfiguration 9public class Controllers { 10 11 @RequestMapping("/") 12 public String index() { 13 return "index"; 14 } 15 16 @RequestMapping("/hello") 17 public String hello() { 18 return "hello"; 19 } 20}
/src/main/java/com/test/security/WebSecurityConfig.java
java
1package com.test.security; 2 3import org.springframework.context.annotation.Configuration; 4import org.springframework.security.config.annotation.web.builders.HttpSecurity; 5import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; 6import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; 7 8@Configuration 9@EnableWebSecurity 10public class WebSecurityConfig extends WebSecurityConfigurerAdapter { 11 12 @Override 13 protected void configure(HttpSecurity http) throws Exception { 14 http.authorizeRequests() 15 .antMatchers("/", "/login") 16 .permitAll(); 17 } 18}
/pom.xml
xml
1<?xml version="1.0" encoding="UTF-8"?> 2<project xmlns="http://maven.apache.org/POM/4.0.0" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 5 <modelVersion>4.0.0</modelVersion> 6 7 <groupId>org.example</groupId> 8 <artifactId>test_spring_boot</artifactId> 9 <version>1.0-SNAPSHOT</version> 10 <parent> 11 <groupId>org.springframework.boot</groupId> 12 <artifactId>spring-boot-starter-parent</artifactId> 13 <version>2.4.0</version> 14 </parent> 15 <dependencies> 16 <dependency> 17 <groupId>org.springframework.boot</groupId> 18 <artifactId>spring-boot-starter-security</artifactId> 19 </dependency> 20 <dependency> 21 <groupId>org.springframework.boot</groupId> 22 <artifactId>spring-boot-starter-web</artifactId> 23 </dependency> 24 <dependency> 25 <groupId>org.springframework.boot</groupId> 26 <artifactId>spring-boot-starter-thymeleaf</artifactId> 27 </dependency> 28 <dependency> 29 <groupId>org.springframework.boot</groupId> 30 <artifactId>spring-boot-starter-jdbc</artifactId> 31 </dependency> 32 <dependency> 33 <groupId>org.thymeleaf.extras</groupId> 34 <artifactId>thymeleaf-extras-springsecurity5</artifactId> 35 </dependency> 36 <dependency> 37 <groupId>org.springframework.boot</groupId> 38 <artifactId>spring-boot-devtools</artifactId> 39 <scope>runtime</scope> 40 <optional>true</optional> 41 </dependency> 42 <dependency> 43 <groupId>com.h2database</groupId> 44 <artifactId>h2</artifactId> 45 <scope>runtime</scope> 46 </dependency> 47 <dependency> 48 <groupId>org.projectlombok</groupId> 49 <artifactId>lombok</artifactId> 50 <version>1.18.16</version> 51 <scope>provided</scope> 52 </dependency> 53 </dependencies> 54 <build> 55 <plugins> 56 <plugin> 57 <groupId>org.springframework.boot</groupId> 58 <artifactId>spring-boot-maven-plugin</artifactId> 59 </plugin> 60 </plugins> 61 </build> 62</project>
/src/resources/templates/index.html
/src/resources/templates/login.html
/src/resources/templates/hello.html
(全て一緒です)
html
1<!DOCTYPE HTML> 2<html xmlns:th="http://www.thymeleaf.org"> 3<head> 4 <title>Swapping Positive</title> 5 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 6</head> 7<body> 8</body> 9</html>
なお、今回はapplication.propertiesは記入しておりません。
試したこと
「Spring Security BASIC認証 無効化」と調べて出た記事を見て、Spring boot 2.xに対応していそうなものを色々とやってみたのですが、上手くいきませんでした。
csrf無効や、antMatchers
をmvcMatchers
にする、application.propertiesにspring.autoconfigure.exclude
の設定をする、などしてみましたが、全てダメでした。
補足情報(FW/ツールのバージョンなど)
- InteliJ IDEA 2019.3 #IC-193.5233.102
- jdk-11.0.4(IntelliJ標準) or jdk-13.0.1 (どちらでもダメでした)
以上となります。何か足りない情報がありましたらお伝え下さい。
それではよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。