如何通过zuul或任何api网关调用安全的微服务端点
Posted
技术标签:
【中文标题】如何通过zuul或任何api网关调用安全的微服务端点【英文标题】:How to call a secure microservice endpoint through zuul or any api gateway 【发布时间】:2020-02-23 18:51:49 【问题描述】:我有一个 springboot 应用程序。端点是安全的,它们需要 jwt 令牌授权才能被访问。应用程序中有一个端点,它接受用户名和密码并返回一个 jwt 令牌。现在可以在授权标头中设置此令牌,并且可以访问其他安全 api。
我有另一个 springboot 应用程序,它充当 zuul api 网关。如何通过此 zuul 应用程序调用我的安全 API。我是微服务架构的新手。请指教。
【问题讨论】:
【参考方案1】:我的建议是你应该只在网关(Zuul)级别进行身份验证。
您不应该在微服务间调用期间进行身份验证。
您的微服务都可以通过网关访问,因此会受到保护。
如果你仍然想使用 JWT 令牌机制进行微服务间调用,请使用下面的示例-
假设我有一个名为 search-service 作为微服务的服务。
创建一个服务来调用登录端点并获取令牌并将该令牌传递到授权标头中,例如:“Bearer”
@FeignClient(name = "search-service")
public interface SearchService
@RequestMapping(method = RequestMethod.POST , value = "/api-search/user/v2/search" , consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
List<Map<String, List<Map<String, Object>>>> search(@RequestHeader("Authorization")String token, String query);
@RequestMapping(method = RequestMethod.POST , value = "/api-search/auth/login", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
public AuthResponseDto login(@RequestBody AuthRequestDto authRequestDto);
【讨论】:
是的,但是微服务的开发已经具备一定的安全性。有什么方法可以实现这一点。 @manjosh - 我已编辑我的答案以解决您的查询。让我知道它是否有效。以上是关于如何通过zuul或任何api网关调用安全的微服务端点的主要内容,如果未能解决你的问题,请参考以下文章
SpringBootSpringBoot 之 Zuul网关(十五)
Spring Boot + Spring Cloud 构建微服务系统:API服务网关(Zuul)