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();
}

参考