【问题标题】:Authorizing requests through spring gateway with zool via oauth server通过 oauth 服务器使用 zool 通过 spring 网关授权请求
【发布时间】:2019-07-03 03:10:03
【问题描述】:

我的应用程序在带有 zuul 代理的(spring)网关后面有微服务。还有内部(弹簧)oauth2 授权服务器。我想为来自外部的微服务调用实现 client_credentials 授权类型 - 用于 M2M 通信。

当我在其 application.yml 中配置网关 client_id 和 client_secret 请求来自网关但没有请求者检查 - oauth 授权网关本身,因此根本没有授权。我可以使用授权代码授予类型,但它需要(Web 客户端)用户可能没有的 Web 客户端授权。

如果我从 oauth 微服务请求身份验证令牌,我将获得此应用的正确令牌。

如何强制网关使用请求者的 client_id 和 client_secret 从 oauth 获取令牌? - 例如我可以通过标题提供它们作为基本授权。 或者我可以向网关提供请求者从 oauth 获得的令牌吗?

这个问题和另一个很相似:Implementing authentication and authorization using Zuul Proxy, Oauth2 on REST Microservices 除了可能没有 Web 客户端,而是一个外部微服务。

【问题讨论】:

    标签: spring spring-security oauth-2.0 netflix-zuul gateway


    【解决方案1】:

    我已经回答了Implementing authentication and authorization using Zuul Proxy, Oauth2 on REST Microservices的问题。

    在我的例子中,最重要的是配置 zuul 代理以将授权标头转发到下游服务。最初我考虑使用 zuul 过滤器,但解决方案要简单得多 - 只需为 zuul 配置敏感标头即可:

    server:
      port: 8080
    zuul:
      sensitiveHeaders: Cookie,Set-Cookie # <--- this line
      routes:
        spring-security-oauth-resource:
          path: /spring-security-oauth-resource/**
          url: http://localhost:8081/spring-security-oauth-resource
        oauth:
          path: /oauth/**
          url: http://localhost:8083/spring-security-oauth-server/oauth
    
    

    使用 oauth JWT 令牌成功验证客户端/用户后,网关会将其转发到下游。 当然,此网关必须允许未经身份验证的访问 oauth 资源,并要求对所有其他网关进行身份验证。

    可以在文章中找到有关主题的更多详细信息 https://www.baeldung.com/spring-security-zuul-oauth-jwt

    【讨论】:

      猜你喜欢
      • 2017-11-07
      • 1970-01-01
      • 2016-04-17
      • 1970-01-01
      • 1970-01-01
      • 2019-03-23
      • 1970-01-01
      • 2020-01-05
      • 2021-11-04
      相关资源
      最近更新 更多