2017-05-03 1 views
0

Application 하위 클래스와 beanConfig 객체를 사용하여 swagger를 구성했지만 내 securityDefinition에서 모든 서비스 계층에 대한 인증을 허용하는 de api_key 필드를 표시하도록 swiger를 허용해야합니다.swagger securityDefinition with 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); 

예상 API_KEY는 "X-토큰"HTTP 헤더

+0

관상어 예 bootstraped 서블릿으로부터 추출 제가 첨가 새로운 SwaggerContextService() updateSwagger (자신감). 끝에 –

답변

0

당신이 afterScan 방법에 io.swagger.jaxrs.config.ReaderListener, addSecurity를 ​​구현 할 수 있습니다 제공됩니다. 예 :

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

} 
관련 문제