- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试验证用户是否在“TestGroup”组中。用户是“TestGroup”组的一部分,即使我收到 retval = false @line(retVal = user.IsMemberOf(groupPrincipal);),并且在事件查看器中它显示消息为“用户名或密码不正确".
你能帮我做这件事吗?
string userName = this.Request.ServerVariables["AUTH_USER"];
if (ValidateUser(userName) == false)
Response.Redirect("Error.aspx?errormsg=" + userName + " does not have permission to view this page");
public static bool ValidateUser(String userName)
{
bool useGroupAuthorization = true;
if (useGroupAuthorization)
return GroupLookup(userName, "TestGroup");
}
private static bool GroupLookup(string userName, string groupName)
{
System.Diagnostics.EventLog appLog = new System.Diagnostics.EventLog();
appLog.Source = "Test App";
bool retVal = false;
PrincipalContext pc = null;
UserPrincipal user = null;
GroupPrincipal groupPrincipal = null;
try
{
string strdomain = "TestDomain";
pc = new PrincipalContext(ContextType.Domain,strdomain);
user = UserPrincipal.FindByIdentity(pc, userName);
groupPrincipal = GroupPrincipal.FindByIdentity(pc, groupName);
retVal = user.IsMemberOf(groupPrincipal);
}
catch (NoMatchingPrincipalException nmpx)
{
appLog.WriteEntry(nmpx.Message);
}
catch (PrincipalOperationException pox)
{
appLog.WriteEntry(pox.Message);
}
catch (Exception ex)
{
if (user == null)
{
appLog.WriteEntry(ex.Message);
}
else
{
appLog.WriteEntry(ex.Message);
}
}
return retVal;
}
// when i tried with below code i am getting userPrincipal is null
// bool retVal = false; string strdomain = "TestDomain";
// PrincipalContext principalCtx = new PrincipalContext(ContextType.Domain, strdomain);
// UserPrincipal queryByExampleUser = new UserPrincipal ( principalCtx );
// queryByExampleUser.SamAccountName = userName;
// PrincipalSearcher principalSearcher = new PrincipalSearcher ( );
// principalSearcher.QueryFilter = queryByExampleUser;
// UserPrincipal userPrincipal = principalSearcher.FindOne ( ) as UserPrincipal;
// retVal = IsUserInGroup("TestGroup", userPrincipal);
// return retVal;
// }
//static bool IsUserInGroup(string groupName, UserPrincipal user)
//{
// PrincipalContext principalContext = new PrincipalContext(ContextType.Domain);
// GroupPrincipal groupPrincipal = GroupPrincipal.FindByIdentity(principalContext, groupName);
// if (user.IsMemberOf(groupPrincipal))
// {
// return true;
// }
// return false;
//}
最佳答案
“gpKnownAccountToCheck.Members”不是递归的。
需要使用方法:GetMembers(recursive: true)
var result = groupPrincipal
.GetMembers(true)
.Where(x => x.Sid == userPrincipal.Sid)
.Count() > 0;
关于c# - UserPrincipal.IsMemberOf 返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25491042/
这感觉像是一个非常基本的问题,因为这是我正在寻找的一个非常基本的功能。 我知道你可以做到这一点: ([Dimension].CurrentMember IS [Dimension].[AParticu
我有一个函数可以检查一个组是否是一个组的成员。我有 2 个函数变体,都没有按预期工作: public bool IsGroupGroupMember(GroupPrincipal gp, GroupP
为什么 Principal.IsMemberOf(GroupPrincipal) ( MSDN ) 在以下测试中为 Domain Computers 组返回假阴性? [TestMethod] publ
我正在尝试确定给定的本地用户帐户是否在本地管理员组中。在系统加入域之前一切正常。当加入域时抛出异常,提示未找到网络路径,但仅在查找本地非管理员帐户时才会抛出异常;如果测试帐户是本地管理员,则该方法返回
我正在尝试验证用户是否在“TestGroup”组中。用户是“TestGroup”组的一部分,即使我收到 retval = false @line(retVal = user.IsMemberOf(gr
所以我有一个问题,老实说我不太确定如何提出。本质上,当我运行它时,我有一些代码在我的本地机器上运行得非常好。一旦我将它发布到我们的开发 Web 服务器,它就会失败。我不确定这是 IIS 设置问题、we
我在自定义 Active Directory RoleProvider 中创建了以下方法: public override string[] GetRolesForUser(string userna
我对 OpenDj 上的“ismemberof”有一些疑问。 我想在 OpenDj 中有一个用户(比如“uid=jdoe,ou=people,dc=example,dc=com”),它可以做一个“is
类似于以下 MSDN 线程中的问题:http://social.msdn.microsoft.com/Forums/en-MY/csharplanguage/thread/4c9fea6c-1d0a-
我有 OpenID Connect 在 中配置OpenAM (OpenAm 是提供者)。现在我正在尝试检索 群组成员用户的 来自 用户信息端点 . 身份验证成功,我检索了 access_token、i
因此,我的要求是让在 Azure 计算机上运行的应用程序检查登录的特定 Azure 用户是否属于指定的 Azure 组。 我已为上述虚拟机启用托管服务身份。 MSI 我通过对 VM 上的图形资源使用以
我是一名优秀的程序员,十分优秀!