我是LDAP和活动目录身份验证的新手,我刚刚研究了一些关于LDAp身份验证的事情并完成了示例应用程序
我只是检查用户是否存在于ActiveDirectory中
public static bool DoesUserExist()
{
using (var domainContext = new PrincipalContext(ContextType.Domain,Environment.UserDomainName))
{
using (var foundUser = UserPrincipal.FindByIdentity(domainContext, IdentityType.SamAccountName, Environment.UserName))
{
return foundUser != null;
}
}
}
在我们的本地系统中工作正常,但当我在ActiveDirectory Server中托管并且我尝试使用服务器IP地址访问它时,我遇到了一些问题,如
ContextType.Domain,Environment.UserDomainName and Environment.UserName
这三个值来自服务器信息而不是访问此应用程序的用户
所以请帮助我如何获取用户信息(谁访问此应用程序),以便我需要将这些信息传递给服务器,并且需要检查用户是否为activedirectory用户
答案 0 :(得分:0)
Environment.UserDomainName
会返回Environment.UserName
的域名部分,例如" mydomain.com",所以你不想要那个。
Environment.UserName
本身将返回当前登录Windows"的用户,即应用程序池用户 - 请参阅MSDN。
最好检查当前Web请求的身份,因此在MVC Controller或WebForms页面中,使用this.User
。
或者,如果您使用Windows身份验证或将表单身份验证挂钩到AD,则当前Thread
Principal
应该是当前请求用户,因此您可以使用Thread.CurrentPrincipal.Identity
。