2017-05-03 1 views
0

J'ai configuré swagger avec une sous-classe Application et l'objet beanConfig, mon securityDefinition doit permettre à swagger ui d'afficher le champ de api_key pour permettre l'authentification pour toutes les couches de mes services.swagger securityDefinition avec 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); 

le api_key attendu vient dans le "x-jeton" http tête

+0

extrait de l'exemple de l'animalerie servlet bootstraped, i a ajouté un nouveau SwaggerContextService() updateSwagger (swagger). à la fin –

Répondre

0

vous pouvez implémente io.swagger.jaxrs.config.ReaderListener, addSecurity dans la méthode AfterScan. par exemple:

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

}