相关疑难解决方法(0)

Windows 服务中托管的 Kestrel 的 Windows 身份验证

我正在运行托管在 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 身份验证的反向代理,但无法弄清楚如何使其工作。任何指导将不胜感激。

.net windows-services kestrel-http-server asp.net-core

12
推荐指数
3
解决办法
1万
查看次数

Kestrel 上的 Blazor Windows 身份验证仅在本地有效?在身份验证握手请求之间收到匿名请求

我按照以下步骤创建了一个具有 Windows 身份验证并通过 Kestrel/Negotiate 托管的 Blazor 应用程序。(https://learn.microsoft.com/en-us/aspnet/core/security/authentication/windowsauth?view=aspnetcore-3.0&tabs=visual-studio#kestrel

使用 Windows 身份验证创建 Blazor 应用

使用 Visual Studio 2019 (16.4.0) 创建 Blazor 应用程序。(Windows 身份验证,https)

支持使用 Negotiate 和 Kerberos 的 Windows 身份验证

使用 Kestrel 运行时,请按照以下步骤进行操作。

  1. 进口NuGet package Microsoft.AspNetCore.Authentication.Negotiate
  2. 在Startup.cs的ConfigureService()中添加以下代码。
   services.AddAuthentication(NegotiateDefaults.AuthenticationScheme).AddNegotiate();
Run Code Online (Sandbox Code Playgroud)
  1. Configure()在中添加以下代码Startup.cs。它们添加在app.UseRouting();和之间app.UseEndpoints(...
            app.UseAuthentication();
            app.UseAuthorization();
Run Code Online (Sandbox Code Playgroud)

Windows 身份验证不起作用。添加中间件ValidateAuthentication

在应用此问题的答案之前,它仍然无法与 Windows 身份验证一起使用。

  1. 将其添加到您的配置方法中:
app.UseMiddleware<ValidateAuthentication>();
Run Code Online (Sandbox Code Playgroud)
  1. 这是中间件本身:
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)

c# asp.net kestrel-http-server asp.net-core blazor

7
推荐指数
1
解决办法
4897
查看次数