我一直试图通过提供容器来获取用户
string domain = "mydomain.com.pk";
string container = "ou=dotnet,ou=qa,dc=mydomain,dc=com,dc=pk";
using(var context = new PrincipalContext(ContextType.Domain, "192.168.0.150:389", container, domain + "\\salman.zafar", "password")) {
string userPrincipalName = "user1" + "@" + domain;
// validate the credentials
bool isValid = context.ValidateCredentials(userPrincipalName, "password");
if (isValid) {
UserPrincipal up = UserPrincipal.FindByIdentity(context, IdentityType.UserPrincipalName, userPrincipalName);
Console.WriteLine(up.Enabled);
Console.WriteLine(up.Name);
Console.WriteLine(up.EmailAddress);
Console.WriteLine(up.DisplayName);
}
}
现在层次结构就像这样
mydomain.com.pk
DOTNET
QA
现在,如果我提供: string container =“ou = qa,dc = mydomain,dc = com,dc = pk”;
它运作完美,但我的要求是支持OU 当我尝试:
string container = "ou=dotnet,ou=qa,dc=mydomain,dc=com,dc=pk";
我收到错误:there is no such object on the server.
有人可以帮助我如何在容器中提供多个OU吗?如果可能,他们不是彼此的孩子。 任何帮助将不胜感激。
答案 0 :(得分:1)
我认为dotnet
组织单位应该是qa
组织单位的子项,并且您的用户应该在dotnet
OU中,以便能够使用您提供的容器。
或者只是尝试将容器更改为以下以支持您当前的层次结构。
string container = "ou=qa,ou=dotnet,dc=mydomain,dc=com,dc=pk";
换句话说,你需要在路径上冒泡。如果您在路径中指定用户,它将如下所示:
string container = "cn=user,ou=qa,ou=dotnet,dc=mydomain,dc=com,dc=pk";