Springfox 3 OpenAPI 3 不随请求发送授权 header

Springfox 3 OpenAPI 3 does not send authorization header with request

我运行以下配置为我的(non-spring启动)项目启用基本身份验证

@Configuration
@EnableOpenApi
@EnableWebMvc
public class SpringFoxConfig implements WebMvcConfigurer {

    @Bean
    public Docket api() {
        return new Docket(DocumentationType.OAS_30)
                .select()
                .apis(RequestHandlerSelectors.withClassAnnotation(PublicAPI.class))
                .paths(PathSelectors.any())
                .build()
                .securityContexts(Arrays.asList(securityContext()))
                .securitySchemes(Arrays.asList(securityScheme())));
    }

    private SecurityScheme securityScheme() {
        return new HttpAuthenticationBuilder()
                .name("basic")
                .scheme("basic")
                .build();
    }

    private SecurityContext securityContext() {
        return SecurityContext
                .builder()
                .securityReferences(securityReferences())
                .operationSelector(operationContext -> true)
                .build();
    }

    private List<SecurityReference> securityReferences() {
        return singletonList(new SecurityReference("Authorization", new AuthorizationScope[] {new AuthorizationScope("global", "global")}));
    }
}

这允许我授权我的请求

但是在测试调用时,授权 header 没有建立,也没有随请求一起发送:

curl -X GET "https://localhost:8443/foo/rest/ws/info/get-master/code/awd" -H "accept: application/json"

安全引用名称与 securityScheme 中定义的名称不同

private SecurityScheme securityScheme() {
    return new HttpAuthenticationBuilder()
            .name("basic")
            .scheme("basic")
            .build();
}

private SecurityContext securityContext() {
    return SecurityContext.builder()
            .securityReferences(defaultAuth())
            .forPaths(PathSelectors.any())
            .build();
}

private List<SecurityReference> defaultAuth() {
    AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
    authorizationScopes[0] = new AuthorizationScope("global", "accessEverything");
    return singletonList(new SecurityReference("basic", authorizationScopes));
}