Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.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
Spring security 春云+;祖尔+;价值/参考标记的JWT_Spring Security_Oauth_Spring Boot_Jwt_Netflix Zuul - Fatal编程技术网

Spring security 春云+;祖尔+;价值/参考标记的JWT

Spring security 春云+;祖尔+;价值/参考标记的JWT,spring-security,oauth,spring-boot,jwt,netflix-zuul,Spring Security,Oauth,Spring Boot,Jwt,Netflix Zuul,在阅读了这篇文章之后,我一直在尝试实现这样的访问控制方案(值和引用令牌),但是在阅读了GitHub中与Spring Security+OAuth+Zuul相关的多个其他主题和示例之后,我找不到具体的例子来说明如何实现这一点。所有涉及JWT的示例都会在返回令牌时返回用户详细信息,这是我想要避免的。用户详细信息不应直接到达客户端,而应传递给后端服务。教程提供了大量关于如何将应用程序发展为安全应用程序的信息,但使用了访问令牌或提到了通过JWT直接获取用户详细信息的可能性 因此,这个问题,@phoeni

在阅读了这篇文章之后,我一直在尝试实现这样的访问控制方案(值和引用令牌),但是在阅读了GitHub中与Spring Security+OAuth+Zuul相关的多个其他主题和示例之后,我找不到具体的例子来说明如何实现这一点。所有涉及JWT的示例都会在返回令牌时返回用户详细信息,这是我想要避免的。用户详细信息不应直接到达客户端,而应传递给后端服务。教程提供了大量关于如何将应用程序发展为安全应用程序的信息,但使用了访问令牌或提到了通过JWT直接获取用户详细信息的可能性

因此,这个问题,@phoenix7360,正是我一直试图实现的方法,但它只提供了执行这种微服务安全方法所需配置的简要概述。请参考本问题中的图片,以了解其进展情况

我无法完全理解应该如何配置Zuul预过滤器,以及授权服务器的配置应该是什么样子。正如文章和SO问题中所述,流程如下:

外部(HTTPS)

  • 客户端根据OAuth2服务器进行身份验证
  • OAuth服务器返回不透明的访问令牌(UUID,不包含其他信息)
  • 客户端使用授权标头中的访问令牌将请求发送到API网关
  • API网关使用授权标头中的访问令牌向OAuth服务器请求用户详细信息
  • OAuth服务器检查访问令牌是否有效,并以JSON格式返回用户信息
  • 内部(HTTP/S)

  • API网关使用用户详细信息创建JWT,并使用私钥对其进行签名
  • API网关将JWT添加到请求中,并将其转发到资源服务器
  • 资源服务器使用API网关的公钥验证JWT
  • 注意:如果OAuth服务器指示访问令牌不再有效,则API网关应返回错误

    ZuulFilter如何工作?是否需要针对OAuth服务器发出新请求(例如,通过RestTemplate),或者当前实现是否支持这些方案?OAuth和Zuul的JavaConfig类都需要任何特定的配置吗?如果有人知道一个工作的例子,这将是真正有帮助的,将是伟大的未来参考关于这个主题

    我使用的是SpringBoot(1.4.0-M3)+SpringOAuth+SpringCloud(Eureka,Ribbon,Zuul)

    我知道这个问题与之前链接的问题非常相似,如果这不是正确的方式,我很抱歉,但我认为一个新的线程会比在一个旨在解决另一个问题的SO线程上寻求帮助更好


    提前谢谢

    JHipster在处理这个问题上做得相当好。如果我想简单地告诉您登录过程,首先您要登录,及时获取您需要传递给以下服务的所有信息(如用户名、电子邮件等),然后将它们传递给您的微服务。 有关更多信息,请参见okta的以下链接

    如果您想要UAA,我认为zuul不需要检查令牌和调用AuthorizeServer。但是,如果您没有UAA,我认为Api网关是AuthorizeServer。但是在服务到服务调用中,需要OAuth2RestTemplate,该模板在调用服务方法之前获取令牌。您为什么要在网关中执行此操作?如果您想检查传入JWT的有效性(以防万一),我完全理解,但是您的服务还需要使用(并验证)令牌。但总的来说,你的流量看起来不错。除了一件事:应该首先验证带有Oauth访问令牌的请求,然后在成功后,您可以创建JWT并对其签名,如果令牌不正确,则抛出错误。还需要考虑其他服务的端点来检索验证签名所需的公钥。