在.NET中创建活动目录用户(C#)。
我需要在Active Directory中创建新用户.我发现了几个示例,例如: using System; using System.DirectoryServices; namespace test { class Program { static void Main(string[] args) { try { string path = "LDAP://OU=x,DC=y,DC=com"; string username = "johndoe"; using (DirectoryEntry ou = new DirectoryEntry(path)) { DirectoryEntry user = ou.Children.Add("CN=" + username, "user"); user.Propert
0 2024-04-17
编程技术问答社区
将字节[]或对象转换为GUID
我为对象数据类型分配了一些值,例如 object objData =dc.GetDirectoryEntry().Properties["objectGUID"].Value; 此对象像{byte[16]} [0]: 145 [1]: 104 [2]: 117 [3]: 139 [4]: 124 [5]: 15 [6]: 255 [7]: 68 [8]: 142 [9]: 159 [10]: 208 [11]: 102 [12]: 148 [13]: 157 [14]: 179 [15]: 75 一样重新调整值 然后我将此对象投入到字节[],例如 byte[] binaryData = objData as byte[]; 它也会像 {byte[16]} [0]: 145 [1]: 104 [2]: 117 [3]: 139 [4]: 124 [5]: 15 [6]: 255 [7]: 68 [8]: 142 [9]: 159 [10]: 208 [11]: 10
0 2024-04-17
编程技术问答社区
Windows认证和本地DB用户认证
我正在使用MVC应用程序中的Windows身份验证模拟.当我打开应用程序时,浏览器显示凭据的提示并验证域用户. ,但是现在我也想在我的应用程序中创建用户,并且还希望对数据库中存储的用户进行身份验证. 是否可以通过针对域用户的Windows身份验证来验证应用程序数据库用户.我对此进行了很多研发,但还没有找到任何解决方案.感谢您的建议.谢谢! 解决方案 如果我正确理解您,则要允许Windows身份验证和表单身份验证.这不是一个普遍的事情,但我已经做到了.这是我做的: 您必须使用表单身份验证作为主要身份验证.因此,构建表单身份验证如往常:您有一个登录页面,在提交后,该页面验证了数据库中的凭据.棘手的部分是添加Windows身份验证. 为此,在使用Windows身份验证的身份验证控制器中创建一个操作.在此示例中,我假设您的控制器为AuthController,我们将调用操作WinLogin.该动作看起来像这样: [Authorize] public Acti
0 2024-04-17
编程技术问答社区
更改活动目录用户的密码时出错
嗨,我正在尝试重置Active Directory用户的密码,但我会遇到错误,以下是我的代码: public string ChangePassword(string Identity,string OldPassword, string Password) { string success = "Success"; try { DirectoryEntry UserEntry = null; DirectoryEntry entry = new DirectoryEntry("LDAP://.../DC=Domain,DC=COM", Identity, OldPassword); DirectorySearcher search = new DirectorySearcher(entry); SearchResult resultsearch =
0 2024-04-17
编程技术问答社区
c# winform active directory: 登录成功后可进入另一个表单
我想从具有登录文本框和密码文本框以及登录按钮的表单中创建一个控件. 当我输入Active Directory帐户名称及其密码时,我想转到另一个表单. 有人可以帮助我. 在此代码示例中,我仅选择登录帐户. 我想选择它并键入密码,然后按照(登录)的形式(用户界面)以示例为目标. . private void radiobtnAD_CheckedChanged(object sender, EventArgs e) { if (radiobtnAD.Checked) { try { string filter = "(&(objectCategory=person)(objectClass=user)(!userAccountControl:1.2.840.113556.1.4.803:=2))"; string[] propertiesToLoad = new
0 2024-04-17
编程技术问答社区
限制在LDAP查询中返回的属性
如何通过system.directoryservices限制在LDAP查询中返回的属性? 我一直在使用DirectorySearcher,并添加我想要的属性DirectorySearcher.properteStoload.问题在于,这只是确保添加的属性包含在DirectoryEntry.Properties以及一些默认列表中.有什么方法可以指定要返回的唯一属性? DirectoryEntry base = new DiectoryEntry(rootPath, null, null, AuthenticationTypes.FastBind); DirectorySearcher groupSearcher = new DirectorySearcher(base); groupSearcher.Filter = "(objectClass=group)"; groupSearcher.PropertiesToLoad.Add("distinguishedName"); g
0 2024-04-17
编程技术问答社区
活动目录。调整检索组成员功能的性能
这篇文章是以下内容: i具有一个函数,可以为Active Directory中的所有组成员检索Dickitedname属性.此功能用于检索所有用户和组对象的大型脚本(总运行时间为7-10分钟).我在这里的问题是,在杰出名称上的下游SSIS查找非常慢.这并不奇怪,因为它正在查找varchar(255)与唯一的IdentiDIDER(16个字节).我可以在源上选择一个SQL,然后合并加入,这将加快速度.但是,我注意到在没有匹配的杰出名称的情况下,小组成员存在的提取物中的潜在种族条件(请参阅上面的运行时间).如果是这种情况,那么我需要解决这个问题.但是,合并连接不会使负载失败,而查找可以设置为负载失败. 所以,我需要通过DectionnedName即时获得GUID.但是,当我尝试使用以下方法时,GetGroupMemberlist函数的性能大大下降.是否有更好/更快的方法可以通过DectionedName获得组成员GUID? 方法(两个循环): listGroupMem
0 2024-04-17
编程技术问答社区
使用OU的部分路径搜索活动目录中的OU
广告查询语法中是否有一种方法可以通过在部分路径上搜索OU的完整路径? 例如,通往我的OU的完整路径是: OU=Clerks,OU=OfficeA,OU=Administration,DC=domain,DC=local 现在,我想尝试使用部分路径来搜索并找到该对象: OU=Clerks,OU=OfficeA 我希望能够搜索以下内容: (&(objectCategory=organizationalUnit)(path=Clerks/OfficeA*)) 我找不到任何语法示例,说明如何完成这样的事情.我正在开发的程序要求我获得许多OU的途径,在OU的最后两个级别中,它们都具有共同的结构,但是它们可以在域中的任何给定深度嵌套.如果我能以某种方式搜索,那么只需在最后两个OU嵌套级别上搜索的完整路径就很容易. 解决方案 您想做的事情存在于纯LDAP实现上,这是一项称为 Extensibrematch wich的功能,似乎在此Wiki文章.您还将找到一些
0 2024-04-17
编程技术问答社区
如何访问GroupPrincipal对象上的笔记字段
i使用 查询特定域中的所有安全组 PrincipalSearchResult results = ps.FindAll(); 其中PS是ProcontalSearcher. 然后,我需要迭代结果(首先将结果施放到groupprincipal)并找到在音符字段中包含特定字符串的结果. 但是,AD的笔记字段似乎不是Groupprincipal类中的公共场. 我在做什么错? 更新: 我已经放弃了这个.似乎没有办法访问那个讨厌的笔记字段. 解决方案 我一遍又一遍地回到这个挑战,但是现在我终于放弃了. 肯定看起来像是无法访问的. 其他解决方案 您可以访问目录条目的"注释"字段: // Get the underlying directory entry from the principal System.DirectoryServices.DirectoryEntry UnderlyingDirectoryObject =
0 2024-04-17
编程技术问答社区
如何在C#中获得活动目录的类别列表
我正在尝试获取Active Directory的类和属性的列表. DirectoryEntry entry = new DirectoryEntry( "LDAP://CN=Schema,CN=Configuration,DC=addomain,DC=com", null, null, AuthenticationTypes.Secure); ActiveDirectorySchema schema = ActiveDirectorySchema.GetCurrentSchema(); ActiveDirectorySchemaClass User = schema.FindClass("account"); foreach (ActiveDirectorySchemaProperty property in User.GetAllProperties()) { Console.WriteLine("{0}", property.Name
0 2024-04-17
编程技术问答社区
通过System.DirectoryServices管理终端用户
我有一个环境,我需要经常将参数更改为用户登录到终端服务器时启动的程序.截至目前,我们打开计算机管理快照并为用户编辑环境选项卡,并在"登录处启动以下程序:"下手动更改参数:".我想自动化该过程. 我一直在寻找system.DirectoryServices和System.DirectoryServices.AccountManagement和阅读我所能做的一切.到目前为止,我最好的猜测是,我需要编辑的信息存储在"参数"属性中(属性最糟糕的名称,废墟谷歌搜索).猜测的原因是当我列出所有属性时,我得到了 (...) Name: HomeDirDrive Value: Name: Parameters Value: P☺CtxCfgPresent????☺CtxCf gFlags1????☺CtxShadow????*☻☺CtxMinEncryptionLevel? @☺CtxWorkDi
0 2024-04-17
编程技术问答社区
如何使用PrincipalContext搜索全球目录(整个森林)?
myUserList AppUsers = new myUserList(); using (PrincipalContext pcxt = new PrincipalContext(ContextType.Domain, domainName)) { UserPrincipal User = new UserPrincipal(pcxt); User.EmailAddress = emailString; PrincipalSearcher srch = new PrincipalSearcher(User); foreach (var principal in srch.FindAll()) { var p = (UserPrincipal)prin
C#: 更改活动目录用户密码时的代码错误
C# code > error--->>>Unknown name. (Exception from HRESULT: 0x80020006 > (DISP_E_UNKNOWNNAME)) ,代码是此 using (DirectoryEntry entry = new DirectoryEntry("LDAP://admin-jyt69gl7t.hello/CN=Users,DC=hello")) { entry.Username = username; entry.Password = strOldPassword; DirectorySearcher searcher = new DirectorySearcher(entry); try { searcher.FindOne(); entry.AuthenticationType = AuthenticationTypes.Secure
0 2024-04-17
编程技术问答社区
在用户使用Azure Active Directory进行认证后执行代码
我使用VS2015创建了ASP.NET MVC Core(1.1.0)应用程序.在对话框中,我选择了连接到Azure AD的选项,因此VS生成了样板代码,并且按照预期,该应用程序将我重定向到Microsoft的登录页面,可以在其中登录工作和学校帐户. 现在,用户登录后,在提供第一页之前(例如/home/index),我需要从用户中存储的用户中存储的一些信息(例如显示名称,联系信息,联系信息例如电子邮件,电话号码,地址,用户的图片等). 到目前为止,我想到的是添加一个控制器底库,其中一种可以检索此信息的方法,然后通过ViewData将其传递给视图.但是,对数据库查询此信息的一遍又一遍,似乎效率低下.另一种选择是将此信息存储在cookie或会话状态中,因此只能击中数据库一次.但是,必须依靠控制器底可能会导致错误(例如,如果在某些控制器方法中,人们忘记了调用基座的方法),并且不觉得自己要走了.另外,只有在用户以预定义的路径进入URL(如www.myapp.com/users/joe
0 2024-04-16
编程技术问答社区
脚本在Powershell中工作,但在c#中不工作
在PowerShell iSe运行时,此脚本可以工作(它设置给定用户的远程桌面服务配置文件 Active Directory中的设置): Get-ADUser FirstName.LastName | ForEach-Object { $User = [ADSI]"LDAP://$($_.DistinguishedName)" $User.psbase.invokeset("TerminalServicesProfilePath","\\Server\Share\HomeDir\Profile") $User.psbase.invokeset("TerminalServicesHomeDrive","H:") $User.psbase.invokeset("TerminalServicesHomeDirectory","\\Server\Share\HomeDir") $User.setinfo() } 但是,当我尝试从C#应用程序运行
0 2024-04-16
编程技术问答社区
LDAP的连接字符串是什么?
在这里我需要如何使用它: string tmpDirectory = String.Format("LDAP://ou={0},dc={1},dc={2}", parentOrganizationUnit, domainName, domainExtension ); 当我尝试使用此连接运行一些代码时,我会得到异常. (请参阅此问题/a>). 我被告知我需要为连接字符串提供凭据 - 用户名和密码. 连接字符串是什么样的?我需要确切的语法. :)谢谢! 我正在使用Windows Server 2003和Active Directory. 解决方案 凭据不会进入连接字符串,而是var entry = new DirectoryEntry(tm
0 2024-04-16
编程技术问答社区
从2个OU中寻找活动目录用户
i有一个.NET应用程序,该应用程序从特定的OU(放弃者)中读取Active Directory的用户.以下是代码: string DomainIP = "some domain IP"; string ContainerConnectionString = "OU=ABCUsers,DC=test,DC=com"; PrincipalContext domain = new PrincipalContext(ContextType.Domain, DomainIP, ContainerConnectionString, ContextOptions.SimpleBind); PrincipalSearcher searcher = new PrincipalSearcher(); UserPrincipal findUser = new UserPrincipal(domain); findUser.SamAccountName = "some username"; searc
2 2024-04-16
编程技术问答社区
在foreach过程中进行处置
在这个问题中: 循环浏览directoryEntry或任何对象hierearchy-c# 建议穿越LDAP树的建议答案是 DirectoryEntry root = new DirectoryEntry(someDN); DoSomething(root); function DoSomething(DirectoryEntry de){ // Do some work here against the directory entry if (de.Children != null) { foreach (DirectoryEntry child in de.Children) { DoSomething(child); } } } 我的问题是:您是否需要在每次迭代结束时对每个孩子拨打Dispose()?还是foreach-loop可以处理必要的呼叫以处置()?还是在foreach循环中根
0 2024-04-16
编程技术问答社区
如何使用Azure AD来生成具有角色定义的令牌
我有以下方案:我有一个应用程序服务,将其授权设置为允许匿名请求,而身份验证提供商为Active Directory设置Azure AD应用程序. 在这个广告应用中,我在其明显的某些角色中扮演了这样的角色: "appRoles": [ { "allowedMemberTypes": [ "User" ], "displayName": "Approver", "id": "8f29f99b-5c77-4fba-a310-4a5c0574e8ff", "isEnabled": true, "description": "Approvers can mark documents as approved", "value": "approver" }, 发布到URL 我想要的是使用Azure和我的API生成令牌,设置[授权(cole =" acratever")],
0 2024-04-16
编程技术问答社区