Безопасность Swagger - пометить подпуть как общедоступный, если родитель является частным? Например. / api / public / ** и / api / ** - PullRequest
0 голосов
/ 28 июня 2018

Я бы хотел сказать Swagger (через Java), что для набора путей требуется аутентификация, например, /api/** но это не конкретный подпуть, например /api/public/**.

Я подумал, что возможно добавить SecurityContext для /api/public/** примерно так:

SecurityContext.builder()
    .securityReferences(new ArrayList<>())
    .forPaths(PathSelectors.ant("/api/public/**"))
    .build()

т.е. в дополнение к контексту, который я построил для /api/**, я мог бы добавить один для /api/public/**, без ссылок безопасности, и что если бы я получил правильное упорядочение, этот дополнительный контекст соответствовал бы любому подходящему пути , а не чем контекст /api/**.

Но это не то, как все работает - когда сопоставление происходит, оно не просто останавливается на первом совпадении, оно фактически ищет все совпадения. Таким образом, путь, подобный /api/public/foo, будет соответствовать контексту /api/* и /api/public/**.

Так есть ли способ добиться того, чего я хочу, то есть когда я использую Swagger UI, я бы не хотел видеть значок блокировки рядом с путями, такими как /api/public/foo.

...