securitydefinitions example swagger

example - swagger securitydefinitions



¿Cómo usar Swagger con OAuth API? (5)

¿Es posible usar Swagger como una herramienta de documentación / prueba para las API que usan OAuth2? No veo nada en el sitio de Swagger (ni en ningún otro lugar). Cada uso que he visto usa una clave API, HTTP básico o cookies.


He estado trabajando en la misma línea. Swagger aceptará cualquier encabezado o URL api clave definida o token. Agregar un asistente de validación a la api y la aplicación es un enfoque estándar.

Oauth requiere una revisión de HTML o iniciar sesión para iniciar el proceso de intercambio de voz. Esto significa que una api de Swagger tendrá que ser compatible con una interfaz web para un inicio de sesión estándar y la aceptación del alcance. El enrollar una ola para dar lugar a resultados arrogantes en unos pocos bucles lógicos, que a largo plazo no son fáciles de soportar.

Un enfoque diferente que estamos explorando es la opción de permitir que la API maneje y almacene tokens de acceso para varios proveedores diferentes; GitHub, twitter y facebook. Esto también puede dar como resultado bucles de inicio de sesión.


IOdocs de mashery parece admitir OAuth, pero es bastante diferente de swagger (redis, node, etc.). Está disponible en github .


La publicación del blog http://developers-blog.helloreverb.com/enabling-oauth-with-swagger/ citada por @fehguy muestra un ejemplo de código java para incluir los datos de autorización en json generados por swagger, sin embargo, mi pregunta fue donde debe incluirse con la aplicación con Spring, JAXRS y CXF. No lo encontré en CXF + JAXRS Ejemplo: https://github.com/swagger-api/swagger-core/tree/master/samples/java-jaxrs-cxf

Sin embargo, busca un poco más y gotcha!

https://github.com/swagger-api/swagger-core/blob/master/samples/java-jersey-spring/src/main/resources/beans-asset-ws.xml

¡Es necesario incluir un Bean con una clase llamada Bootstrap (se extiende HttpServlet) y un bloque estático!

Opinión: Tal vez sería más "fácil de cargar" cargado de anotaciones por SwaggerConfig Scanner en la clase Rest en lugar de un bloque estático en un servlet.


tarde a la fiesta aquí, pero el soporte de oAuth ahora está en 1.3.0-RC1 de swagger-core . La biblioteca de javascript que puede soportar oAuth fue lanzada ayer en swagger-js . Finalmente, el swagger-ui está en fase de desarrollo y pronto tendrá un flujo de servidor y implícito de oAuth.


@Configuration public class SwaggerConfiguration { @Bean @DependsOn("jaxRsServer") //org.apache.cxf.endpoint.Server bean public ServletContextInitializer initializer() { return new ServletContextInitializer() { @Override public void onStartup(ServletContext servletContext) throws ServletException { BeanConfig scanner = (BeanConfig) ScannerFactory.getScanner(); Swagger swagger = scanner.getSwagger(); servletContext.setAttribute("swagger", swagger); } }; } @Bean public Feature swaggerFeature() { XSwagger2Feature feature = new XSwagger2Feature(); return feature; } @Bean public FilterRegistrationBean swaggerApiFilter() { ApiOriginFilter filter = new ApiOriginFilter(); FilterRegistrationBean registrationBean = new FilterRegistrationBean(); registrationBean.setFilter(filter); registrationBean.setOrder(Ordered.HIGHEST_PRECEDENCE); return registrationBean; } public static class XSwagger2Feature extends Swagger2Feature { @Override protected void addSwaggerResource(Server server) { super.addSwaggerResource(server); BeanConfig scanner = (BeanConfig) ScannerFactory.getScanner(); Swagger swagger = scanner.getSwagger(); swagger.securityDefinition("api_key", new ApiKeyAuthDefinition("api_key", In.HEADER)); swagger.securityDefinition("petstore_auth", new OAuth2Definition() .implicit("http://petstore.swagger.io/api/oauth/dialog") .scope("read:pets", "read your pets") .scope("write:pets", "modify pets in your account")); } } }