Tag: active directory

.Net代码将Active Directory属性设置为“未设置”

在Active Direcotry mmc管理单元中,您无法看到“未设置”的属性。 使用ADSIEDIT.MSC工具时,如果属性值为null,则会将其视为“未设置”。 如何在.Net代码中将属性设置为“未设置”? 以下是Powershell中的答案,但我需要使用一些.Net代码(VB.Net/C#)。 http://social.technet.microsoft.com/Forums/en-US/winserverpowershell/thread/d6d0bfa1-73da-41ea-a7f5-f622de9f7d1b/ ps msExchHideAddressLists是罪魁祸首属性,当此域中的True或False时,它会阻止用户信息从AD复制到Sharepoint。

GroupPrincipal.Members.Remove()不适用于大型AD组

我正在使用System.DirectoryServices.AccountManagement命名空间类来管理多个组的成员身份。 这些群体控制着我们的印刷会计系统的人口,其中一些非常庞大。 我遇到了从这些大组之一中删除任何用户的问题。 我有一个测试程序来说明问题。 请注意,我正在测试的组不是嵌套的,但user.IsMemberOf()似乎也有同样的问题,而GetAuthorizationGroups()正确显示用户所属的组。 有问题的小组大约有81K成员,因为Remove()不起作用,所以它应该超过它应该有的,并且通常大约是65K左右。 我有兴趣听到有其他人遇到过这个问题并已经解决了。 我和微软有一个公开的案例,但由于呼叫中心的时差大约是17个小时,所以电话转接很慢,因此他们在我离开家之前大约一个小时才到达工作岗位。 using (var context = new PrincipalContext( ContextType.Domain )) { using (var group = GroupPrincipal.FindByIdentity( context, groupName )) { using (var user = UserPrincipal.FindByIdentity( context, userName )) { if (user != null) { var isMember = user.GetAuthorizationGroups() .Any( g => g.DistinguishedName == group.DistinguishedName ); Console.WriteLine( “1: check for […]

如何知道DirectoryEntry是用户还是组?

嗨, 我有以下代码从当前AD创建树: public static ActiveDirectory GetActiveDirectoryTree(string pathToAD = “”) { DirectoryEntry objADAM = default(DirectoryEntry); // Binding object. DirectoryEntry objGroupEntry = default(DirectoryEntry); // Group Results. DirectorySearcher objSearchADAM = default(DirectorySearcher); // Search object. SearchResultCollection objSearchResults = default(SearchResultCollection); // Binding path. ActiveDirectory result = new ActiveDirectory(); ActiveDirectoryItem treeNode; // Get the AD LDS object. try { if (pathToAD.Length […]

如何查询一个域的用户是否是另一个AD域中的组的成员?

我有一系列应用程序都使用我创建的相同C#,。Net 2.0代码来检查并查看用户是否是Active Directory组的成员。 直到最近,当我将另一个受信任的AD域中的用户添加到我的一个AD组时,我的代码没有遇到任何问题。 我的问题是如何检查用户是否是Active Directory组的成员,无论他们的域名是谁。 换句话说,它们可能与我的组在同一个域中,也可能不在同一个域中。 下面是我编写并使用多年来搜索以查看用户是否在Active Directory组中的代码。 我不确定我在哪里修改了这段代码,但我认为它来自MSDN文章。 此外,解决方案必须是.Net 2.0框架。 我找到了很多可能适用于.Net 3.5中此问题的答案。 不幸的是,这对我的方案不起作用。 //This method takes a user name and the name of an AD Group (role). //Current implementations of this method do not contain the user’s domain //with userName, because it comes from the Environment.UserName property. private static bool IsInRole(string userName, string […]

无法在UWP应用程序中获取某些用户帐户信息 – 内部部署活动目录(非Azure AD)

在UWP应用程序中,我启用了User Account Informationfunction。 我需要获取当前登录用户的用户名和域名(每个用户名单独)(用户使用内部部署的Active Directory帐户登录 – 非Azure AD )。 例如,用户将使用用户名user1登录到Active Directory域domain1 。 即domain1\user1 。 我使用以下代码来尝试获取所需的详细信息: IReadOnlyList users = await User.FindAllAsync(); var user = users.FirstOrDefault(); // get domain var data1 = await user.GetPropertyAsync(KnownUserProperties.DomainName); string strDomainName = (string)data1; // get username var data2 = await user.GetPropertyAsync(KnownUserProperties.AccountName); string strUserName = (string)data2; 问题: strDomainName返回domain1.com\user1 。 为什么这包括我们所有域名的.com部分? 在c#winforms应用程序中,我们可以轻松获取domain1\user1而没有任何问题。 strUserName返回一个空字符串。 即“”。 […]

asp.net使用活动目录形成身份validation

尝试使用AD进行表单身份validation时遇到问题。 我已按如下方式设置所有内容,但在访问Login.aspx页面时出现401错误 从我的Web.config: 这都在带有IIS7的Windows 2008服务器上运行。 我将应用程序池设置为.net 4.0版,已集成。 当我测试传递身份validation时,它会通过。 启用的唯一身份validation方法是表单身份validation 如果我切换到Windows身份validation,该网站工作正常,我似乎无法使表单身份validation工作。 如果我在浏览器中输入域URL,它会重定向到Login.aspx?ReturnUrl =%2f并显示401错误,如果我尝试直接导航到login.aspx则相同。 我似乎无法在任何服务器日志中找到任何问题的迹象。 关于我可能遗失的任何想法?

使用Novell.Directory.Ldap.NETStandard库进行C#netcore ldap身份validation

这是我第一次使用LDAP和Active Directory。 我必须使用.NetCore创建一个必须使用ActiveDirectory(WindowsServer 2008 r2)进行身份validation的web api,我正在关注Novell.Directory.Ldap.NETStandard中的示例,但我无法理解我必须设置参数的方式。 这是我在ActiveDirectory Server中创建的用户: 在Novell的样本中 if (args.Length != 5) { System.Console.Out.WriteLine(“Usage: mono VerifyPassword ” + ” \n” + ” “); System.Console.Out.WriteLine(“Example: mono VerifyPassword Acme.com ” + “\”cn=Admin,o=Acme\” secret\n” + ” \”cn=JSmith,ou=Sales,o=Acme\” testPassword”); System.Environment.Exit(0); } int ldapPort = LdapConnection.DEFAULT_PORT; int ldapVersion = LdapConnection.Ldap_V3; System.String ldapHost = args[0]; System.String loginDN = args[1]; System.String […]

使用C#/ Powershell设置Active Directory“安全身份映射”/“名称映射”不会添加到正确的“存储”

我已按照本指南操作: https : //blogs.msdn.microsoft.com/adpowershell/2009/04/26/working-with-certificates-in-active-directory-powershell/ 证书已成功添加到用户的已发布证书中。 但这不是我真正想要的。 相反,我希望将证书添加到AD用户的X509证书(Active Directory中的名称映射/安全身份映射) 安全身份映射 有没有办法在C#或Powershell中执行此操作?

Ldap查询特定于组的所有成员

我希望获得属于特定组’groupName’的用户列表传递给私有方法。 DirectoryEntry de = new DirectoryEntry(“LDAP://DC=xxxx,DC=net”); // Root Directory // var ds = new DirectorySearcher(de); ds.PropertiesToLoad.Add(“SAMAccountName”); ds.PropertiesToLoad.Add(“member”); ds.Filter = “(&(objectClass=group)(SAMAccountName=” + groupName + “))”; SearchResultCollection AllGroupUsers; AllGroupUsers = ds.FindAll(); 该查询返回3个属性: – adspath,accountName和member。 成员是我真正追求的。我访问成员属性及其值,如下面的代码所示: – if (AllGroupUsers.Count > 0) { ResultPropertyValueCollection values = AllGroupUsers[0].Properties[“member”]; 但这里发生了一些奇怪的事 在等号的RHS上,AllGroupUsers具有特定成员的值“CN = Mike Schoomaker R,……..” 在等号的LHS上,值为“CN = Mike Schoomaker(OR),…..” 我不太确定这是怎么可能的…… AllGroupUsers下的每一个值都不会发生…只有我知道的事情才会发生在活动目录上的外部用户…有谁能告诉我我是怎么做的可以修复此问题并获取实际的firstName,LastName和MiddleInitial?

如何克服Active Directory搜索中的后期绑定

我有一个函数,它根据用户名和域检索用户的全名。 此函数在模拟用户下的ASP.NET线程中运行。 当我在远程AD分支上使用目录搜索器时,我相信我得到的是SID号而不是属性(无法validation它是否出现在另一个盒子上)。 public string GetUserFullName(string userName, string domainName) { DirectoryEntry rootEntry = new DirectoryEntry(“GC://dc=company,dc=net”); string filter = string.Format(“(&(objectCategory=person)(objectClass=user)(!(userAccountControl:1.2.840.113556.1.4.803:=2))(userPrincipalName={0}@{1}.company.net))”, userName, domainName); DirectorySearcher searcher = new DirectorySearcher(rootEntry, filter, new string[] { “displayName” }); rootEntry.AuthenticationType = AuthenticationTypes.Secure; searcher.PageSize = 1000; searcher.ServerTimeLimit = new TimeSpan(0, 10, 0); searcher.ReferralChasing = ReferralChasingOption.All; searcher.Asynchronous = false; SearchResult result = searcher.FindOne(); if […]