C#中的LDAP和Active Directory身份验证

时间:2014-09-25 16:26:30

标签: c# ldap userinfo

我是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用户

1 个答案:

答案 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