【问题标题】:Spring boot oauth2 response with redirect url as underlying service instead of proxy (Gateway)Spring boot oauth2 响应,重定向 url 作为底层服务而不是代理(网关)
【发布时间】:2021-09-01 03:56:55
【问题描述】:

我正在使用 Springboot 实现 oauth2 服务器

我有四个微服务

  1. 销售额(销售额)
  2. 库存(库存)
  3. IAM 服务(授权服务器,带有 Oauth2)(http://iam:8089)
  4. 网关(http://www.gateway.com 上的网关)

所有这些服务都在Spring cloud gateway后面,部署在K8S下,Gateway对外暴露为接口。

现在,如果我尝试使用 oauth2 throught gateway 对用户进行身份验证,如下所示。

第 1 步:

Http 请求 http://www.gateway.com/oauth/authorize

所以在响应头中我越来越喜欢

位置:http://iam:8089/v1/oauth/login(但期望是http://www.gateway.com/oauth/login

因为那个浏览器 将我重定向到 http://iam:8089/oauth/login

理想情况下,我期望它也通过网关服务路由

http://www.gateway.com/oauth/login

谁能帮我解决这个问题。

谢谢 阿尔佩什

【问题讨论】:

    标签: java spring-boot oauth-2.0 spring-cloud-gateway


    【解决方案1】:

    听起来不错的设置符合我们在 Curity 在 IAM Primer Article 中推荐的设置,授权服务器 (AS) 位于反向代理或网关后面。

    在您的情况下,AS 侦听 http://Iam:8089 但这是一个内部 URL。 AS 还具有 Internet 客户端使用的“基本 URL”,这是网关的 URL,在您的示例中为 http://www.gateway.com

    • 它将在 OpenID Connect 发现请求中返回给客户端
    • 在身份验证期间将在浏览器重定向中返回给浏览器

    在 Spring OAuth2 Server 中应该有您设置 Base URL 的地方,类似于 Curity Identity Server 中的设置(见下图)。该过程应该是设置此值,然后验证它是否在元数据请求中返回。然后您应该正确配置。

    在 Spring 中,我希望您需要的设置在某处的流利配置中 - 可能是 Configurer classes 之一。不过,我发现在 Spring 中很难找到我想要的东西。

    【讨论】:

      猜你喜欢
      • 2015-10-28
      • 2017-10-18
      • 2016-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-25
      • 2020-04-15
      相关资源
      最近更新 更多