当前位置: 首页 > 编程语言 > C#

使用PrincipalContext和ADLDS,LDAP服务器不可用分享

时间:2023-04-10 21:59:07 C#

使用PrincipalContext和ADLDS,LDAP服务器不可用我们正在使用ADLDS进行用户管理和认证。我们可以毫无问题地成功查询实例。但是,如果没有设置密码,尝试执行诸如SetPassword之类的操作将失败,甚至尝试创建新用户也会失败。只要不是我要更新的密码,我就可以成功更新用户。我已经阅读了很多与此相关的不同文章,但还没有找到解决方案。发帖看看我是否可以对这个问题有一些新的了解,欢迎任何意见。示例ContextTypectxType=ContextType.ApplicationDirectory;字符串服务器=“myadldsserver.com”;stringusersCN="CN=用户,...";//用户所在的容器ContextOptionsctxOpts=ContextOptions.SimpleBind;字符串uname="我的用户";字符串pswrd="我的密码";使用(varctx=newPrincipalContext(ctxType,server,usersCN,ctxOpts,uname,pswrd)使用(varnewUser=newUserPrincipal(ctx)){newUser.Name="newusername";newUser.Enabled=true;newUser.UserPrincipalName="newusername";newUser.Save();newUser.SetPassword("newuserpassword");}错误1??如果我尝试创建一个新的UserPrincipal并且没有像上面的示例那样设置密码我在调用Save时遇到的第一个问题我得到了exceptionAconstraintviolationoccurred.WithInnerExceptionextendedmessage0000052D:AtrErr:DSID-033807D7,#1:0:0000052D:DSID-033807D7,problem1005(CONSTRAINT_ATT_TYPE),data2246,Att9005a(unicodePwd)由于这个错误,我尝试调用Save在将SetPassword与我在网上找到的其他方法一起移动之前,例如从UserPrincipal获取DirectoryEntry并尝试调用SetPassword但出现了不同的错误。错误2在调用UserPrincipal.Save之前先调用SetPassword,在调用save时,导致错误Thedirectorypropertycannotbefoundincache。请注意,如果我尝试调用ResetPassword或获取DirectoryEntry并调用Invoke("SetPassword"...,则会发生相同的错误错误3根据我的研究,大多数人似乎都在说这可能与需要使用安全连接以访问ADLDS。因此,我将服务器更改为包含636stringserver="myadldsserver.com:636"并将ContextOptions更改为ContextOptions.SimpleBind|ContextOptions.SecureSocketLayerContextOptions.SimpleBind|ContextOptions.SecureSocketLayer。进行这些更改时构建PrincipalContext我得到以下异常无法联系服务器。unexceptionTheLDAPserverisinternal.,HResultis-2146233087JAVAandLDPToaddsomebackground,wedidwritesimilarcodeinanoldJavaapplication.wearetryingto将C#中的一些逻辑移植到.NET端。Java中的代码使用AJavakeystore,其中包含在ADLDS服务器上生成的证书。使用SSL端口的Java应用程序当然没有问题。我们知道服务器似乎配置正确,只是如何从.NET端访问它的问题。.NET方面是否有类似Java中的密钥库的东西?我们知道可以与服务器建立SSL连接。我们还使用LDP验证了这一点。目标您是否尝试过使用Microsoft管理控制台导入证书?安装证书的两种方法或打开cmd.exe控制台并键入“MMC”文件>添加/删除管理单元...选择“证书”,单击添加出现提示时选择计算机帐户和本地计算机,然后确定...现在证书应该出现在控制台根证书>受信任的根证书颁发机构>证书>(右键单击)>所有任务>导入证书...找到要导入的证书,单击下一步并选择默认“(“受信任的根证书颁发机构”应该已经被选中)单击“下一步”、“完成”(或)只需在Windows资源管理器中双击证书的.cer文件,单击“安装证书...”>“下一步”>选择“将所有证书放入以下存储”选项>“浏览”。..>选择“TrustedRootCertificationAuthorities”,继续下一步直至完成,此时,你的证书已经安装完毕,你应该可以与ADLDS服务器进行安全通信了,以上是C#学习教程:使用PrincipalContext还有ADLDS,LDAP服务器不可用,分享所有内容,如果对你有用,还需要详细了解C#学习教程,希望大家多多关注——本文收集自网络且不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: