2015-09-03 3 views
12

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

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

@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); 
    } 
} 
+0

Вам удалось решить эту проблему? –

ответ

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" 
    } 
    } 

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

5

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

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

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

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

@ApiOperation(value = "Return list of categories", response=Category.class, responseContainer="List", httpMethod="GET", authorizations = {@Authorization(value="basicAuth")}) 
public Response getCategories(); 
Смежные вопросы