【问题标题】:IIS reverse proxy not hitting the actual APIIIS 反向代理未命中实际 API
【发布时间】:2020-02-20 03:42:06
【问题描述】:

我正在为我的应用程序构建一个新的通用身份验证模块。为此,我需要拦截到达 API 层的请求,路由到通用身份验证服务,并仅在身份验证服务返回成功时继续常规流程。调用 Authentication 服务时,参数通过查询字符串传递给它,基于它返回 true/false 作为响应。

事件流程:

  1. 浏览器调用http://localhost/SampleService/api/Home?param=data,即Site1
  2. 站点 1 上的反向代理规则使呼叫转到站点 2,即 http://localhost/ValidateAuthN
  3. Site2 检查 param 的值并返回 JSON 响应 - true 或 false
  4. 浏览器获取响应。

我使用 IIS 作为反向代理,并配置了 url 重写模块和 ARR。已在 IIS 的根节点上检查了“启用代理设置”的 ARR。在 IIS 的 API 站点上,我配置了如下重写规则:

<rewrite>
        <rules>
            <rule name="ReverseProxyInboundRule1" stopProcessing="true">
                <match url="(.*)" />
                <action type="Rewrite" url="http://localhost/ValidateAuthN" />
            </rule>
        </rules>
</rewrite>

我看到请求被重定向到带有查询字符串值的身份验证服务,并且身份验证服务返回的真/假响应直接在调用应用程序中接收。但是,请求没有到达实际的 API 层以进行进一步处理。我想要的是,在上面的第 4 步,请求应该返回到 site1,JSON 响应为真/假。

请建议我在此配置中可能缺少什么。

【问题讨论】:

  • 我无法清楚地理解您的描述。你的意思是你已经在localhost/ValidateAuthN Web 应用程序中安装了 auth 模块?它会先检查真假,然后调用什么api?我建议您可以发布有关您的身份验证模块如何工作以及它如何调用 Web api 的更多详细信息。
  • @BrandoZhang:我添加了事件流和一些关于 authn 服务中发生的事情的更多细节

标签: iis url-rewriting reverse-proxy


【解决方案1】:

也许您需要回复的例外规则?您的匹配规则 (.*) 捕获了所有内容,因此真/假回复可能会自行重新路由?

【讨论】:

  • 我检查了失败的请求日志,发现回复没有被重新路由
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-25
  • 2016-03-22
  • 1970-01-01
相关资源
最近更新 更多