2015-09-03 33 views
12

Swagger 2.0 ek açıklamalarını kullanarak temel kimlik doğrulamayı nasıl tanımlarım ve swagger UI'de gösterilmesini sağlarım. ,Swagger 2.0 Basic Auth Schema'nın nerede bildirileceği

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

Ve bu ilan ve yapılandırılmış sonra hangi yetki düzenleri size API destekleyen" diyor: kaynak olarak

Ben:

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

Burada baktım Bir kaynakta veya belirli bir işlem için hangi yetkilendirme planının gerekli olduğunu not etmek için bu ek açıklamaları kullanabilirsiniz. "Ancak yetkilendirme planlarının nerede bildirileceği ve yapılandırılacağı hakkında konuşacak hiçbir şey bulamıyorum.

Güncelleme:

Ben şema beyan etme hakkında kodunu buldum, ama hala arayüzünde kimlik doğrulama şeması hakkında herhangi bir bilgi görmüyorum. Ne olduğumdan emin değilim

@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

Bu sorunu çözmeyi başardınız mı? –

cevap

2

Bu konuda da titremiyorum. Benim durumumda swagger-maven-plugin kullandım. ben böyle benim kaynakta eklemek başardı Bundan sonra

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

: Bunu çözmek için ben maven plugin içinde bu ilave oluşturulan json Her uç için güvenlik elemanı dahil

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

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

Ve güvenlik tanımı:

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

Umarım bu da başkalarına yardımcı olur.

5

var, önce güvenlik biri olarak temel kimlik doğrulaması tanımlamalıdır Sonra Springfo kullanabilirsiniz

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

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

: düzenleri böyle, yapılandırmanızda Docket kurarken Kimlik doğrulama gerektirmek istediğiniz işlem için Temel Kimlik Doğrulamayı ayarlamak için hizmetinizde x ek açıklamaları:

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