在 Visual Studio 中,有没有办法访问 docker 容器网络之外的 IISExpress 服务器?

问题描述

所以这是我要解决的问题:

1.) 我们 99% 的产品都使用容器化。
2.) 客户端希望使用 Windows 身份验证进行“单点登录”。

所以我们尝试采用的解决方案(如果有更好的选择,请告诉我)是让客户端登录到 IIS 服务器(因为 IIS 服务器能够使用 IdentityPrincipal 来获取经过身份验证的 Windows用户的声明),将这些声明转换为 JSON 网络令牌 (JWT),然后将该 JWT 返回给客户端。

然后,从那时起,客户端将 JWT 附加到每个 API 请求的身份验证标头,每个容器化微服务都可以为用户验证该令牌。 (更具体地说,它在 ApiGateway 上得到了验证,但这不是重点。)

我们遇到的问题是,在开发过程中,每个容器都在内部认的“nat”网络上启动(此处使用 Docker 桌面和 Windows 容器。这一点很重要。)

因此,当尝试在 IIS Express 中启动令牌生成服务时,该服务在本地主机上提供服务。我们无法将 IIS Express(或一般的 IIS)容器化,否则会破坏其执行 Windows 身份验证的能力。因此,它一直在本地主机上运行,​​而所有容器都使用 dockercompose 启动,将它们放到认的“nat”docker 网络上的原因。

这意味着 ApiGateway 不再能够访问 IIS Express 实例,因为就其而言,“localhost”是 ApiGateway 容器的,而不是主机系统。

请记住,我们必须使其适用于个人开发工作站。

我已经钻了很多兔子洞,但还没有找到解决方案。 (例如;“host.docker.internal”等)我什至尝试过“extra_hosts”,但这似乎在 Visual Studio 中不起作用(至少对于 Windows 容器)。

所以 TLDR:如果您有一个 dockercompose.yml 为一个解决方案启动多个容器,而另一个解决方案运行 IIS express,您如何配置其中一个容器来访问 IISExpress 实例?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)