【问题标题】:Docker image for dotnet core 2.1 and IIS用于 dotnet core 2.1 和 IIS 的 Docker 映像
【发布时间】:2018-09-26 13:20:46
【问题描述】:

我 Docker 化了一个 .Net 核心应用程序,我的应用程序使用 IIS-express 进行基本身份验证。 问题是每当我在容器中运行我的应用程序时,我都无法取回数据,因为基本身份验证在容器内不起作用,因为 Docker 映像没有 IIS-express。

目前,我正在使用这张图片:

microsoft/dotnet:2.1.301-sdk

是否有任何同时包含 .dotnet 核心和 IIS-express 的 Docker 映像? 任何其他想法!

【问题讨论】:

  • 当您说“使用 IIS express 进行基本身份验证”时——IIS-express 如何知道是接受还是拒绝尝试登录?它是否接受您机器的 Windows 登录详细信息 - 如果是这样,我认为您无法用它做任何可以在 docker 容器中使用的操作?
  • 当我点击本地应用程序页面版本时,会出现一个登录弹出窗口,但是当我使用 Dockerized 版本时它不会出现。 IIS-express 在 Active Directory 中检查凭据后接受凭据。
  • 我不认为一个 docker 容器可以解决这个问题。除非您要创建自己的可以加入您的 AD 域的专用 docker 映像。走那条路似乎很难。

标签: docker .net-core dockerfile iis-express


【解决方案1】:

您可以尝试使用microsoft/iis docker 映像并添加 dotnet 核心环境,但它看起来需要 Windows 容器。如果您不习惯构建自定义映像,那么您可能需要找到自定义存储库,或者将 IIS-express 替换为其他解决方案。

【讨论】:

  • Microsoft/IIS 映像没有 .Net 内核和电源外壳。似乎最好的方法是自定义图像。
  • 这就是为什么我说要“添加dotnet核心环境”。但是,如果您对制作自己的自定义解决方案感到不自在,我建议您寻找另一个 IIS 替代品。抱歉不能再帮你了!
【解决方案2】:

不依赖 iis 而是在代码中执行基本身份验证可能比您预期的更简单、更快。编写 Authorize 属性非常简单。

这是一个示例:https://www.johanbostrom.se/blog/adding-basic-auth-to-your-mvc-application-in-dotnet-core。事实上,他在一页上解决了两次,一次是属性,一次是中间件。

【讨论】:

    【解决方案3】:

    如果您只需要在 Windows 上运行,请使用来自configure Kestrel to use Windows auth 的这个 sn-p

    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)

    【讨论】:

    • 谢谢,我会试试这个方法。
    猜你喜欢
    • 2020-03-22
    • 2018-11-02
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    • 2020-03-10
    • 1970-01-01
    • 2018-01-23
    • 2022-01-03
    相关资源
    最近更新 更多