2017-05-03 3 views
0

Ich habe Swagger mit einer Application-Unterklasse und dem BeanConfig-Objekt konfiguriert, meine SecurityDefinition muss swagger ui erlauben, das de-api_key-Feld anzuzeigen, um die Authentifizierung für alle meine Services-Layer zu erlauben.swagger securityDefinition mit Resteasy

BeanConfig beanConfig = new BeanConfig(); 
    beanConfig.setSchemes(new String[] { "http" }); 
    beanConfig.setHost("192.168.4.9:8080"); 
    beanConfig.setBasePath("/cjppa/rest"); 
    beanConfig.setResourcePackage("com.cjppa.fpuna.backend.resources"); 
    beanConfig.setScan(true); 
    beanConfig.setPrettyPrint(true); 

    io.swagger.models.Info info = new io.swagger.models.Info(); 
    io.swagger.models.Contact contact = new io.swagger.models.Contact(); 
    info.setVersion("1.0"); 
    beanConfig.setInfo(info); 

    io.swagger.models.auth.ApiKeyAuthDefinition apikey = new 
    io.swagger.models.auth.ApiKeyAuthDefinition(); 
    apikey.setName("x-token"); 
    apikey.setIn(In.HEADER); 


    Swagger swagger = new Swagger().info(info); 
    swagger.securityDefinition("api_key", apikey); 

    beanConfig.configure(swagger); 

die erwartete api_key kommt in der "x-Token" http-Header

+0

extrahiert aus Pet Store Beispiel bootstraped Servlet, ich habe neue SwaggerContextService() hinzugefügt. updateSwagger (swagger); Am Ende –

Antwort

0

Sie io.swagger.jaxrs.config.ReaderListener, addSecurity in Afterscan-Methode implementiert werden. Beispiel:

@SwaggerDefinition(securityDefinition = @SecurityDefinition(apiKeyAuthDefinitions = { 
    @ApiKeyAuthDefinition(in = ApiKeyAuthDefinition.ApiKeyLocation.HEADER, key = "token", name = "E-token"), 
    @ApiKeyAuthDefinition(in = ApiKeyAuthDefinition.ApiKeyLocation.HEADER, key = "userId", name = "E-userId"), 
    @ApiKeyAuthDefinition(in = ApiKeyAuthDefinition.ApiKeyLocation.HEADER, key = "corpId", name = "E-corpId") })) 
public class SwaggerCustomizeDefinition implements ReaderListener { 

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

    } 

    @Override 
    public void afterScan(Reader reader, Swagger swagger) { 
     swagger.addSecurity(new SecurityRequirement().requirement("token")); 
     swagger.addSecurity(new SecurityRequirement().requirement("userId")); 
     swagger.addSecurity(new SecurityRequirement().requirement("corpId")); 
    } 

}