Asp.net core 如何将具有IdentityServer依赖关系的webapp放入Docker?

Asp.net core 如何将具有IdentityServer依赖关系的webapp放入Docker?,asp.net-core,identityserver4,docker-for-windows,docker,Asp.net Core,Identityserver4,Docker For Windows,Docker,我有一个webapp,它使用IdentityServer进行身份验证。这是一个ASP.NET核心Web应用程序,我在Windows上运行Docker 我遇到了用于质询响应的正确URL的问题 我的设置包括两个容器——一个用于webapp(我们称之为webapp.host),另一个用于identity server(is.host) 我将identity server的URL放在我的webapp的配置文件中。然而,这里我有一个问题。例如,我的web应用需要直接与identity server对话,才

我有一个webapp,它使用IdentityServer进行身份验证。这是一个ASP.NET核心Web应用程序,我在Windows上运行Docker

我遇到了用于质询响应的正确URL的问题

我的设置包括两个容器——一个用于webapp(我们称之为webapp.host),另一个用于identity server(is.host)

我将identity server的URL放在我的webapp的配置文件中。然而,这里我有一个问题。例如,我的web应用需要直接与identity server对话,才能访问.well-known/openid配置端点。对于容器到容器的访问,Docker设置了一个网络,以便webapp.host可以在is.host/.well-known/openid配置中找到identity server

但是,当Identity Server要求进行质询时,webapp最终会尝试将用户重定向到is.host/connect/authorize。但是,从我的浏览器的角度来看,这是不好的-我的本地计算机不知道is.host在哪里,它只能通过映射到localhost的公开端口访问identity server

我不知道如何最好地解决这个问题。在尝试从本地浏览器和webapp容器访问Identity Server时,有没有一个名称可供参考?或者可以将Identity Server配置为使用两个名称吗


我注意到,如果我从webapp容器访问的是.host/.well-known/openid配置,它会报告authorization_端点是.host/connect/authorize,但是如果我访问localhost:9002/.well_-known/openid配置,其中localhost端口9002映射到is.host的端口80,然后它将authorization_端点报告为localhost:9002/connect/authorization,这使我相信它正在使用请求来确定要使用的正确URL。我是否应该以某种方式覆盖它?

可能的重复而不是重复。在引用的文章中,客户端完全在外部,因此没有交互登录,is的客户端配置中也没有重定向URI。docker run--net=“host”可能是一个选项,因此容器将与docker主机共享网络堆栈,从容器的角度来看,localhost(或127.0.0.1)将引用docker主机。没有任何别名。@d\f这听起来似乎可以解决我的问题,但我不确定如何应用它-我目前正在使用docker compose start启动我需要的容器,我可以执行类似的--net参数吗?或者我需要在我的compose文件中执行某些操作吗?看起来应该有
网络模式:“主机”
在这种情况下使用的选项。