Spring Cloud + Zuul + JWT for Value / Reference Tokens

时间:2016-07-02 03:29:10

标签: spring-security oauth spring-boot jwt netflix-zuul

阅读文章 How To Control User Identity Within Microservices 后,我一直在尝试实施此类访问控制方案(价值和参考代币),但经过多个其他GitHub中与 Spring Security + OAuth + Zuul 相关的主题和示例,我找不到如何实现这一目标的具体示例。所有涉及 JWT 的示例都会在返回令牌时返回用户详细信息,这就是我想要避免的内容。用户详细信息永远不应该直接到达客户端,而应该传递给后端服务。教程 Spring Security + AngularJs 有很多关于如何将应用程序发展为安全应用程序的信息,但使用访问令牌或提到获取用户的可能性详情直接通过 JWT

@ phoenix7360 这个问题 Using Zuul as an authentication gateway ,正是我一直试图实施的方法,但它仅提供了为微服务执行此类安全方法所需的配置的简要概述。请参考这个问题中的图像,以便清楚地了解它将如何发展。

我无法完全了解应如何配置 Zuul Pre-Filter 以及Authorization Server的配置应该是什么样子。正如文章和SO问题所述,流程将是这样的:

外部(HTTPS)

  1. 客户端针对OAuth2服务器进行身份验证
  2. OAuth服务器返回不透明的访问令牌(没有其他信息的UUID)
  3. 客户端使用授权标头中的访问令牌向API网关发送请求
  4. API网关使用授权标头中的访问令牌向OAuth服务器请求用户详细信息
  5. OAuth服务器检查访问令牌是否有效并以JSON格式返回用户信息
  6. 内部(HTTP / S)

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

      ZuulFilter如何工作?是否需要针对OAuth服务器发出新请求(例如,通过RestTemplate),或者当前实现是否支持这些方案。 OAuth和Zuul的JavaConfig条款是否需要任何特定配置?如果有人知道一个真正有用的工作示例,并且对于此主题的未来参考将非常有用。

      我正在使用Spring Boot(1.4.0-M3)+ Spring OAuth + Spring Cloud(Eureka,Ribbon,Zuul)

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

      提前致谢!

1 个答案:

答案 0 :(得分:0)

JHipster在处理此问题方面做得很好。如果我想简单介绍一下登录过程,请先登录,然后获取要传递给以下服务的所有信息(例如用户名,电子邮件等),然后再将其传递给微服务。 您可以从okta看到下面的链接以获取更多信息 https://developer.okta.com/blog/2018/03/01/develop-microservices-jhipster-oauth