我在.Net Core 3.1上创建了一个微服务。我使用 Identityserver4 作为 IDPClient。该项目在当地运行良好。在对项目进行 docker 化(Docker-compose)并从 MVC 客户端应用程序调用 Identityserver 后,它会抛出 无法从以下位置检索文档:'https://localhost:5005/.well-known/openid-configuration'
MVC应用程序启动代码
services.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
})
.AddCookie(CookieAuthenticationDefaults.AuthenticationScheme)
.AddOpenIdConnect(OpenIdConnectDefaults.AuthenticationScheme, options =>
{
options.Authority = "https://localhost:5005/";
options.ClientId = "taxationclient_presentation";
options.ClientSecret = "secret";
options.ResponseType = "code";
options.Scope.Add("openid");
options.Scope.Add("profile");
options.SaveTokens = true;
options.GetClaimsFromUserInfoEndpoint = true;
});
要使其正常工作,您首先需要确保容器内的 Localhost 具有有效的 HTTPS TLS 证书。其次,您确定应用程序实际上正在侦听端口 5001 还是 443?通常在 Visual Studio 中本地有 5001,但在生产中它会更改为端口 443。
我还在博客中详细介绍了如何做到这一点:Docker 容器中的 IdentityServer – 第 1 部分。