在 Blazor Server 中获取当前 Windows 用户以进行 AD 身份验证

Getting current Windows user in Blazor Server for AD auth

我想使用 Blazor 服务器创建一个 Intranet 应用程序,其中登录的 windows 用户在访问站点时会根据“经典”AD 自动进行身份验证。就像单点登录一样。我的问题是我无法访问当前 Windows 用户。

我尝试通过 HttpContextAccessor 但用户为空。这是我的测试代码。稍后我打算使用这个 doku 中的代码进行身份验证:Offical MS Doku

这是正确的方法吗,还是我必须编写一个小型 Blazor wasm 应用程序才能通过 signalR 连接移交它?

public partial class Counter
{
    protected override void OnInitialized()
    {
        username = HttpContextAccessor.HttpContext.User.Identity.Name;

        if (String.IsNullOrWhiteSpace(username))
        {
             username = "user = null"; 
        }
    }

    private int currentCount = 0;

    private void IncrementCount()
    {
        currentCount++;
    }

    [Inject]
    private IHttpContextAccessor HttpContextAccessor { get; set; } = default!;

    private string username = default!;
}

我将 services.AddHttpContextAccessor(); 添加到 startup.cs

如果我没理解错的话,你在 IIS 服务器上启用 windows 身份验证
在 visual studio 的设计期间,在项目属性 -> 调试下,启用 windows auth.

然后身份可用:

var authState = await authenticationStateTask;
var user = authState.User;

if (user.Identity.IsAuthenticated)
..etc