【问题标题】:connect active directory using c#使用 C# 连接活动目录
【发布时间】:2015-02-28 07:19:58
【问题描述】:

我正在尝试连接到我使用过的 Active Directory 代码

string domain = "domain.com.pk";
string container = "DC=mycompnay,DC=com,DC=pk";
string Admin = "salman.zafar";
string Password = "password";
using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, domain, container, Admin, Password))
            {
                string userPrincipalName = "dotnettest" + "@" + domain;

                // validate the credentials
                bool isValid = pc.ValidateCredentials(userPrincipalName, "Ascertia 12");                

if (isValid)             {
 UserPrincipal up = UserPrincipal.FindByIdentity(pc, IdentityType.UserPrincipalName, userPrincipalName);
                       }

当代码在域中的机器上运行时,代码工作正常,但如果我尝试连接到远程的 AD 机器,则会出现错误 我尝试使用

string domain = "192.168.0.150:389/domain.com.pk";

然后它不起作用并且验证凭据方法总是返回 false 有人可以帮助我如何使用带有 PrincipalContext 的端口的 IP 连接到远程活动目录,或者我必须使用目录条目

任何帮助将不胜感激

【问题讨论】:

  • 您不需要受信任的 Active Directory 来交叉连接吗? technet.microsoft.com/en-us/library/cc731404.aspx
  • 可能我无法获得交叉连接,因为我正在为作为管理员的域提供管理员用户名和密码我正在使用 mvc 应用程序,该应用程序将提供 AD 访问权限及其动态,因为它的配置基础用户将提供 IP 主机管理员帐户和密码,然后通过代码我将看到可以连接到 AD 并找到用户并让他进入

标签: c# active-directory


【解决方案1】:

第一注:

当代码在域中的机器上运行时,代码可以正常工作

在这种情况下,如果机器是域成员(我在这里假设),则不需要在 PrincipalContext 构造函数中提供 adminuser+pw。

如果您想连接到任何其他 AD 服务器(域控制器),外部域和当前域之间没有信任,请使用 IP 地址或服务器名称作为“域”名称:

string domain = "192.168.0.150";

如果您的目标只是检查凭据是否有效,您甚至可以省略管理员用户 + pw:

string domainController = "192.168.0.150";

using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, domainController))
{
    string userPrincipalName = "dotnettest" + "@" + domain;

    // validate the credentials
    bool isValid = pc.ValidateCredentials(userPrincipalName, "Ascertia 12");    
}

但是,在这种情况下,您不能拥有

UserPrincipal up = UserPrincipal.FindByIdentity(...

因为 PrincipalContext 本身没有登录。

您也可以在类似问题中看到我的回答:https://stackoverflow.com/a/28690682/4547223

或这篇SO文章Validate a username and password against Active Directory?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-05
    • 2012-03-05
    • 1970-01-01
    • 2016-11-18
    • 2019-04-02
    • 2020-06-04
    • 2019-05-20
    • 1970-01-01
    相关资源
    最近更新 更多