Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C语言中的LDAP和ActiveDirectory认证_C#_Ldap_Userinfo - Fatal编程技术网

C# C语言中的LDAP和ActiveDirectory认证

C# C语言中的LDAP和ActiveDirectory认证,c#,ldap,userinfo,C#,Ldap,Userinfo,我不熟悉LDAP和active directory身份验证,我只研究了一些有关LDAP身份验证的内容,并使用示例应用程序完成了这些工作 我只是检查用户是否存在于ActiveDirectory中 public static bool DoesUserExist() { using (var domainContext = new PrincipalContext(ContextType.Domain,Environment.UserDomainName)) { using

我不熟悉LDAP和active directory身份验证,我只研究了一些有关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服务器中托管并且试图使用服务器IP地址访问它时,我面临一些问题,如

ContextType.Domain,Environment.UserDomainName and  Environment.UserName
因为这三个值来自服务器信息,而不是访问此应用程序的用户

因此,请帮助我如何获取访问此应用程序的用户信息,以便我需要将这些信息传递给服务器,并需要检查用户是否为activedirectory用户

Environment.UserDomainName返回Environment.UserName的域部分,例如mydomain.com,因此您不希望这样

Environment.UserName本身将返回当前登录到Windows的用户,即应用程序池用户-请参阅

最好检查当前web请求的标识,因此在MVC控制器或WebForms页面中,使用this.User


或者,如果您正在使用Windows身份验证或将表单身份验证挂接到AD,则当前线程主体应为当前请求用户,以便您可以使用。

这是ASP.NET应用程序吗?是。。。使用LDAPyes的ActiveDirectory身份验证我尝试使用Thread.CurrentPrincipal.Identity.Name,但在本地系统中它工作正常,但我托管在服务器上,但它仍然只返回服务器用户名而不是客户端用户名