[英]How do I get the user's SID from the server?
我有以下代码:
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
正在获取SERVER的SID,而不是用户的SID。
发布代码后,如何获取用户的SID?
当您在开发计算机上运行站点时,Visual Studio将站点加载到IIS Express中。 IIS Express以登录用户身份运行。 这就是为什么在执行时看到用户名的原因:
WindowsIdentity.GetCurrent().User.Value
发布Web应用程序之后,您可能正在IIS下运行它。 您需要将IIS和ASP.NET配置为使用集成Windows身份验证(使用Kerberos或NTLM)
有关更多信息,请参见此链接 ;对于“ ASP.NET和Windows身份验证”,请参见Google。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.