Можно ли использовать swagger в качестве инструмента для документирования/тестирования API-интерфейсов, которые используют OAuth2? Я ничего не вижу на сайте swagger (или где-нибудь еще в этом отношении). Каждое использование, которое я видел, использует либо ключ API, HTTP basic, либо файлы cookie.Как использовать swagger с API OAuth?
ответ
Я работаю по тем же линиям. Swagger будет принимать любой заголовок или URL-адрес api-ключа или токена. Добавление помощника проверки подлинности в api и app является стандартным подходом.
Oauth действительно требует просмотра HTML и/или входа в систему, чтобы начать процесс рукопожатия. Это означает, что apache swagger должен поддерживать веб-интерфейс для стандартного входа и приема. Перемещение oauth в swagger приводит к нескольким логическим циклам, которые долгое время нелегко поддерживать.
Другой подход, который мы изучаем, - это возможность позволить обработчику api и хранить токены доступа для ряда различных поставщиков oauth; GitHub, Twitter и Facebook. Это может также привести к логическим циклам.
Поздняя вечеринка здесь, но поддержка oAuth теперь находится в 1.3.0-RC1 от swagger-core. Библиотека javascript, которая может поддерживать oAuth, была выпущена вчера в swagger-js. Наконец, swagger-ui находится в стадии разработки и вскоре будет иметь неявный и серверный поток.
Большое спасибо - поздно вечеринке намного лучше, чем никогда! Это потрясающая новость. Благодарю вас! :-) – fool4jesus
в blog's размещать http://developers-blog.helloreverb.com/enabling-oauth-with-swagger/ цитируется @fehguy показан пример кода Java, чтобы включить данные авторизации в формате JSON, порожденной развязностью, однако мой вопрос был, где он должен быть включен в приложении с Spring, JAXRS и CXF. Я не нашел его в CXF + JAXRS Образец: https://github.com/swagger-api/swagger-core/tree/master/samples/java-jaxrs-cxf
Однако, вы ищете немного больше и получите!
Нужна включать Bean с классом под названием Bootstrap (распространяется HttpServlet) и статический блок!
Мнение: Возможно, это было бы более «дружественным к весне», загруженным из аннотаций SwaggerConfig Scanner в классе Rest вместо статического блока в сервлете.
Первая ссылка мертва – Andrii
Сегодня, есть еще один способ сделать это .. какую версию swagger/spring вы используете? Я могу попробовать помочь .. и обновить свой ответ .. –
@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"));
}
}
}
Благодарим за обсуждение. Похоже, вы являетесь частью команды разработчиков чванства? Есть ли какая-то документация, которая говорит о вашем прогрессе или процессе? Благодаря! – fool4jesus