在C#中检查用户列表对adfs是否有效
我需要检查应用程序中的用户是否是Active Directory中的Active用户. 当一个用户别名无效时,我需要发送通知. 在大多数示例中,我看到一次仅验证一个用户使用LDAP,这将需要很长时间的用户. 有什么方法可以通过发送用户列表和验证来验证,以使其更快? 谢谢. 解决方案 在ADF中的盒子中,否. 这听起来像是您应该从应用程序中调用的东西.使用AD C#API. 在Active Directory中的所有内容通过C#. 或(在某些情况下)其他解决方案 从.NET 3.5开始有System.DirectoryServices.AccountManagement 我会代码 public List InvalidUsernames (List usernames) { var result = new List(); var domainName = "OkieDokie
2 2024-01-19
编程技术问答社区
将对象移动到活动目录中的一个OU
我想将计算机对象移至另一个OU,我已连接到另一个域,并且我总是得到类型的comexception "A referral was returned from the server" ,并且该对象永远不会移动! try { //I get the exception here computerObject.MoveTo(new DirectoryEntry("LDAP://OU=someOU,OU=parentOU,DC=test,DC=com")); computerObject.CommitChanges(); } catch (InvalidOperationException inOp) { //log } catch (COMException comEx)
2 2024-01-10
编程技术问答社区
如何将_ComObject类型转换为本地类型,如Long或其他类型(得到cast错误)?
我试图通过调用 从Active Directory获取LastLogonTimestamp Principal.ExtensionGet("lastLogonTimestamp") vb.net代码: Public Property LastLogonTimestamp() As Date? ' no matter what this type is, I cannot cast the Object coming in Get Dim valueArray = ExtensionGet("lastLogonTimestamp") If valueArray Is Nothing OrElse valueArray.Length = 0 Then Return Nothing Return DateTime.FromFileTimeUt
2 2024-01-10
编程技术问答社区
DirectorySearcher FindAll SearchResultCollection Count throws COMException
我有一些很长一段时间以来一直工作正常的代码,可以让某人登录我的应用程序: private Employee Authenticate(string userName, string password) { DirectorySearcher search = new DirectorySearcher(_rootDirectory); search.Filter = "(&(objectClass=user)(SAMAccountName=" + userName + "))"; try { SearchResultCollection results = search.FindAll(); if (0
0 2024-01-10
编程技术问答社区
PrincipalContext.ValidateCredentials不设置用户的最后登录日期
我正在验证Active Directory商店中的用户: // using System.DirectoryServices.AccountManagement; // located in System.DirectoryServices.AccountManagement.dll using (var context = new PrincipalContext(ContextType.Domain, server, container, ContextOptions.Negotiate, validateUsername, validatePassword)) { var valid = context.ValidateCredentials(validateUsername, validatePassword); if (valid) { Console.WriteLine("SUCCESS!"); usi
2 2024-01-10
编程技术问答社区
AD: 组没有一个primaryGroupToken属性
我需要更改用户的主要组,因此我可以将其从当前的组中删除.但是我的小组没有" primaryGrouptoken"属性,我需要更改用户的主要组.这是属性编辑器的屏幕截图: 显然,我的代码什么也没响应: Dim domainGroup As New DirectoryEntry("LDAP://our.domain/CN=Domain Users,CN=Users,DC=our,DC=domain") Dim domainGroupGroupToken As String = domainGroup.Properties("primaryGroupToken").Value.ToString() 有没有办法手动设置它?还是我的代码有问题?预先感谢. 解决方案 这是一个计算属性.从这里要添加一个呼叫,请访问 RefreshCache P> Dim domainGroup As New DirectoryEntry("LDAP://our.domain/CN=Domai
0 2024-01-10
编程技术问答社区
DirectoryServices-"网络登录失败 未知用户名或密码错误"
我构建一个小库可以用来查询Active Directory Directory资源.我之前已经测试过,它可以按照我的期望. 问题是,我已经在安装了Windows Server 2003,创建了域,添加了一些虚拟对象,现在我尝试运行应用程序时,我会收到错误: "网络登录失败未知用户名或不良密码". //Example 1: Find all users in Active Directory. Be sure your LDAP connection string is correct. string ldapConnection = @"LDAP://sergio-j9i2vccv/dc=contoso,dc=com"; string username = "Administrador"; //I'm using a spanish version of WS2003. string password = String.Empty; UserF
8 2024-01-10
编程技术问答社区
与Directoryservices一起使用声明
您可以帮助我,并告诉我在我的DirectoryService函数中正确使用"使用语句",从而从我的Active Directory中脱颖而出.我想正确处理和关闭对象. 代码: Public Function GetObjectDistinguishedName(ByVal objClass As objectClass, _ ByVal returnValue As returnType, _ ByVal objName As String, ByVal LdapDomain As String, _ Optional ByVal includeLdapPrefix As Boolean = True) As String Dim distinguishedName As String = String.Empty Dim connectionPrefix = "LDAP://" & LdapDomain
0 2024-01-10
编程技术问答社区
针对活动目录-LDAP协议的表单认证
我需要创建一个网页,以对现有的Active Directory进行身份验证用户.域实际上是云计算配置,其中域控制器和堆栈上有多个其他服务器. 我知道可以使用来自系统的对象.DirectoryServices名称空间.但是,我似乎无法通过ldap://domain.com将代码通向Active Directory 地址.似乎没有任何沟通.我怀疑是否需要一些初始配置或阻止通信的安全措施. 我正在使用此示例,来自MSDN:我遇到了一个错误,上面说服务器不运行. 解决方案 查看此链接(用web.archive.org替换旧链接): 这是获取默认条目的方法: try { System.DirectoryServices.DirectoryEntry AdRootDSE = new System.DirectoryServices.DirectoryEntry("LDAP://rootDSE"); string rootdse = System.Con
6 2024-01-10
编程技术问答社区
为什么 PrincipalSearcher 为 msExchRecipientDisplayType 的属性给出了 System.__ComObject?
为什么princionalSearcher给系统.__ comObject for Attribut msexchrecipientdisplaytype ?? 我想检索属性 msexchrecipientdisplaytype 和 principalSearcher 给出 system .__ comobject .我也尝试通过 DirectorySearcher 来检索它,并给出正确的值 即. ''. 0 usermailbox(共享) 1 mailuniversaldistributiongroup 6 mailContact 7 Usermailbox(房间) 8 Usermailbox(设备) 1073741824 Usermailbox 1073741833 MailuniversalsalsecurityGroup 如下所述" rel="nofollow noreferrer">https://answers.microsoft.com/en
0 2024-01-10
编程技术问答社区
如何使用c#.net从电脑中列出用户,无论是在winnt文件夹(本地用户和组)还是活动目录(域下)中创建的用户。
我已经实现了一个C#Windows应用程序. 对于该应用程序,我想从Windows用户信条登录. 现在问题是我需要通过代码从Windows PC获取用户列表. 如何使用户列表在Winnt文件夹(本地用户和组下)或在Active Directory域中创建的用户创建的用户. 我有一个从Winnt文件夹中获取用户列表的想法 DirectoryEntry localMachine = new DirectoryEntry("WinNT://" + Environment.MachineName); // DirectoryEntry admGroup = localMachine.Children.Find("Guests", "group"); // DirectoryEntry admGroup = localMachine.Children.Find("administrators", "group"); DirectoryEntry admGroup =
2 2024-01-10
编程技术问答社区
在生产中使用Directory.Services时出错
以下代码在我本地机器上的Visual Studio开发环境中效果很好.但是,当我将文件移至Windows 2008 R2 IIS 7.5机器时,我会收到以下错误: [DirectoryServicesComexception(0x80072020):操作错误 发生. ] _default.getfullname(字符串strloginname,String& str_first_name,string&str_last_name,string&str_display_name, 字符串和str_mail,字符串和str_office_phone,string&str_address)in C:\ authtest \ default.aspx.cs:87 _default.page_load(对象发送者, eventargs e)在c:\ authtest \ default.aspx.cs中:23 system.web.util.callihelper.eventargfunc
0 2024-01-10
编程技术问答社区
获取活动目录中FirstName不为空或NULL的用户
Searcher.Filter = "(&(objectCategory=person)(objectClass=user)(!givenName=""))" I'am使用上述Active Directory搜索过滤器尝试获取Active Directory中的第一个名称的用户不是空的或空的,但该过滤器仍然返回NULL条目. 我应该在过滤器中更改什么,只有一个名字不为null或空的 解决方案 您可以尝试: Searcher.Filter = "(&(objectCategory=user)(objectClass=user)(givenName=*))" 要构建过滤器,您可以在Active-Diperectory MMC中使用注册查询:
0 2024-01-10
编程技术问答社区
如何列出在非域名计算机上运行代码的域名?
在我的应用程序中,我需要获取Active Directory Forest并列出域层次结构. 我获得了具有必要权限的Active Directory帐户.但是,我的开发计算机不在域上,无法添加到域中. 这是我用来获取森林并访问根域的代码: // I also tried to add a Global Catalog port: 192.168.2.11:3268, no success DirectoryContext dc = new DirectoryContext( DirectoryContextType.Forest, "192.168.2.11", “Login1”, “pass1”); Forest f = Forest.GetForest(dc); Console.WriteLine("Forest name: " + f.Name); Console.WriteLine("Root domain: " + f.RootDomai
为AD用户账户生成符合复杂性策略的密码
我需要自动创建AD用户.问题是,确保生成的密码符合AD的密码策略.我不知道该政策是什么,有没有办法在运行时确定这一点?这就是我正在使用的,但是您可以看到复杂性对length=16和4 non-alphanumeric chars静态,并且可能并不总是有效.我正在寻找一种从AD中获取密码策略的方法,以便生成的密码正确. UserPrincipal up = new UserPrincipal(oPrincipalContext); up.SamAccountName = userId; up.SetPassword(System.Web.Security.Membership.GeneratePassword(16, 4)); up.Enabled = false;
4 2024-01-10
编程技术问答社区
如何获得目录的所有可用属性
我有一个对用户对象的引用,此对象的Properties集合将仅包含具有值集的属性,但我需要检查该对象的属性(按名称)是否存在 - 我想这将来来自模式. 我已经看过deUser.SchemaEntry,但是我找不到此对象的任何有用的属性信息. 有什么想法? DirectoryEntry deUser = new DirectoryEntry(path); foreach (var prop in deUser.Properties) { //if user.Properties["company"] is not set on this user then //it will not be available here although 'company' is //a property defined for the user class } //How do I get to the list of all available propert
18 2024-01-10
编程技术问答社区
使用DirectorySearcher来查询多个OU
我有以下代码: var directoryEntry = new DirectoryEntry(distributionListsListADSPath); var directorySearcher = new DirectorySearcher(directoryEntry) { SizeLimit = int.MaxValue, PageSize = int.MaxValue }; var result = directorySearcher.FindAll(); 问题是我想搜索两个分开. 所以我要做的是两次,一次 private const string distributionListsListADSPath = "LDAP://OU=Distribution Lists,OU=Groups,DC=enron,DC=com"; 和第二个是 private const string distributionListsList
10 2024-01-10
编程技术问答社区
当试图扩展OU principal时,查询过滤器出现ArgumentException。
我正在尝试使用此代码在下面使用此代码来创建委托书的扩展 [DirectoryRdnPrefix("OU")] [DirectoryObjectClass("organizationalUnit")] public class OrganizationalUnitPrincipal : Principal { public OrganizationalUnitPrincipal(PrincipalContext Context_p) { PropertyInfo contextRaw = this.GetType().BaseType.GetProperty("ContextRaw", BindingFlags.Instance | BindingFlags.NonPublic); contextRaw.SetValue(this, Context_p, null); } } ,但会引发以下错误:
6 2024-01-10
编程技术问答社区
是否有可能从活动目录中获得群记?
Active Directory组具有通过接口可用的"注释"属性(请参见下图) 是否可以在C#中检索此信息? 我似乎找不到拥有它的属性.我尝试使用System.DirectoryServices.DirectoryEntry和System.DirectoryServices.AccountManagement.GroupPrincipal对象,但似乎没有一个. 解决方案 有一个称为info的属性,该属性保存该字段中显示的信息.但是,只有在可用值时才将其添加到广告对象中. 如果您想查看此字段中具有文本的所有元素.只需打开广告浏览器(start dsa.msc)并打开新的搜索即可.将"查找"组合中的选择更改为Custom Search,单击Advanced,然后输入文本info=*.现在,您将获得所有具有此字段的元素的列表. 其他解决方案 我不确定,但是,您是否曾经检查过 DirectoryEntry.Properties 属性? 获取Active D
0 2024-01-10
编程技术问答社区
"new DirectoryEntry(distinguishedName as string) "在DN包含"/"时不起作用。
我有以下代码将DickitewedName转换为samaccountname: Dim de As New DirectoryEntry("LDAP://" & stringDN) Return CType(de.Properties("samaccountname")(0), String) 除一个DN,它非常适合我通过它.我们的域上有一个广告组,其中包含"/"" - 称其为"程序员/DBA".该组的DN是"程序员/DBA,OU =用户组,dc = mydomain,dc = local otain".当我尝试将此DN用作上面的字符串DN时,我会得到"未知错误(0x80005000)". 我域中的每个其他组/用户都可以正常工作,并且我在测试域上重复了该问题,在该域上重命名了该组,因此它不包含"/"解决问题.但是,我无法在生产中这样做,所以我被困了. 我可以以某种方式逃脱这个/"?我必须相信围绕这个解决方案,以便我可以正确获得该组的属性. 解决方案 您是否尝