Подтвердить что ты не робот

Swagger 2.0, где объявить Basic Auth Schema

Как определить базовую аутентификацию с помощью аннотаций Swagger 2.0 и отобразить ее в пользовательском интерфейсе swagger.

В ресурсе у меня есть:

@ApiOperation(value = "Return list of categories", response=Category.class, responseContainer="List", httpMethod="GET", authorizations = {@Authorization(value="basicAuth")})
public Response getCategories();

Я посмотрел здесь:

https://github.com/swagger-api/swagger-core/wiki/Annotations#authorization-authorizationscope

И он говорит: "После того, как вы объявили и настроили какие схемы авторизации, которые вы поддерживаете в своем API, вы можете использовать эти аннотации, чтобы отметить, какая схема авторизации требуется для ресурса или конкретной операции" Но я ничего не могу найти что говорит о том, где объявлять и настраивать схемы авторизации.

Update:

Я нашел код о том, как объявить схему, но я до сих пор не вижу никакой информации о схеме аутентификации в пользовательском интерфейсе. Я не уверен, что мне не хватает

@SwaggerDefinition
public class MyApiDefinition implements ReaderListener {
    public static final String BASIC_AUTH_SCHEME = "basicAuth";

    @Override
    public void beforeScan(Reader reader, Swagger swagger) {
    }

    @Override
    public void afterScan(Reader reader, Swagger swagger) {
        BasicAuthDefinition basicAuthDefinition = new BasicAuthDefinition();
        swagger.addSecurityDefinition(BASIC_AUTH_SCHEME, basicAuthDefinition);
    }
}
4b9b3361

Ответ 1

Используя аннотации Springfox 2.6, вы должны сначала определить базовую проверку подлинности как одну из схем безопасности при настройке Docket в своей конфигурации, например:

List<SecurityScheme> schemeList = new ArrayList<>();
schemeList.add(new BasicAuth("basicAuth"));

return new 
  Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo)
                                     .securitySchemes(schemeList)
                                     ...

Затем вы можете использовать аннотации Springfox в своей службе, чтобы установить Basic Auth для операции, для которой требуется проверка подлинности:

@ApiOperation(value = "Return list of categories", response=Category.class, responseContainer="List", httpMethod="GET", authorizations = {@Authorization(value="basicAuth")})
public Response getCategories();

Ответ 2

Я тоже боролся с этим. В моем случае я использовал плагин swagger-maven. Чтобы решить эту проблему, я добавил ее в плагин maven:

<securityDefinitions>
  <securityDefinition>
    <name>basicAuth</name>
    <type>basic</type>
  </securityDefinition>
</securityDefinitions>

После этого я смог добавить его на свой ресурс следующим образом:

@Api(value = "My REST Interface", authorizations = {@Authorization(value="basicAuth")})

Сгенерированный json включил элемент безопасности для каждой конечной точки:

"security":[{
  "basicAuth" : []
 }]

И определение безопасности:

  "securityDefinitions" : {
    "basicAuth" : {
      "type" : "basic"
    }
  }

Я надеюсь, что это тоже поможет другим.