2015-09-03 14 views
12

Wie definiere ich grundlegende Authentifizierung mit Swagger 2.0 Annotationen und lassen Sie es in Swagger UI anzeigen.Swagger 2.0 wo Basic Auth-Schema zu deklarieren ist

In der Ressource ich habe:

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

Ich sah hier:

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

Und sie sagt: „Wenn Sie deklarieren haben und konfigurieren die Genehmigungsregelungen in Ihrem API unterstützen, Sie können diese Annotation verwenden, um zu notieren, welches Autorisierungsschema für eine Ressource oder eine bestimmte Operation erforderlich ist. "Ich kann jedoch nichts finden, was darüber spricht, wo die Autorisierungsschemas deklariert und konfiguriert werden sollen.

Update:

fand ich Code, wie das Schema zu erklären, aber ich sehe noch keine Informationen über das Authentifizierungsschema in der Benutzeroberfläche. Ich bin mir nicht sicher, was ich vermisse

@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

Haben Sie dieses Problem gelöst? –

Antwort

2

Ich kämpfte mit diesem auch. In meinem Fall habe ich das Swagger-Maven-Plugin benutzt. Um dies zu lösen, ich dieses Plugin im Maven hinzugefügt:

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

Danach konnte ich hinzufügen, es auf meine Ressource wie folgt aus:

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

Das erzeugte json das Sicherheitselement für jeden Endpunkt enthalten:

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

Und die Sicherheit Definition:

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

Ich hoffe, dass dies auch anderen hilft.

5

Mit Springfox 2.6 Anmerkungen, müssen Sie zuerst die Standardauthentifizierung als eine der Sicherheit definieren Schemata, wenn Sie das Docket in Ihrer Konfiguration wie folgt einrichten:

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

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

Dann können Sie das Springfo verwenden x Annotationen in Ihrem Dienst, um Basic Auth für den Vorgang festzulegen, für den Sie eine Authentifizierung benötigen: