我正在运行托管在 Windows 服务中的 ASP.NET Core 应用程序,如下所述:
https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/windows-service?view=aspnetcore-2.1
我需要此应用程序来支持 Windows 身份验证。我有哪些选择?我尝试在 IIS 中使用应用程序请求路由/URL 重写模块作为 Windows 身份验证的反向代理,但无法弄清楚如何使其工作。任何指导将不胜感激。
我正在尝试按照此答案中的步骤创建一个在 docker 上运行并具有 Windows 身份验证的 asp.net core Web 应用程序。
我已将项目上传到谷歌驱动器,如果您想下载它:谷歌驱动器链接
Microsoft.AspNetCore.Authentication.Negotiate包services.AddAuthentication(NegotiateDefaults.AuthenticationScheme).AddNegotiate();到ConfigureServicesapp.UseAuthentication();到Configure我可以在不输入我的凭据的情况下进入应用程序并且User.Identity.Name为空。我Microsoft.AspNetCore.Authorization.AuthorizeAttribute在家庭控制器上添加了该属性,因此现在我可以输入我的凭据,但是一旦我收到以下错误:
GssApiException:GSSAPI 操作失败并出现错误 - 未指定的 GSS 故障。次要代码可能会提供更多信息(Keytab FILE:/etc/krb5.keytab 不存在或为空)。
Microsoft.AspNetCore.Authentication.Negotiate.NegotiateHandler.HandleRequestAsync() Microsoft.AspNetCore.Authentication.Negotiate.NegotiateHandler.HandleRequestAsync() Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext 上下文) Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext语境)
我不确定问题是什么(或者这是否是正确的方法),所以我希望了解一些关于如何做到这一点的观点。我在下面包含了该项目的相关文件。
using Microsoft.AspNetCore.Authentication.Negotiate;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
namespace …Run Code Online (Sandbox Code Playgroud) 我在 dotnet 5 项目中的 Windows 身份验证方面苦苦挣扎了几天,但无法让它在 Docker 环境中工作。在Windows系统本地运行时,可以正常运行。我发现了其他主题,这些主题可能是重复的,但它们与 .net core 3.1 相关,而不是 dotnet 5。
让我解释一下,到目前为止我做了什么。首先在 dotnet 项目中:
services.AddAuthentication(NegotiateDefaults.AuthenticationScheme).AddNegotiate();[Authorize]属性的简单控制器,它当然在 Docker 中工作正常。实际上没有任何意义,但这只是让我确信它正在发挥作用。除了 dotnet 代码之外
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)