提问者:小点点

Spring Bootoaut2响应,重定向url作为底层服务而不是代理(网关)


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

我有四个微服务

  1. 销售(销售)
  2. 库存(库存)
  3. IAM服务(授权服务器,Oaut2)(超文本传输协议://iam: 8089)
  4. 网关(http://www.gateway.com上的网关)

所有这些服务都在Spring clold网关后面,部署在K8S下,Gateway作为外部接口公开。

现在,如果我尝试通过如下所示的网关使用oaut2对用户进行身份验证。

第一步:

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

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

位置:超文本传输协议://iam: 8089/v1/oauth/login(但期望http://www.gateway.com/oauth/login)

由于该浏览器将我重定向到超文本传输协议://iam: 8089/oauth/login

理想情况下,我希望也通过网关服务进行路由,例如

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

有人能帮我解决这个问题吗?

谢谢Alpesh


共1个答案

匿名用户

听起来像是一个很好的设置,符合我们在IAM入门文章中推荐的清洁度,授权服务器(AS)位于反向代理或网关后面。

在您的例子中,AS监听超文本传输协议://Iam: 8089,但这是一个内部URL。AS还有一个Internet客户端使用的“URL”,这是网关的URL,在您的示例中http://www.gateway.com:

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

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

在Spring中,我希望您需要的设置在某个地方的流畅配置中——也许是配置者类之一。不过,我发现很难在Spring中找到我要找的东西。