(对不起,如果我没有任何意义,那已经很晚了,我似乎找不到答案)
我们正在使用带有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中删除了身份验证,以便前端人员也可以发挥自己的魔力。显然,我想确保它的安全,但这是我找到的唯一解决方法。尽管是暂时的,但并不安全。另外,几乎所有端点都需要一个承载令牌才能工作,因此请“尝试一下!”昂首阔步的部分目前无济于事。