Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带Spring boot的微服务中的JWT授权_Java_Spring Boot_Spring Security_Jwt_Microservices - Fatal编程技术网

Java 带Spring boot的微服务中的JWT授权

Java 带Spring boot的微服务中的JWT授权,java,spring-boot,spring-security,jwt,microservices,Java,Spring Boot,Spring Security,Jwt,Microservices,我必须使用微服务架构构建一个应用程序。我将整个系统划分为多个组件,每个组件代表一个spring boot项目。大约在6月6日,有几个spring boot项目。我已经使用eureka服务器注册了所有用于负载平衡的服务。已经为web门户开发了一个单独的Spring引导项目,该应用程序包含身份验证、Spring安全授权和JWT协议。现在我有7个项目,包括一个web门户,每个项目在控制器包下都有控制器类 现在我需要知道以下几点 注册和登录请求到达web门户,并在签名后生成JWT令牌并将其发送到客户端,

我必须使用微服务架构构建一个应用程序。我将整个系统划分为多个组件,每个组件代表一个spring boot项目。大约在6月6日,有几个spring boot项目。我已经使用eureka服务器注册了所有用于负载平衡的服务。已经为web门户开发了一个单独的Spring引导项目,该应用程序包含身份验证、Spring安全授权和JWT协议。现在我有7个项目,包括一个web门户,每个项目在控制器包下都有控制器类

现在我需要知道以下几点

  • 注册和登录请求到达web门户,并在签名后生成JWT令牌并将其发送到客户端,但授权部分仅在web门户上的SecurityConfig类中可用。那么,我是否应该在每次经过身份验证后,都通过web门户将客户端的所有请求发送到组件

         Client ----------------> Web Portal ------------------>Service/Component
    
  • 我需要知道,我是否可以直接向下面的另一个组件/服务发送请求

                      username + password
       Client --------------------------------------->  Web Portal
    
                         JWT token
       Client <-------------------------------------- Web Portal
                
                        JWT token
       Client ------------------------------------------> Service/Component
    
    用户名+密码
    客户端----------------->Web门户
    JWT令牌
    客户端服务/组件
    
    可能是的,因为JWT是用户可以使用的东西,每次他发送请求时,令牌应由发卡机构验证,或者在我们黑名单一些令牌的情况下,这些请求不应直接处理


    在微服务中,API网关负责这些事情,在检查角色和权限之后,它根据传入的路由或URI将请求转发给相应的微服务,然后将其映射到在Eureka服务器中注册的后端服务的URI。

    我是否必须在实现安全配置时将zuul服务器实现为API网关,并在Eureka服务器中注册它,或者我是否可以实现安全性直接在eureka服务器中配置?这实际上取决于基础结构设置。当您的所有微服务都可以公开访问并且理论上可以直接调用时,当请求到达端点时,它们需要自己验证用户身份验证和授权的正确性。为了验证JWT的正确签名,服务需要知道用于签名令牌的密钥对的公钥。另一种方法是不使服务公开可访问,并使用API网关作为中心入口点,该入口点还验证身份验证/授权的正确性。基本思想是,通常我们不会期望将身份验证和授权的责任分配给每个服务,在不丧失通用性的情况下,API网关应该能够解决这个问题,是的,你可以将Zuul实现为网关,也许这篇文章可以帮助你