搜索DirectoryServices,按日期返回修改过的用户列表
我们有一个大型LDAP目录,目前我们正在返回所有用户.我们迭代用户列表,并比较我们在本地保存的东西,以找到不存在的东西或新的,然后在本地创建/删除它们. 问题是该操作需要数小时才能完成. 我认为解决方案是将更具体的搜索查询定义到目录服务,而仅返回过去24小时内已修改的那些用户(或每次运行时).不幸的是,我很难找到要使用哪个属性来使搜索查询更具体. 我已经看过此可用属性列表,但是我所能看到的可能是" MS-DFS-LAST-MODIFIED-V2",但是,我不确定如何使用它. 还有其他想法吗? 我们目前要搜索的代码如下: PrincipalContext domainContext = new PrincipalContext(ContextType.Domain, "MYDOMAIN", "dc=MYDOMAIN,dc=co,dc=za"); UserPrincipal theuser = new Use
4 2024-04-26
编程技术问答社区
检查DirectoryEntry在DirectorySearcher中是否有效
我正在尝试在新的域和新域控制器上搜索广告,因为我们的网络最近已经扩展.我在下面指定的域是将Web服务器连接到的域.我将其称为Domaina,并且可以正常工作.当我将其更改为域时,它似乎总是从Domaina返回结果.我可以将新的域条目或诸如" blahblahblah"之类的任何字符串放入DirectorySeracher()内部,并返回Domaina的结果.如果找不到我指定的域,它是否落回到Web服务器以某种方式连接到该域?我没有任何错误,只有错误的域名. DirectorySearcher dssearch = new DirectorySearcher("LDAP://CN=users,DC=LAZARUS,DC=COM"); dssearch.Filter = "(&(objectClass=user)(sAMAccountName=" + txtusername.Text + "))"; SearchResult sresult = ds
8 2024-04-26
编程技术问答社区
在多个域服务器中搜索用户的lastLogon属性
首先,如果我不使用正确的术语,请原谅我.无论我在哪里使用错误的术语. 目的是编程检索给定用户名的lastLogon日期. 我们拥有我认为是森林的东西;两个广告服务器,例如 - adserver01.aa.mycompany.com和adserver02.aa.mycompany.com i使用Microsoft的Adexplorer从第三台计算机连接到这些服务器来检查对象.在那里,我看到一些用户在adserver01中可用的LastLogon日期,但在adserver02中不可用.例如,LastLogon的值为0x0 in adserver02 in adserver02,而对于某些用户来说是有效的日期. 我开发的代码作为Windows Forms应用程序,如果仅涉及一台广告服务器,则可以正常工作.在LastLogon Date属性中,如何检查服务器并返回非零值(如果有)? private static string GetLastActiv
10 2024-04-25
编程技术问答社区
C#如何覆盖LDAP服务器的限制,而不是Java
我正在将我的C#程序重写为Java,并对事实变得非常好奇,即C#应用程序可以通过此技巧提取数万用户: DirectorySearcher search = new DirectorySearcher(entry); search.SizeLimit = 99000; search.PageSize = 98000; 但是我的爪哇程序坚定地说 ldapsearchException(resultCode = 4(超过尺寸限制),numentries = 1000,numReferences = 0,errorMessage ='size limit ofered') 我尝试了未结合和标准库.发现了有关此问题的数百万个讨论,到处都说 - 限制是在服务器上,您无能为力. 但是我的C#应用​​程序确实有效!怎么会发生?微软的秘密技术,其他供应商无法重复? 以防万一,我的代码是: SearchRequest searchRequest = new Searc
8 2024-04-25
编程技术问答社区
LdapConnection Bind Timeout
是否有一种方法可以使用.NET随附的System.DirectoryServices.Protocols.LdapConnection在LDAP连接上设置 bind 超时?不要与连接超时混淆(这是在这里. 似乎是这样的地方,但是我可以看到这个特定的选项不存在.我还缺少其他东西吗? 解决方案 这是我想到的解决方案: private const int LDAP_OPT_TIMELIMIT = 0x04; [DllImport("Wldap32.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "ldap_set_optionW", CharSet = CharSet.Unicode)] private static extern int ldap_set_option([In] IntPtr handle, [In] int option, [In] ref int inValue); p
8 2024-04-25
编程技术问答社区
当活动目录中的事件发生时,用C#语言通知我
使用LDAP协议在Active Directory中发生某些事件时,我需要获取通知.应该触发的事件是: 当某个广告组与用户关联时. 并且如果广告用户中的字段(例如电话号码)发生了变化. 我搜索了所有Internet,但主要解决方案是基于本文末尾的代码: 使用C# 如该文章所述,有3种方法可以做: 使用USNchanged 使用dirsync控件 并在页面末尾使用该代码. 对于前两个选项,我在Microsoft的网站上找到了带有示例的文章,但所有示例均在C ++中,我需要在C#中. . 我发现的其他代码样本是不完整且无法理解的,因此我无法使用它们. 是否有任何解决方案,代码样本等,我可以在提供的文章末尾使用与该代码相似的方法? 再次,我需要C# 谢谢 解决方案 我想分享到目前为止我所取得的成就.因此,由于我设法使用提供文章的第三个解决方案在Active Directory上设置了通知符: 使用C# 我意识到
8 2024-04-25
编程技术问答社区
LDAP-在2个组织单位中搜索
由于广告级的一些更改,我必须在应用程序中更改AD查找.搜索现在必须以2个不同的OU而不是1. 执行. 此刻,如果第一个搜索没有任何返回. ,我进行了第二次搜索. 是否可以将这两个路径组合到1个路径中,因此只需搜索一次吗? thx. using (var de = new DirectoryEntry()) { de.Path = "LDAP://OU=ou1,OU=Users,OU=BE,DC=dc,DC=sys"; de.AuthenticationType = AuthenticationTypes.Secure; var deSearch = new DirectorySearcher { SearchRoot = de, Filter = "(&(objectClass=user) (sAMAccountName=" + userId + "))" }; var res
4 2024-04-25
编程技术问答社区
用ASP.Identity通过活动目录(LDAP)认证用户
我环顾四周,但是到目前为止没有运气.有人知道从哪里开始吗?基本上我的公司有Active Directory Server,我构建了一个网站,用户将使用其公司帐户登录. 我已经尝试了Visual Studio Web应用程序中的Organizational Accounts选项,但它返回Invalid domain name.图片下面 任何帮助将不胜感激. 解决方案 从我对您的问题的理解中,您正在寻找通过Active Directory进行身份验证,这将是上面列表中的"单个帐户". Microsoft有一个有关如何实现这一目标的指南. 指南适用于ASP.NET Web表单,但应易于转移到MVC,只需尽量不要过度复杂化任何内容即可. Google在该区域周围搜索时应谨慎进行,因为很容易将表单与AD与Windows身份验证相反的AD验证混淆,并且如果您想使用登录表单,则绝对需要表单.您可能还想确保 指南的故障; 步骤1 创建基于表单身份验证的网
10 2024-04-24
编程技术问答社区
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和会员. 成员是我真正的追求.我访问成员
14 2024-04-24
编程技术问答社区
从System.DirectoryServices中使用StartTLS和LDAP
我正在尝试连接到需要startTls的LDAP服务器,但是没有运气 - 每当我使用sessionOptions.starttransportlayersecurity(..)或set sessionoptions.securesocketsocketlayer时,我会得到异常. > 这是我正在使用的代码: using (var connection = new LdapConnection(new LdapDirectoryIdentifier(config.LdapServer, config.Port, false, false))) { connection.SessionOptions.ProtocolVersion = 3; connection.Credential = new NetworkCredential(config.BindDN, config.BindPassword); connection.SessionOptions.
8 2024-04-24
编程技术问答社区
在使用PInvoke访问ldap功能的回调过程中调用CertFreeCertificateContext出现异常
调用certfreecertificatecontext方法时,在运行下面的代码时,我会得到访问违规例外. 我想这是因为pservercert参数正在ldapservercertdelegate上融化但无法找到解决方案的方式. using System; using System.Runtime.InteropServices; namespace ldaptest { class Program { static void Main(string[] args) { new LdapAuthenticationProvider().AuthenticateUser("a.qas", "a", "administrator", "test123"); } } public class LdapAuthenticationProvider { pu
2 2024-04-24
编程技术问答社区
如何在C# Core 2中用LDAP查找用户组?
我正在使用c#core 2使用Active Directory用作身份验证方法, novell a> - 我已经根据密码部分工作了验证用户,如果在AD中正确的用户名和密码是正确的,请对其进行认证. 我想让登录用户的用户组以相同的方式添加进一步的安全性[Authorize(roles="*")]. 以下代码是我到目前为止所拥有的,我知道连接是正确的,但是我无法在搜索中获得任何结果,它总是以0. 的计数返回. 我要去哪里?没有任何以前的活动目录暴露. 搜索功能: int searchScope = LdapConnection.SCOPE_BASE; string searchFilter = "(CN = " + username + ")"; string searchBase = "OU=Users,OU=TOD,OU=Departments,DC=domain,DC=com"; // folder structure U
8 2024-04-24
编程技术问答社区
如何使用System.DirectoryServices.Protocols更改密码
我们的用户存储是一个名为Edirectory的LDAP服务器.如何使用System.DirectoryServices.protocols更改用户密码? 解决方案 我已经使用了类似的代码将其连接到一个基于太阳的LDAP来更改用户的密码. (应该与Novell Edirectory有那么不同...) using System.DirectoryServices.Protocols; using System.Net; //... // Connect to the directory: LdapDirectoryIdentifier ldi = new LdapDirectoryIdentifier("theServerOrDirectoryName"); // You might need to specify a full DN for "theUsername" (I had to): NetworkCredential nc = new NetworkCreden
10 2024-04-24
编程技术问答社区
当试图解决一个跨库引用时,目标委托人的SID无法解决。错误代码是1332
在从组中获取用户时,给出了例外消息,例如"在尝试解决跨店参考时,目标主的SID无法解决.错误代码为1332." . PrincipalContext ctx = null; if (!string.IsNullOrWhiteSpace(adUserName)) { ctx = new PrincipalContext(ContextType.Domain, domainName, adUserName, adPassword); } else { ctx = new PrincipalContext(ContextType.Domain, domainName); } var groupNames = commaSeparatedGroupNames.Split(','); IEnumerabl
6 2024-04-23
编程技术问答社区
[C#, .NET]。通过IdentityServer3通过LDAP验证用户
我需要一种方法来通过IdentityServer3验证组织中的用户(使用LDAP和Active Directory)并授予他们访问资源. IdentityServer3似乎是OpenID Connect协议的实现框架,可用于身份验证和授权. 到目前为止,我已经能够验证硬编码用户,并使用Inmemory实现获得JWT(JSON Web令牌)访问令牌. 请参阅此示例: https://rajdeep.io/2015/05/07/creating-a-single-sign-on-using-thinktecture-identity-server-part-1/ 但是,在我的情况下,这不是我必须在大型组织中验证用户(存储在Active Directory中)并签发令牌以访问资源的情况. 这是我根据此链接所做的 (http://stackoverflow.com/questions/31536420/thinktecture-identityserver
4 2024-04-23
编程技术问答社区
通过JAVA实现LDAP,无需提供密码
在C#中,我写了以下代码以连接到LDAP服务器并查询相同的查询. String ldapUrl = "LDAP://..."; DirectoryEntry entry = new DirectoryEntry(ldapUrl); DirectorySearcher dSearch = new DirectorySearcher(entry); String Name = "ravi"; dSearch.Filter = "(&(objectClass=user)(sAMAccountName=" + Name + "))"; foreach (SearchResult sResultSet in dSearch.FindAll()) { String data = "Login Name :" + (
10 2024-04-23
编程技术问答社区
当密码过期时,如何改变活动目录中的密码?
在Microsoft Active Directory(AD)中,如果某人密码过期,如何使用其旧密码更改密码. . 我知道System.DirectoryService有一个ChangePassword方法,但是当密码过期时它不起作用. 我想要一些帮助,比你多! btw,无法使用SetPassword 方法,因为它必须具有特殊特权. 解决方案 您可以使用[DllImport("netapi32.dll", CharSet=CharSet.Unicode, CallingConvention=CallingConvention.StdCall, SetLastError=true )] static extern uint NetUserChangePassword ( [MarshalAs(UnmanagedType.LPWStr)] string domainname, [MarshalAs(UnmanagedType.LPWStr)] string usern
12 2024-04-23
编程技术问答社区
我在哪里可以找到使用LDAP过滤器进行搜索的完整属性列表?
作为我问题的扩展 关于如何在特定日期上/之前/之前修改的最后修改的用户,我意识到答案可能在于找到有据可查的LDAP过滤属性列表. 有人知道我在哪里可以找到这样的列表吗? 我已经尝试过这个,但还没有完成. 解决方案 最简单的解决方案是简单地查看Active Directory用户和计算机中用户的属性列表. 要这样做: 启用高级功能(查看菜单) 提出用户或任何其他对象的属性 选择属性编辑选项卡 使用过滤按钮禁用"仅显示具有值的属性" 如果您确定不会破坏任何东西,也可以使用adsiedit.
10 2024-04-23
编程技术问答社区
活动目录中在线的计算机列表
我正在使用此代码段来输出网络上所有计算机的列表(语言是jscript.net,但这只是C#的小操作). var parentEntry = new DirectoryEntry(); parentEntry.Path = "WinNT:"; for(var childEntry in parentEntry.Children) { if(childEntry.SchemaClassName == "Domain") { var parentDomain = new TreeNode(childEntry.Name); this.treeView1.Nodes.Add(parentDomain); var subChildEntry : DirectoryEntry; var subParentEntry = new DirectoryEntr
10 2024-04-23
编程技术问答社区
交流中的公共文件夹的电子邮件地址列表
如何获得交换公共文件夹的所有电子邮件地址的列表? 将自己答复,将接受提供的最佳答复. 解决方案 虽然您发布的答案将起作用,但它有助于阅读文档,以了解您使用的方法和对象来理解其局限性.如果您多次调用此代码,最终您的手机​​记忆泄漏. foreach语句未在所使用的对象上调用Dispose(),只有其创建的枚举器.以下是搜索目录的更好方法(尽管检查错误很少,而且没有例外处理). public static void GetPublicFolderList() { DirectoryEntry entry = new DirectoryEntry("LDAP://sorcogruppen.no"); DirectorySearcher mySearcher = new DirectorySearcher(entry); mySearcher.Filter = "(&(objectClass=publicfolder))"; // Reques
6 2024-04-23
编程技术问答社区