使用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 服务器不可用 的相关文章

  • 删除文件的最后 10 个字符

    我想删除文件的最后 10 个字符 说一个字符串 hello i am a c learner 是文件内的数据 我只是希望该文件是 hello i am a 文件的最后 10 个字符 即字符串 c learner 应在文件内消除 解决方案 将
  • BASIC 中的 C 语言中的 PeekInt、PokeInt、Peek、Poke 等效项

    我想知道该命令的等效项是什么Peek and Poke 基本和其他变体 用 C 语言 类似PeekInt PokeInt 整数 涉及内存条的东西 我知道在 C 语言中有很多方法可以做到这一点 我正在尝试将基本程序移植到 C 语言 这只是使用
  • 调用 McAfee 病毒扫描引擎

    我收到客户的请求 要求使用他们服务器上的 McAfee 病毒扫描将病毒扫描集成到应用程序中 我做了一些调查 发现 McScan32 dll 是主要的扫描引擎 它导出各种看起来有用的函数 我还发现提到了 McAfee Scan Engine
  • STL 迭代器:前缀增量更快? [复制]

    这个问题在这里已经有答案了 可能的重复 C 中的预增量比后增量快 正确吗 如果是 为什么呢 https stackoverflow com questions 2020184 preincrement faster than postinc
  • 在 xaml 中编写嵌套类型时出现设计时错误

    我创建了一个用户控件 它接受枚举类型并将该枚举的值分配给该用户控件中的 ComboBox 控件 很简单 我在数据模板中使用此用户控件 当出现嵌套类型时 问题就来了 我使用这个符号来指定 EnumType x Type myNamespace
  • 如何在 C++ 中标记字符串?

    Java有一个方便的分割方法 String str The quick brown fox String results str split 在 C 中是否有一种简单的方法可以做到这一点 The 增强分词器 http www boost o
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • 为什么这个字符串用AesCryptoServiceProvider第二次解密时不相等?

    我在 C VS2012 NET 4 5 中的文本加密和解密方面遇到问题 具体来说 当我加密并随后解密字符串时 输出与输入不同 然而 奇怪的是 如果我复制加密的输出并将其硬编码为字符串文字 解密就会起作用 以下代码示例说明了该问题 我究竟做错
  • C 编程:带有数组的函数

    我正在尝试编写一个函数 该函数查找行为 4 列为 4 的二维数组中的最大值 其中二维数组填充有用户输入 我知道我的主要错误是函数中的数组 但我不确定它是什么 如果有人能够找到我出错的地方而不是编写新代码 我将不胜感激 除非我刚去南方 我的尝
  • LINQ:使用 INNER JOIN、Group 和 SUM

    我正在尝试使用 LINQ 执行以下 SQL 最接近的是执行交叉联接和总和计算 我知道必须有更好的方法来编写它 所以我向堆栈团队寻求帮助 SELECT T1 Column1 T1 Column2 SUM T3 Column1 AS Amoun
  • C# 动态/expando 对象的深度/嵌套/递归合并

    我需要在 C 中 合并 2 个动态对象 我在 stackexchange 上找到的所有内容仅涵盖非递归合并 但我正在寻找能够进行递归或深度合并的东西 非常类似于jQuery 的 extend obj1 obj2 http api jquer
  • 为什么 isnormal() 说一个值是正常的,而实际上不是?

    include
  • 如何在 Linq to SQL 中使用distinct 和 group by

    我正在尝试将以下 sql 转换为 Linq 2 SQL select groupId count distinct userId from processroundissueinstance group by groupId 这是我的代码
  • C# 中的 IPC 机制 - 用法和最佳实践

    不久前我在 Win32 代码中使用了 IPC 临界区 事件和信号量 NET环境下场景如何 是否有任何教程解释所有可用选项以及何时使用以及为什么 微软最近在IPC方面的东西是Windows 通信基础 http en wikipedia org
  • C++ 继承的内存布局

    如果我有两个类 一个类继承另一个类 并且子类仅包含函数 那么这两个类的内存布局是否相同 e g class Base int a b c class Derived public Base only functions 我读过编译器无法对数
  • 对于某些 PDF 文件,LoadIFilter() 返回 -2147467259

    我正在尝试使用 Adob e IFilter 搜索 PDF 文件 我的代码是用 C 编写的 我使用 p invoke 来获取 IFilter 的实例 DllImport query dll SetLastError true CharSet
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • 在OpenGL中,我可以在坐标(5, 5)处精确地绘制一个像素吗?

    我所说的 5 5 正是指第五行第五列 我发现使用屏幕坐标来绘制东西非常困难 OpenGL 中的所有坐标都是相对的 通常范围从 1 0 到 1 0 为什么阻止程序员使用屏幕坐标 窗口坐标如此严重 最简单的方法可能是通过以下方式设置投影以匹配渲
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri
  • 类型或命名空间“MyNamespace”不存在等

    我有通常的类型或命名空间名称不存在错误 除了我引用了程序集 using 语句没有显示为不正确 并且我引用的类是公共的 事实上 我在不同的解决方案中引用并使用相同的程序集来执行相同的操作 并且效果很好 顺便说一句 这是VS2010 有人有什么

随机推荐

  • 是什么原因导致错误“_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将会失败 或者如果未设置密码 甚至尝试创建新用户也会失败 只要我尝试更新的不是密码 我就可以成功更新用户 我已经阅读