Validation 需要确定ActiveDirectory中的用户是否仍然有效/active

Validation 需要确定ActiveDirectory中的用户是否仍然有效/active,validation,active-directory,Validation,Active Directory,我有一个.NETMVC(1.0)应用程序,它使用ActiveDirectoryMembershipProvider对用户进行身份验证,目前运行良好。成功身份验证后,我将用SQL为该用户创建自定义配置文件(广告用户名、电子邮件等) 在应用程序的一个部分中,我向用户发送电子邮件警报,并在保存上述AD用户名的本地SQL表中遍历用户。在发送警报之前,我想验证我们发送给的用户是否仍然是AD中的有效(即活动)用户。如果我的循环中没有当前用户的密码,我如何检查这一点 我希望这样做 MembershipUser

我有一个.NETMVC(1.0)应用程序,它使用ActiveDirectoryMembershipProvider对用户进行身份验证,目前运行良好。成功身份验证后,我将用SQL为该用户创建自定义配置文件(广告用户名、电子邮件等)

在应用程序的一个部分中,我向用户发送电子邮件警报,并在保存上述AD用户名的本地SQL表中遍历用户。在发送警报之前,我想验证我们发送给的用户是否仍然是AD中的有效(即活动)用户。如果我的循环中没有当前用户的密码,我如何检查这一点

我希望这样做

MembershipUser adUser= Membership.GetUser(userName); //I have the username from the loop
bool isValid = adUser.isValid; //I know this is not a real property
我知道没有叫做“isValid”的属性——但是有人知道我应该使用什么属性吗?如果MembershipUser没有用处,那么我假设我需要编写一些代码来调用System.DirectoryServices.ActiveDirectory命名空间?如果是,我应该在AD中检查什么属性以查看用户是否有效?我所说的“有效”,是指用户仍然为相关公司工作,并且能够通过广告登录。我不关心用户在广告中的团体成员身份

谢谢


Mike

您基本上需要检查用户的
userAccountControl
标志是否为
disabled
标志

一旦您为相关用户(userAccount)设置了
DirectoryEntry
,您就可以像这样检查帐户是否已禁用和锁定:

// get the "userAccountControl" property
int uac = Convert.ToInt32(userAccount.Properties["userAccountControl"][0]);

const int ADS_UF_ACCOUNTDISABLE = 0x00000002;
const int ADS_UF_LOCKOUT = 0x00000010;

bool accountIsDisabled = (uac & ADS_UF_ACCOUNTDISABLE) == ADS_UF_ACCOUNTDISABLE;
bool accountIsLockedOut = (uac & ADS_UF_LOCKOUT) == ADS_UF_LOCKOUT;

Marc

如果在AD中查询用户属性/属性,则如果帐户已锁定,userAccountControl属性将为514;如果帐户已准备好登录,则userAccountControl属性将为512

花了很长时间才发布我的回复。马克的文章实际上更详细,我会投赞成票