小编Moz*_*tos的帖子

Gss 故障 - Docker 中的 Dotnet 5 和 Windows Auth

我在 dotnet 5 项目中的 Windows 身份验证方面苦苦挣扎了几天,但无法让它在 Docker 环境中工作。在Windows系统本地运行时,可以正常运行。我发现了其他主题,这些主题可能是重复的,但它们与 .net core 3.1 相关,而不是 dotnet 5。

在控制器中执行需要 Windows 身份验证的方法的结果: 结果

我遵循官方文档: https://learn.microsoft.com/en-us/aspnet/core/security/authentication/windowsauth ?view=aspnetcore-5.0&tabs=visual-studio#kestrel

让我解释一下,到目前为止我做了什么。首先在 dotnet 项目中:

  • services.AddAuthentication(NegotiateDefaults.AuthenticationScheme).AddNegotiate();
  • 以防万一我添加了一个额外的没有[Authorize]属性的简单控制器,它当然在 Docker 中工作正常。实际上没有任何意义,但这只是让我确信它正在发挥作用。

除了 dotnet 代码之外

  • 我为我的公司域生成了 krb5.conf 文件并将其复制到 docker 映像中。它工作正常,因为我可以在 shell 中使用 kinit 并成功登录。不幸的是,我无法在这里分享这个文件。我在执行klist时看到有效的票证

克利斯特

  • 使用 ktutil生成用户名.keytab 文件
ktutil 
ktutil: add_entry -password -p myUserName@MY.COMPANY.LOCAL -k 1 -e RC4-HMAC
# ktutil prompts for a password
ktutil: write_kt myUserName.keytab
ktuilt: exit
Run Code Online (Sandbox Code Playgroud)
  • 泊坞窗文件
FROM company-custom-docker-image-with-dotnet-5 AS build
WORKDIR /app

COPY . ./
RUN dotnet …
Run Code Online (Sandbox Code Playgroud)

kerberos windows-authentication docker .net-core

5
推荐指数
1
解决办法
2592
查看次数