2015-09-03 14 views
12

Come definire l'autenticazione di base utilizzando le annotazioni Swagger 2.0 e visualizzarla nell'interfaccia utente swagger.Swagger 2.0 dove dichiarare schema di autenticazione di base

Nella risorsa che ho:

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

ho guardato qui:

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

E si dice "Una volta che hai dichiarato e configurato che i regimi di autorizzazione sostenete nella vostra API, è possibile utilizzare queste annotazioni per annotare quale schema di autorizzazione è richiesto su una risorsa o su un'operazione specifica "Ma non riesco a trovare nulla che parli di dove dichiarare e configurare gli schemi di autorizzazione.

Aggiornamento:

ho trovato il codice su come dichiarare lo schema, ma io ancora non vedo alcuna informazione sullo schema di autenticazione nell'interfaccia utente. Non sono sicuro di cosa mi manchi

@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

Sei riuscito a risolvere questo problema? –

risposta

2

Ho lottato anche con questo. Nel mio caso ho usato il swagger-maven-plugin. Per risolvere questo ho aggiunto questo all'interno del plugin Maven:

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

Dopo che ero in grado di aggiungere sul mio risorsa come questa:

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

JSON generato incluso l'elemento di sicurezza per ciascun endpoint:

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

E la definizione di sicurezza:

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

Spero che questo aiuti anche gli altri.

5

Utilizzando Springfox 2,6 annotazioni, è necessario definire l'autenticazione di base come uno dei più sicurezza schemi quando si imposta il Docket nella configurazione, in questo modo:

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

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

Quindi è possibile utilizzare la Springfo x annotazioni nel servizio per impostare l'autenticazione di base per l'operazione per cui si desidera richiedere l'autenticazione:

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