【问题标题】:application executor vs lpszUserName of ADsOpenObject应用程序执行程序与 ADsOpenObject 的 lpszUserName
【发布时间】:2019-09-09 13:56:26
【问题描述】:

我想了解 ADsOpenObject 的应用程序执行者和 lpszUserName。

我不明白为什么我的程序忽略 lpszUserName 的域,同时连接到应用程序执行器的域。

这是我的代码。

CComPtr<IADs> iad;
ADsOpenObject("LDAP://RootDSE", "test2.com\tester", "pw", ADS_SECURE_AUTHENTICATION, IID_IADs, (void **)&iad);

VARIANT dc;
VariantInit(&dc);
iad->Get(CComBSTR("defaultNamingContext"), &dc);

这是一个场景。

应用程序执行程序(test1.com\tester)在应用程序服务器(test3.com\testServer)执行调用 ADsOpenObject 硬编码“test2.com\tester”的程序。

  • 应用程序执行者:test1.com\tester
  • lpszUserName : test2.com\tester
  • 应用服务器:test3.com\testServer
  • 所有域相互信任。

请帮帮我。

【问题讨论】:

    标签: c++ active-directory adsi


    【解决方案1】:

    它不会忽略lpszUserName 参数中的域名,它只是不使用它来决定连接到哪个域。

    lpszPathName 参数决定连接到哪个域,并使用 lpszUserName 中的凭据(可能是来自不同的受信任域的凭据)。

    如果您没有在lpszPathName 中包含域名,那么它将连接到当前用户的域,而不是您传递的凭据的域(如果它们不同)。如果要指定不同的域,则需要在路径中包含域名,如下所示:

    "LDAP://test2.com/RootDSE"
    

    如果您愿意,您可以在那里使用特定的域控制器。有关如何构建路径的更多详细信息是here

    【讨论】:

    • 非常感谢。但我不清楚..我没有在 lpszPathName 中包含域名。这意味着目标域将是应用服务器加入的 test3.com,并且 test2.com 对 lpszUserName(test2.com\tester) 进行身份验证。在这种情况下,ADsOpenObject 不受应用程序执行程序(test1.com\tester)的影响?
    • 对不起,我刚刚测试了这个。它使用执行者的域,而不是计算机的域。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-22
    • 2013-03-12
    • 2018-03-02
    • 2017-03-21
    相关资源
    最近更新 更多