集成身份服务器;Docker 和 MVC 核心(Web 客户端)

w00*_*977 6 c# asp.net-mvc docker identityserver4

我正在尝试让一个 MVC Core Web 应用程序与 Identity Server 和 Docker 一起工作。以下是我采取的步骤:

1) 下载快速入门:https : //github.com/IdentityServer/IdentityServer4.Samples/tree/dev

运行项目并查看它按预期工作。现在尝试将 Docker 添加到等式中:

2) 打开解决方案。右键单击:IdentityServerWithAspNetIdentity 并选择:添加容器编排支持(然后是 Docker Compose,然后是 Linux)。3) 右键单击​​ MVCClient 并选择:添加容器编排支持(然后是 Docker Compose,然后是 Linux)。4)把Docker-compose.override.yml改成这个(注意我只把每个服务的端口从80改成5002:80和5000:80):

version: '3.4'

services:
  mvcclient:
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
    ports:
      - "5002:80"

  identityserverwithaspnetidentity:
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
    ports:
      - "5000:80"
Run Code Online (Sandbox Code Playgroud)

5) 尝试运行该项目,看看会发生什么。当我尝试访问:主页/安全;而不是被转发到登录网页;我看到这个错误:'Unable to obtain configuration from:http://localhost:5000/.well-known/openid-configuration'.

我相信这是因为 Docker 容器看不到 localhost:5000。因此,在阅读了一些博客文章后;我试试这个:

6) 在 MVCClient 中打开启动并更改:

options.Authority = "http://localhost:5000";
Run Code Online (Sandbox Code Playgroud)

对此:

options.Authority = "http://identityserverwithaspnetidentity:80";
Run Code Online (Sandbox Code Playgroud)

但是,我只看到一个 DNS 错误(我相信是 404)。在这种情况下,我需要做什么才能让 Identity Server 与 MVC Web 应用程序一起工作?

到目前为止,我已经看过了:如何从 docker 机器内部和外部使用 IdentityServer4?在这里:Identity Server 4 和 docker。然而,到目前为止,答案并没有帮助。

Bid*_*dou 1

正如您已经在我的帖子中注意到的那样,我也遇到了类似的问题。我所做的是在我的(API 端)上配置以下内容IdentityServerAuthenticationOptions

1)设置正确Autority,在你的情况下我会说它应该是http://identityserverwithaspnetidentity/
2)配置ApiName(这是ApiResource的名称)
3)也许也配置JwtBackChannelHandler(我不确定这是否需要)
4)如果您不使用 Https,我会停用它(我不记得这是否是明确需要的:设置RequireHttpsMetadata为 false)

在客户端我做了以下事情

1) 将其设置ValidateIssuerName为 false
2) 如果您不使用 Https,也许还可以通过设置RequireHttps为 false 来停用它(我不记得这是否是明确需要的)