集成Identity Server; Docker和MVC Core(Web客户端)

问题描述 投票:2回答:2

我试图让MVC Core Web应用程序与Identity Server和Docker一起使用。以下是我采取的步骤:

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

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

2)打开解决方案。右键单击:IdentityServerWithAspNetIdentity并选择:Add Container Orchestration Support(然后是Docker Compose,然后是Linux)。 3)右键单击MVCClient并选择:添加Container Orchestration Support(然后是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"

5)尝试运行项目以查看发生的情况。当我尝试访问时:Home / Secure;而不是转发到登录网页;我看到这个错误:'Unable to obtain configuration from:http://localhost:5000/.well-known/openid-configuration'.

我相信这是因为Docker容器无法看到localhost:5000。因此阅读了几篇博文后;我试试这个:

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

options.Authority = "http://localhost:5000";

对此:

options.Authority = "http://identityserverwithaspnetidentity:80";

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

到目前为止,我看到了这里:How can I use IdentityServer4 from inside and outside a docker machine?和这里:Identity Server 4 and docker。然而到目前为止答案没有帮助。

c# asp.net-mvc docker identityserver4
2个回答
1
投票

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

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

在客户端我做了以下

1)将ValidateIssuerName设置为false 2)如果你没有使用Https,也可以通过将RequireHttps设置为false来取消它(我不记得是否明确需要它)


0
投票

在过去的几天里,我一直在努力解决同样的问题,最后找到了一个有效的解决方案!您需要做的就是将权限(在您的mvc客户端中)和IssuerUri(在您的身份API中)设置为docker主机的IP地址。在Windows上,这是10.0.75.1。

在查看eShopOnContainers中的实现后,我终于能够想出这个,我发现这是学习如何在.NET Core中实现dockerized微服务架构的非常好的资源。

© www.soinside.com 2019 - 2024. All rights reserved.