我需要使用Active Directory验证用户并检查其组。问题是用户正在返回多个UserPrincipal。管理员无法找到与此用户有关的问题。我的代码简单明了;
var usr = UserPrincipal.FindByIdentity(context, username);
现在我知道我可以做到;
var usr = new WindowsPrincipal(WindowsIdentity.GetCurrent());
if (usr.IsInRole("MyRole")
{
//Do stuff
}
这对于当前登录的用户确实有效,但是,有时候我需要对当前未登录的用户进行身份验证
答案 0 :(得分:0)
我有一个使用以下命令监视最近帐户锁定的系统:
UserPrincipal.FindByLockoutTime(...)
我用它来给我列出最近锁定的帐户。 我可以使用以下名称单击用户名以深入了解详细信息:
UserPrincipal.FindByIdentity(context, userId)
我可以看到我有一个名为Administrator的帐户,每次单击该帐户进行追溯时,都会遇到相同的错误:
MultipleMatchesException
我发现FindByIdentity方法接受身份类型为int的重载:
据我所知,我正在通过SamAccountName查询,将方法签名更改为:
UserPrincipal.FindByIdentity(context, 0, userId)
为我解决了这个问题。