C# 正在Blazor服务器中获取当前Windows用户以进行AD身份验证

C# 正在Blazor服务器中获取当前Windows用户以进行AD身份验证,c#,active-directory,single-sign-on,blazor-server-side,.net-core-3.1,C#,Active Directory,Single Sign On,Blazor Server Side,.net Core 3.1,我想用Blazor服务器创建一个intranet应用程序,登录的windows用户在访问站点时会根据“经典”广告自动获得身份验证。比如单点登录。我的问题是无法访问当前Windows用户 我尝试通过HttpContextAccessor访问,但用户为空。这是我的测试代码。稍后,我计划使用此doku中的代码进行身份验证: 这是正确的方法吗?还是我必须编写一个小型Blazor wasm应用程序,通过信号器连接将其移交 public partial class Counter { protect

我想用Blazor服务器创建一个intranet应用程序,登录的windows用户在访问站点时会根据“经典”广告自动获得身份验证。比如单点登录。我的问题是无法访问当前Windows用户

我尝试通过
HttpContextAccessor
访问,但用户为空。这是我的测试代码。稍后,我计划使用此doku中的代码进行身份验证:

这是正确的方法吗?还是我必须编写一个小型Blazor wasm应用程序,通过信号器连接将其移交

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!;
}

I ofc添加了
服务。AddHttpContextAccessor()
startup.cs

如果我理解正确,您可以在IIS服务器上启用windows身份验证
在visual studio的设计期间,在项目属性->调试下,启用windows身份验证

然后,可通过以下方式使用该标识:

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

if (user.Identity.IsAuthenticated)
..etc

是的,你理解得对。谢谢我在“将身份验证状态作为级联参数公开”下尝试了这段代码,并选中了属性->调试下的启用windows身份验证。我把razor代码放在index.razor中。我错过什么了吗?但还是什么都没有。即使我在本地调试模式下运行也不行。user.Identity.Name始终为null,Identity.IsAuthenticated为false。我不想留下“半途而废的答案”,但由于我没有多少空闲时间等等。。。看看这篇文章:我解决了它。我将windows身份验证设置为true,但忘记关闭匿名身份验证。