I think I finally got the right combination of configuration options. I reposted this question and added my answer on StackOverflow here:
http://stackoverflow.com/questions/43651298/adding-authorization-to-annotation-driven-swagger-json-with-jersey-2-and-spring/ I had tried ServletConfigAware and the settings on the Swagger object in the wrong place but in this configuration they seem to work. On Wednesday, April 26, 2017 at 8:31:28 PM UTC-5, C. Howell wrote: > > > Still working on this. I looked through the samples marked "Spring Boot" > and "Jersey" at https://github.com/swagger-api/swagger-samples, but it > appears that the Spring Boot examples don't add custom authentication, and > the non-Spring Boot examples all use the same Bootstrap.java file which > assumes I am directly using the HttpServlet class. One of the Spring Boot > examples uses SpringFox which I've already committed to not using that. > > Since the HttpServlet class is configuring Swagger inside the init() > function in the "Bootstrap.java" examples. The significant difference > between the HttpServlet code and the Application() code seems to be that > HttpServlet.init() has ServletConfig as a parameter, so I tried using > ServletConfigAware and adding the swagger.securityDefinition() code (as in > https://github.com/swagger-api/swagger-samples/blob/master/java/java-jersey-jaxrs/src/main/java/io/swagger/sample/Bootstrap.java#L31-L35) > > into the setServletConfig method. I tried this in both my Spring Boot > Application class and the Jersey ResourceConfig class. Neither of these > succeeded in making the Basic Auth definition I added show up in > /swagger.json. > > Any direction appreciated. > > Once I get the Basic Auth information to show up in /swagger.json, will > Swagger UI automatically pass Basic Auth headers to its "try it" API calls? > I've been looking for information about the level of support for Basic > Auth in Swagger UI and have come with a variety of stories. I'm not sure at > this point whether I can edit the index.html, need to rebuild the project, > or it will "just work" once I have Basic Auth showing up in /swagger.json. > > > On Tuesday, April 25, 2017 at 3:00:28 PM UTC-5, C. Howell wrote: >> >> >> I'm using: >> Spring boot 1.5.4 >> Package spring-boot-starter-jersey >> Swagger UI 3.0.4 >> Package swagger-jersey2-jaxrs 1.5.13 >> >> We're using digest authentication, but I've temporarily added basic >> authentication to the app to see if we could get this to work with Swagger >> UI. I'd like to apply it to the entire application rather than specify it >> on each method. >> >> Our JerseyConfig looks like this: >> >> >> >> @Component >> public class JerseyConfiguration extends ResourceConfig { >> private static Log logger = LogFactory.getLog(JerseyConfiguration.class >> ); >> >> >> @Value("${spring.jersey.application-path:/}") >> private String apiPath; >> >> >> public JerseyConfiguration() { >> registerEndpoints(); >> configureSwagger(); >> } >> >> >> private void registerEndpoints() { >> register(MyEndpoints.class); >> >> // Generate Jersey WADL at /<Jersey's servlet path>/application.wadl >> register(WadlResource.class); >> >> // Lets us get to static content like swagger >> property(ServletProperties.FILTER_STATIC_CONTENT_REGEX, >> "((/swagger/.*)|(.*\\.html))"); >> } >> >> >> /** >> * Configure the Swagger documentation for this API. >> * >> * Very useful article: >> * >> http://tech.asimio.net/2016/04/05/Microservices-using-Spring-Boot-Jersey-Swagger-and-Docker.html >> */ >> private void configureSwagger() { >> // Creates file at localhost:port/swagger.json >> this.register(ApiListingResource.class); >> this.register(SwaggerSerializers.class); >> >> >> BeanConfig config = new BeanConfig(); >> config.setConfigId("example-jersey-app"); >> config.setTitle("Spring Boot + Jersey + Swagger"); >> config.setVersion("2"); >> config.setContact("Me <[email protected]>"); >> config.setSchemes(new String[] {"http", "https"}); >> config.setResourcePackage("com.example.api"); >> config.setBasePath(this.apiPath); >> config.setPrettyPrint(true); >> config.setScan(true); >> } >> } >> >> >> Our swagger.json file is created entirely from annotations at this point. >> How do I incorporate authentication definitions? From what I've been >> reading, it sounds like I have to add code to both my app and Swagger UI to >> get the authorization documented and then test it with Swagger UI "Try It." >> I found this question and answer: >> https://github.com/swagger-api/swagger-core/issues/1257 "Annotation for >> Authentication?" but I am not explicitly defining my Servlet so I'm not >> sure how to incorporate the example code referenced there. >> >> What are the next steps I need to take to get authentication working from >> Swagger UI? >> >> >> -- You received this message because you are subscribed to the Google Groups "Swagger" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
