如何从服务器获取用户的SID ?

本文关键字:SID 用户 获取 服务器 | 更新日期: 2023-09-27 18:06:43

我的代码是:

public bool UserCheck()
    {
        using (var context = new PrincipalContext(ContextType.Domain))
        {
            try
            {
                using (var user = UserPrincipal.FindByIdentity(context, IdentityType.Sid, WindowsIdentity.GetCurrent().User.Value))
                {
                    if (user != null) return true;
                    else return false;
                }
            }
            catch (System.Runtime.InteropServices.COMException) { return false; }
        }
    }

将检查当前用户是否存在于服务器的AD中。

这段代码在我的机器上测试时工作得很好,但是当我发布它时,代码开始返回false,经过进一步调试,我发现

WindowsIdentity.GetCurrent().User.Value

正在获取服务器的SID,而不是用户的。

当代码发布时,我如何获得用户的SID ?

如何从服务器获取用户的SID ?

当您在开发机器上运行站点时,Visual Studio将在IIS Express中加载站点。IIS Express以登录用户的身份运行。这就是为什么在执行

时看到用户名的原因。
WindowsIdentity.GetCurrent().User.Value

发布web应用程序后,您可能在IIS下运行它。您需要配置IIS和ASP。. NET使用集成的Windows身份验证(使用Kerberos或NTLM)

请参阅此链接了解更多信息或谷歌"ASP。. NET和windows身份验证'