Java 如何通过zuul或任何api网关调用安全的微服务端点

Java 如何通过zuul或任何api网关调用安全的微服务端点,java,netflix-zuul,api-gateway,Java,Netflix Zuul,Api Gateway,我有一个springboot应用程序。端点是安全的,它们需要jwt令牌授权才能被访问。应用程序中有一个端点,它接受用户名和密码并返回jwt令牌。现在,可以在授权标头中设置该令牌,并且可以访问其他安全api 我有另一个springboot应用程序,它充当zuul api网关。如何通过这个zuul应用程序调用我的安全api。我不熟悉微服务体系结构。请告知。我的建议是,您应该只在网关(Zuul)级别进行身份验证 您不应该在跨微服务呼叫期间进行身份验证 您的微服务都可以通过网关访问,因此将受到保护 如果

我有一个springboot应用程序。端点是安全的,它们需要jwt令牌授权才能被访问。应用程序中有一个端点,它接受用户名和密码并返回jwt令牌。现在,可以在授权标头中设置该令牌,并且可以访问其他安全api


我有另一个springboot应用程序,它充当zuul api网关。如何通过这个zuul应用程序调用我的安全api。我不熟悉微服务体系结构。请告知。

我的建议是,您应该只在网关(Zuul)级别进行身份验证

您不应该在跨微服务呼叫期间进行身份验证

您的微服务都可以通过网关访问,因此将受到保护

如果您仍然希望使用JWT令牌机制进行跨微服务调用,请使用以下示例-

假设我有一个名为搜索服务的服务作为微服务

创建一个服务来调用登录端点,获取令牌并在授权头中传递该令牌,例如:“Bearer”

@FeignClient(name=“搜索服务”)
公共接口搜索服务
{
@RequestMapping(method=RequestMethod.POST,value=“/api search/user/v2/search”,consumes=MediaType.APPLICATION\u JSON\u UTF8\u value)
列表搜索(@RequestHeader(“授权”)字符串标记,字符串查询);
@RequestMapping(method=RequestMethod.POST,value=“/api search/auth/login”,consumes=MediaType.APPLICATION\u JSON\u UTF8\u value)
public AuthResponseDto登录(@RequestBody AuthRequestDto AuthRequestDto);
}

是的,但微服务的开发已经具备了一定的安全性。我们有什么办法可以做到这一点吗?@manjosh-我已经编辑了我的答案来解决您的问题。让我知道它是否有效。
@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);


}