适用于所有微服务的Spring Zuul Gateway Swagger-UI

时间:2018-08-12 21:40:01

标签: spring-boot swagger spring-security-oauth2 netflix-zuul

(对不起,如果我没有任何意义,那已经很晚了,我似乎找不到答案)

我们正在使用带有netflix zuul网关的spring boot microservices,我们想访问那里的所有端点列表。我们已经在网关上设置了swagger-ui,并且可以卷曲微服务的/ v2 / api-docs,但是我们不知道如何在swagger-ui中显示它。

我首先尝试使用this method。 (我是从pastebin链接的,因为它很长,而且我不知道将其包含在帖子中是否被认为是不好的做法。)
它向我显示了网关的端点,但没有显示微服务。这也让我从我们的身份验证服务中获取了令牌。

然后我尝试了这个,实际上我从添加的微服务中获得了401。

@Component
@Primary
@EnableAutoConfiguration
public class SwaggerAggregatorController implements SwaggerResourcesProvider {
    @Override
    public List<SwaggerResource> get() {
        List<SwaggerResource> resources= new ArrayList<>();
        SwaggerResource swaggerResource = new SwaggerResource();
        swaggerResource.setName("ms-name");
        swaggerResource.setLocation("/ms-name/v2/api-docs");
        swaggerResource.setSwaggerVersion("2.0");

        resources.add(swaggerResource);
        return resources;
    }
}

我可以使用Bearer令牌在邮递员中使用http://gateway/ms/v2/api-docs获取json。
我们使用OAuth2。当然,当我加载swagger-ui时,我会得到预期的

{"error":"unauthorized","error_description":"Full authentication is required to access this resource"}  

因此,我应该在请求中添加一个Bearer令牌,但是我需要从使用OAuth2的auth-service中获取该令牌。我应该如何授权招摇,以便它可以从其他微服务中获取所有资源?

再次,如果我没有任何道歉,我会道歉。

如果我需要提供其他信息,请告诉我!

编辑:因此,我已经从微服务上的/ v2 / api-docs中删除了身份验证,以便前端人员也可以发挥自己的魔力。显然,我想确保它的安全,但这是我找到的唯一解决方法。尽管是暂时的,但并不安全。另外,几乎所有端点都需要一个承载令牌才能工作,因此请“尝试一下!”昂首阔步的部分目前无济于事。

0 个答案:

没有答案