Springfox SwaggerでCSRF tokenを送信する
Spring SecurityのCSRFを有効にしている状態で、SpringfoxのSwagger上でPOST等のメソッドを実行したいときのメモ。
そのままでは試せないが、以下のようなCSRF tokenがを返すエンドポイントを作れば、POST等のメソッドも実行できる。
ソースコード
plugins { id 'org.springframework.boot' version '2.4.5' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java' } group = 'com.example' version = '0.0.1-SNAPSHOT' sourceCompatibility = JavaVersion.VERSION_11 repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'io.springfox:springfox-boot-starter:3.0.0' ... }
@Profile("dev") @RestController public class CsrfController { @GetMapping("/csrf") public CsrfToken csrf(CsrfToken token) { return token; } }
springfox 3.0.0からはこの設定が必要。
@Bean public SecurityConfiguration securityConfiguration() { return SecurityConfigurationBuilder.builder() .enableCsrfSupport(true) .build(); }