我对接了一个.Net核心应用程序,我的应用程序使用IIS-express进行基本身份验证。问题是,每当我在容器中运行我的应用程序时,我都得不到数据,因为基本身份验证在容器中不起作用,因为Docker镜像没有IIS-express。
目前,我使用的是这个图像:
microsoft/dotnet:2.1.301-sdk
有没有同时包含.dotnet核心和IIS-express的Docker镜像?还有其他想法吗!!
发布于 2018-09-27 04:55:04
您可以尝试使用microsoft/iis docker镜像并添加dotnet核心环境,但它看起来需要一个Windows Container。如果您不习惯构建自定义映像,那么您可能必须找到一个自定义存储库,或者用另一个解决方案替换IIS-express。
发布于 2018-09-27 05:32:18
如果不依赖iis,而是使用代码进行基本身份验证,可能会比您预期的更简单、更快。编写Authorize属性是非常简单的。
这里有一个例子:https://www.johanbostrom.se/blog/adding-basic-auth-to-your-mvc-application-in-dotnet-core。实际上,他在一个页面上解决了两次问题,一次使用属性,一次使用中间件。
发布于 2018-09-27 19:27:57
如果您只需要在Windows上运行,那么可以使用configure Kestrel to use Windows auth中的以下代码片段
public class Program
{
public static void Main(string[] args) =>
BuildWebHost(args).Run();
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseHttpSys(options =>
{
options.Authentication.Schemes = AuthenticationSchemes.Basic;
options.Authentication.AllowAnonymous = false;
})
.Build();
}(这篇文章有
options.Authentication.Schemes = AuthenticationSchemes.NTLM | AuthenticationSchemes.Negotiate 我已经用options.Authentication.Schemes = AuthenticationSchemes.Basic替换了)
https://stackoverflow.com/questions/52518789
复制相似问题