Csharp/C#教程:使用PrincipalContext和ADLDS,LDAP服务器不可用分享


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

我们正在利用ADLDS进行用户管理和身份validation。 我们可以毫无问题地成功查询实例。 但是,如果未设置密码,尝试执行SetPassword等操作将失败甚至尝试创建新用户,则会失败。 我可以成功更新用户,只要它不是我想要更新的密码。 我一直在阅读很多与此相关的不同文章,但没有找到解决方案。 发帖看看我是否可以对这个问题有一些新的看法,感谢任何意见。

 ContextType ctxType = ContextType.ApplicationDirectory; string server = "myadldsserver.com"; string usersCN = "CN=Users,..."; // container where users reside ContextOptions ctxOpts = ContextOptions.SimpleBind; string uname = "myuser"; string pswrd = "mypass"; using(var ctx = new PrincipalContext(ctxType, server, usersCN, ctxOpts, uname, pswrd) using(var newUser = new UserPrincipal(ctx)) { newUser.Name = "newusername"; newUser.Enabled = true; newUser.UserPrincipalName = "newusername"; newUser.Save(); newUser.SetPassword("newuserpassword"); } 

错误1

如果我尝试创建一个新的UserPrincipal并在没有像上面的示例中那样设置密码的情况下调用Save我遇到的第一个问题我得到exceptionA constraint violation occurred. 具有InnerException扩展消息0000052D: AtrErr: DSID-033807D7, #1:0: 0000052D: DSID-033807D7, problem 1005 (CONSTRAINT_ATT_TYPE), data 2246, Att 9005a (unicodePwd)

由于这个错误,我尝试移动SetPassword之前调用Save以及我在网上找到的其他方法,例如从UserPrincipal获取DirectoryEntry并尝试调用SetPassword但得到了不同的错误。

错误2

在调用UserPrincipal.Save之前调用SetPassword,当调用save时,会导致错误The directory property cannot be found in the cache.

请注意,如果我尝试调用ResetPassword或获取DirectoryEntry并调用Invoke("SetPassword"... ,也会发生同样的错误

错误3

根据我的研究,大多数人似乎都表示这可能与需要使用安全连接访问AD LDS有关。 所以,我改变了我的服务器以包含636 string server = "myadldsserver.com:636"的端口,并且我将ContextOptions更改为ContextOptions.SimpleBind | ContextOptions.SecureSocketLayer ContextOptions.SimpleBind | ContextOptions.SecureSocketLayer

在构造PrincipalContext时进行这些更改我得到以下exceptionThe server could not be contacted. 内部exceptionThe LDAP server is unavailable. ,HResult是-2146233087

JAVA和LDP

为了添加一些背景知识,我们确实在旧的Java应用程序中编写了类似的代码。 我们试图在C#中将一些逻辑移植到.NET端。 Java中的代码使用包含在AD LDS服务器上生成的证书的Java密钥库。 Java应用程序当然使用SSL端口没有问题。 我们知道服务器似乎配置正确,这只是如何从.NET端访问它的问题。

在.NET方面是否存在类似Java中的密钥库 ? 我们知道可以与服务器建立SSL连接。 我们也使用LDPvalidation了这一点。

GOALS

您是否尝试使用Microsoft管理控制台导入证书?

两种安装证书的方法

  1. 打开cmd.exe控制台并键入“MMC”
  2. 文件>添加/删除管理单元…
  3. 选择“证书”,单击“添加”
  4. 出现提示时选择计算机帐户和本地计算机,然后确定…
  5. 现在应该在控制台根目录下显示证书
  6. 证书>受信任的根证书颁发机构>证书>(右键单击)>所有任务>导入证书…
  7. 找到要导入的证书,单击“下一步”并选择“默认值”(应已选择“受信任的根证书颁发机构”)
  8. 单击下一步,完成

(要么)

只需在Windows资源管理器中双击证书的.cer文件,单击“安装证书…”>“下一步”>选择“将所有证书放在以下存储中”选项>浏览…>选择“受信任的根证书颁发机构”。 继续下一步,直到完成。


此时,您的证书已安装,您应该能够与ADLDS服务器安全地通信。

上述就是C#学习教程:使用PrincipalContext和ADLDS,LDAP服务器不可用分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1031311.html

(0)
上一篇 2022年1月13日
下一篇 2022年1月13日

精彩推荐