【发布时间】:2020-02-20 03:42:06
【问题描述】:
我正在为我的应用程序构建一个新的通用身份验证模块。为此,我需要拦截到达 API 层的请求,路由到通用身份验证服务,并仅在身份验证服务返回成功时继续常规流程。调用 Authentication 服务时,参数通过查询字符串传递给它,基于它返回 true/false 作为响应。
事件流程:
- 浏览器调用http://localhost/SampleService/api/Home?param=data,即Site1
- 站点 1 上的反向代理规则使呼叫转到站点 2,即 http://localhost/ValidateAuthN
- Site2 检查 param 的值并返回 JSON 响应 - true 或 false
- 浏览器获取响应。
我使用 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