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

2024-01-10

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

EXAMPLE

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");  
} 

ERROR 1

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

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

ERROR 2

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

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

ERROR 3

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

在构造 PrimaryContext 时进行这些更改,出现以下异常The server could not be contacted.有一个内部例外The LDAP server is unavailable.,HResult为-2146233087

JAVA和自民党

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

.NET 方面是否有等效的东西,例如keystore在Java中?我们知道可以与服务器建立 SSL 连接。我们也使用 LDP 验证了这一点。

GOALS

  • 能够创建新用户并在创建过程中设置其密码
  • 能够为用户重置密码或更改密码
  • 从 .NET 安全地连接到我们的 AD LDS 实例

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

安装证书的两种方式

Either

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

(or)

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


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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用PrincipalContext 和 ADLDS 时 LDAP 服务器不可用 的相关文章

随机推荐

  • 是什么原因导致错误“_pickle.UnpicklingError:无效的加载密钥,''。”?

    我正在尝试在数组中存储 5000 个数据元素 这 5000 个元素存储在现有文件中 因此它不为空 但我收到错误 IN def array name puntos df4 m open name rb v 5000 m seek 5000 i
  • “NoneType”对象没有属性“remove_roles”Discord.py

    Keep getting an error for the reaction remove just copy pasted my whole code minus the client id cause it might help I h
  • 为什么我的 Promise 数组在调用 Promise.all() 之前运行?

    我正在尝试创建 Promise 数组 然后使用 Promise all 解析它们 我正在使用 got 它返回一个承诺 我的代码可以工作 但我不完全理解如何工作 这里是 const got require got const url myUr
  • 在 AngularJS 中执行 ng-repeat 内的函数

    我想在 ng repeat 中执行一个函数来检索一些其他数据来显示 例如 我有一份公寓列表 我使用以下方式显示此列表ng repeat 比我想向业主展示的每套公寓 这不是u Apartments So my getInq函数调用服务来获取指
  • Android 驱动程序 JDBC PostgreSQL [重复]

    这个问题在这里已经有答案了 我正在尝试使用 JDBC 驱动程序将我的 Android 应用程序连接到服务器 PostgreSQL 但出现以下错误 java lang ClassNotFoundException org postgresql
  • python 和 networkX keyerror

    我在 python 中遇到这个问题 python 不断给我一个关键错误 重量 g add edge 1 3 weight 2 5 g 1 2 weight 1 5 for n1 n2 attr in g edges data True pr
  • 将 PILLOW 图像转换为 StringIO

    我正在编写一个程序 它可以接收各种常见图像格式的图像 但需要以一种一致的格式检查它们 什么图像格式并不重要 主要是它们都是相同的 由于我需要转换图像格式然后继续处理图像 因此我不想将其保存到磁盘 只需转换它并继续 这是我使用 StringI
  • 编写一个简单的 cron 作业来运行 Java 类

    如何从头开始编写一个 cron 作业来运行 java 类 或者编写一个嵌入 Java 代码来运行的 cron 作业类 以及如何设置计时器每隔一分钟 例如 运行该 cron 作业 注意 完全是 Linux 初学者 这是运行测试作业的示例 sh
  • JNA:结构类中 getFieldOrder() 的用途是什么

    我正在尝试调用 dll 文件中存在的 C 函数 C 函数通过引用将结构对象作为参数 并且函数将在该函数中赋值 因此 在我的 java 应用程序中 为了将结构对象传递给函数 我确实这样写 interface SomeInterface ext
  • 应用顺序/按值调用和正常顺序/按名称调用差异

    背景 我正在根据在线课程学习 sicp 并对其讲义感到困惑 在讲义中 应用顺序似乎等于 cbv 正常顺序等于 cbn 困惑 But the wiki http en wikipedia org wiki Evaluation strateg
  • 使用自定义 std::set 比较器

    我正在尝试将一组整数中项目的默认顺序更改为字典顺序而不是数字顺序 但我无法使用 g 编译以下内容 文件 cpp bool lex compare const int64 t a const int64 t b stringstream s1
  • Rails ActionMailer 与 Devise + Google Apps 处于开发模式

    我正在尝试将 ActionMailer 配置为使用我的 Google Apps 帐户在开发模式下从 Devise 发送邮件 我已将以下内容添加到我的 config environments development rb 文件中 但看起来邮件
  • 动态获取 Javascript 变量中的数据库值

    我多次研究过这个主题 但找不到我的问题的正确答案 让我解释一下 我正在使用 Google Maps API 创建一个应用程序 我希望根据我的数据库值在地图上显示多个位置 我的 javascript 中有一个名为 Locations 的对象
  • 如果缺少 http:// 前缀,请添加到 URL

    你好 我有一个非常简单的代码 a href target self div class callButton Website div a 问题是 如果用户不输入 http 链接将指向我的网站 而不是应有的外部网站 如何在 PHP 中检查用户
  • 动画因过渡而暂停

    我有一个动画移动background position带有关键帧的图像 效果很好 虽然 当用户单击按钮时 我想暂停背景的动画 但要进行过渡 减慢速度然后停止background position从移动 我搜索了类似的东西 但没有找到任何东西
  • 基于 GUI 或基于 Web 的 JSON 编辑器,其工作方式类似于属性资源管理器 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 即使获得焦点并且 CSS 规则生效,HTML 按钮也不会单击

    看看这个按钮 http jsfiddle net vtortola Dnxpe http jsfiddle net vtortola Dnxpe 在Chrome中 如果点击顶部边框 即使 hover 和 active css规则触发 事件也
  • 根据另一个选择选项从数据库提供选择选项

    我有一个表格 有两个选择字段 一个代表地区 一个代表城市 村庄 等的名称 我有一个数据库 其中包含以下形式的所有这些条目 id int 11 ai region varchar 50 city varchar 50 我在这里找到了一个脚本
  • 从图像中删除抗锯齿功能

    我想从图像中删除抗锯齿功能 此代码将从图像中获取 4 种主要颜色 将每个像素与 4 种主要颜色进行比较并分配最接近的颜色 import numpy as np from PIL import Image image Image open p
  • 使用PrincipalContext 和 ADLDS 时 LDAP 服务器不可用

    我们正在利用ADLDS用于我们的用户管理和身份验证 我们可以毫无问题地成功查询实例 但是 尝试执行诸如SetPassword将会失败 或者如果未设置密码 甚至尝试创建新用户也会失败 只要我尝试更新的不是密码 我就可以成功更新用户 我已经阅读