C#中的LDAP和ActiveDirectory身份验证
本文关键字:ActiveDirectory 身份验证 LDAP 中的 | 更新日期: 2023-09-27 18:24:21
我是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
因为这三个值来自服务器信息,而不是访问该应用程序的用户
因此,请帮助我如何获取用户信息(访问此应用程序的用户),以便我需要将这些信息传递给服务器,并需要检查用户是否为Active Directory用户
Environment.UserDomainName
返回Environment.UserName
的域部分,例如"mydomain.com",所以您不希望这样。
Environment.UserName
本身将返回当前"登录到Windows"的用户,即应用程序池用户-请参阅MSDN。
您最好检查当前web请求的标识,因此在MVC控制器或WebForms页面中,使用this.User
。
或者,如果使用Windows身份验证或将Forms身份验证挂接到AD中,则当前Thread
Principal
应该是当前请求用户,因此可以使用Thread.CurrentPrincipal.Identity
。