C# LDAP服务器无法使用PrincipalContext和ADLDS
我们正在利用ADLDS进行用户管理和身份验证。我们可以毫无问题地成功查询实例。但是,尝试执行诸如C# LDAP服务器无法使用PrincipalContext和ADLDS,c#,directoryservices,userprincipal,principalcontext,adlds,C#,Directoryservices,Userprincipal,Principalcontext,Adlds,我们正在利用ADLDS进行用户管理和身份验证。我们可以毫无问题地成功查询实例。但是,尝试执行诸如SetPassword之类的操作将失败,甚至尝试创建新用户也会失败。如果未设置密码,则会失败。我可以成功地更新一个用户,只要它不是我试图更新的密码。我读了很多关于这方面的文章,但没有找到解决办法。张贴,看看我是否可以得到一些关于这个问题的新观点,感谢任何意见 示例 ContextType ctxType=ContextType.ApplicationDirectory; string server=“
SetPassword
之类的操作将失败,甚至尝试创建新用户也会失败。如果未设置密码,则会失败。我可以成功地更新一个用户,只要它不是我试图更新的密码。我读了很多关于这方面的文章,但没有找到解决办法。张贴,看看我是否可以得到一些关于这个问题的新观点,感谢任何意见
示例
ContextType ctxType=ContextType.ApplicationDirectory;
string server=“myadldsserver.com”;
字符串usersCN=“CN=Users,”;//用户居住的容器
ContextOptions ctxOpts=ContextOptions.SimpleBind;
字符串uname=“myuser”;
字符串pswrd=“mypass”;
使用(var ctx=new PrincipalContext(ctxType、server、usersCN、ctxOpts、uname、pswrd)
使用(var newUser=newuserprincipal(ctx)){
newUser.Name=“newusername”;
newUser.Enabled=true;
newUser.UserPrincipalName=“newusername”;
newUser.Save();
SetPassword(“newuserpassword”);
}
错误1
我遇到的第一个问题是,如果我尝试创建一个新的UserPrincipal并调用Save,而没有像上面的示例那样设置密码,我会遇到异常发生约束冲突。
带有0000052D:aterrr:DSID-033807D7的InnerException扩展消息,#1:0:0000052D:DSID-033807D7,问题1005(约束附件类型),数据2246,附件9005a(unicodePwd)
由于这个错误,我尝试在调用Save之前移动SetPassword,以及我在网上找到的其他方法,例如从UserPrincipal获取DirectoryEntry,并尝试调用SetPassword,但出现了不同的错误
错误2
在调用UserPrincipal.Save之前调用SetPassword会在调用Save时导致错误在缓存中找不到目录属性。
请注意,如果我尝试调用ResetPassword
或获取DirectoryEntry并调用Invoke(“SetPassword”…
),也会发生相同的错误
错误3
根据我的研究,大多数人似乎认为这可能与需要使用安全连接访问AD LDS有关。因此,我将服务器更改为包含636的端口string server=“myadldsserver.com:636”
,并将ContextOptions更改为ContextOptions.SimpleBind | ContextOptions.SecureSocketLayer
在构造PrincipalContext时进行这些更改,我得到以下异常无法联系服务器。
内部异常LDAP服务器不可用。
,HResult为-2146233087
JAVA和LDP
为了增加一些背景知识,我们在一个较旧的Java应用程序中编写了类似的代码。我们正在尝试将一些逻辑移植到C#中的.NET端。Java中的代码使用一个Java密钥库,其中包含在AD LDS服务器上生成的证书。当然,Java应用程序在使用SSL端口时没有问题。我们可以现在服务器似乎配置正确了,问题只是如何从.NET端访问它
在.NET端是否有类似于Java中的密钥库?我们知道可以与服务器建立SSL连接。我们也使用LDP验证了这一点
目标
- 能够创建新用户并在创建过程中设置其密码
- 能够为用户重置密码或更改密码
- 从.NET安全地连接到我们的AD LDS实例
此时,您的证书已安装,您应该能够安全地与ADLDS服务器通信。谢谢@Mindwalker2076这对我来说很有效。我想我必须在需要使用.NET代码访问AD LDS服务器的每台计算机上执行此操作?