我正在运行托管在 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 身份验证的反向代理,但无法弄清楚如何使其工作。任何指导将不胜感激。
我按照以下步骤创建了一个具有 Windows 身份验证并通过 Kestrel/Negotiate 托管的 Blazor 应用程序。(https://learn.microsoft.com/en-us/aspnet/core/security/authentication/windowsauth?view=aspnetcore-3.0&tabs=visual-studio#kestrel)
使用 Visual Studio 2019 (16.4.0) 创建 Blazor 应用程序。(Windows 身份验证,https)
使用 Kestrel 运行时,请按照以下步骤进行操作。
NuGet package Microsoft.AspNetCore.Authentication.Negotiate services.AddAuthentication(NegotiateDefaults.AuthenticationScheme).AddNegotiate();
Run Code Online (Sandbox Code Playgroud)
Configure()在中添加以下代码Startup.cs。它们添加在app.UseRouting();和之间app.UseEndpoints(...; app.UseAuthentication();
app.UseAuthorization();
Run Code Online (Sandbox Code Playgroud)
ValidateAuthentication在应用此问题的答案之前,它仍然无法与 Windows 身份验证一起使用。
app.UseMiddleware<ValidateAuthentication>();
Run Code Online (Sandbox Code Playgroud)
internal class ValidateAuthentication : IMiddleware
{
public async Task InvokeAsync(HttpContext context, RequestDelegate next)
{
if (context.User.Identity.IsAuthenticated)
await next(context); …Run Code Online (Sandbox Code Playgroud)