You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core 5.0 Linux Docker配置Windows身份验证遇GssApiException错误

我正尝试按照相关回答的步骤,搭建一个运行在Docker上、支持Windows身份验证的ASP.NET Core Web应用。

项目信息

  • ASP.NET Core Web 应用
  • 基于 .NET 5.0 框架
  • 支持 Windows 身份验证
  • 适配 Linux 环境的 Docker 支持
  • 于 Windows 10 系统上使用 Visual Studio 2019 社区版(版本号16.10.2)创建

操作步骤

  • 新增HomeController及对应视图
  • 安装Microsoft.AspNetCore.Authentication.Negotiate包
  • 在ConfigureServices方法中添加代码:services.AddAuthentication(NegotiateDefaults.AuthenticationScheme).AddNegotiate();
  • 在Configure方法中添加代码:app.UseAuthentication();

Docker调试模式运行表现

初始无需输入凭据即可进入应用,且User.Identity.Name返回null。在Home控制器上添加Microsoft.AspNetCore.Authorization.AuthorizeAttribute特性后,会触发凭据输入框,但输入凭据后出现如下报错:

GssApiException: GSSAPI operation failed with error - Unspecified GSS failure. Minor code may provide more information (Keytab FILE:/etc/krb5.keytab is nonexistent or empty).

Microsoft.AspNetCore.Authentication.Negotiate.NegotiateHandler.HandleRequestAsync()
Microsoft.AspNetCore.Authentication.Negotiate.NegotiateHandler.HandleRequestAsync()
Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)

目前不清楚问题原因,也不确定当前实现思路是否正确,希望能得到相关解决指导,以下是项目相关文件代码:

Startup.cs

using Microsoft.AspNetCore.Authentication.Negotiate;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;

namespace DockerTest {
    public class Startup {
        public Startup(IConfiguration configuration) {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        public void ConfigureServices(IServiceCollection services) {
            services.AddRazorPages();
            services.AddAuthentication(NegotiateDefaults.AuthenticationScheme).AddNegotiate();
        }

        public void Configure(IApplicationBuilder app, IWebHostEnvironment env) {
            app.UseDeveloperExceptionPage(); // 为节省篇幅移除了其他分支代码

            app.UseHttpsRedirection();
            app.UseStaticFiles();

            app.UseRouting();

            app.UseAuthentication();
            app.UseAuthorization();

            app.UseEndpoints(endpoints => {
                endpoints.MapControllerRoute(
                    name: "default",
                    pattern: "{controller=Home}/{action=Index}/{id?}");
            });
        }
    }
}

Program.cs

using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;

namespace DockerTest {
    public class Program {
        public static void Main(string[] args) {
            CreateHostBuilder(args).Build().Run();
        }

        public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args).ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); });
    }
}

HomeController.cs

using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;

namespace DockerTest.Controllers {
    [Route("[controller]")]
    [Authorize]
    public class HomeController : Controller {
        [Route("/")]
        [Route("/Home")]
        [Route("/Home/Index")]
        public IActionResult Index() {
            return View();
        }
    }
}

Dockerfile(Visual Studio自动生成)

#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.

FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /src
COPY ["DockerTest/DockerTest.csproj", "DockerTest/"]
RUN dotnet restore "DockerTest/DockerTest.csproj"
COPY . .
WORKDIR "/src/DockerTest"
RUN dotnet build "DockerTest.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "DockerTest.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "DockerTest.dll"]

内容的提问来源于stack exchange,提问作者nick zoum

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 14:12:03