Функция ADsOpenObject (adshlp.h)
Функция ADsOpenObject привязывается к объекту ADSI, используя явные учетные данные пользователя и пароля. ADsOpenObject — это функция-оболочка для IADsOpenDSObject и эквивалентна методу IADsOpenDSObject::OpenDsObject .
Синтаксис
HRESULT ADsOpenObject(
[in] LPCWSTR lpszPathName,
[in] LPCWSTR lpszUserName,
[in] LPCWSTR lpszPassword,
[in] DWORD dwReserved,
[in] REFIID riid,
[out] void **ppObject
);
Параметры
[in] lpszPathName
Тип: LPCWSTR
Строка Юникода, заканчивающаяся null, которая указывает ADsPath объекта ADSI. Дополнительные сведения и примеры кода строк привязки для этого параметра см. в разделах LDAP ADsPath и WinNT ADsPath.
[in] lpszUserName
Тип: LPCWSTR
Строка Юникода, завершающаяся значением NULL, указывающая имя пользователя для предоставления службе каталогов для использования в учетных данных. Эта строка всегда должна быть в формате "<домен\><имя> пользователя", чтобы избежать неоднозначности. Например, если доменЫ А и ДоменB имеют отношение доверия и оба домена имеют пользователя с именем user1, невозможно предсказать, какой домен ADsOpenObject будет использовать для проверки "user1".
[in] lpszPassword
Тип: LPCWSTR
Строка Юникода, завершающаяся значением NULL, которая указывает пароль для предоставления службе каталогов для использования для учетных данных.
[in] dwReserved
Тип: DWORD
Флаги проверки подлинности для конкретного поставщика, используемые для определения параметров привязки. Дополнительные сведения см. в разделе ADS_AUTHENTICATION_ENUM.
[in] riid
Тип: REFIID
Идентификатор интерфейса для запрошенного интерфейса для этого объекта.
[out] ppObject
Тип: VOID**
Указатель на указатель на запрошенный интерфейс.
Возвращаемое значение
Тип: HRESULT
Этот метод поддерживает стандартные возвращаемые значения HRESULT , включая следующие.
Дополнительные сведения см. в разделе Коды ошибок ADSI.
Комментарии
Эту функцию не следует использовать только для проверки учетных данных пользователя.
Клиент C/C++ вызывает вспомогающую функцию ADsOpenObject для привязки к объекту ADSI, используя имя пользователя и пароль, предоставленные в качестве учетных данных для соответствующей службы каталогов. Если lpszUsername и lpszPassword имеют значение NULL и задано ADS_SECURE_AUTHENTICATION , ADSI привязывается к объекту с помощью контекста безопасности вызывающего потока, который является контекстом безопасности учетной записи пользователя, под которой выполняется приложение, или клиентской учетной записи пользователя, которую олицетворяет вызывающий поток.
Учетные данные, передаваемые в функцию ADsOpenObject , используются только с конкретным объектом, привязанным к и не влияют на контекст безопасности вызывающего потока. Это означает, что в приведенном ниже примере вызов ADsOpenObject будет использовать учетные данные, отличные от вызова ADsGetObject.
HRESULT hr;
IADs *padsRoot1;
IADs *padsRoot2;
hr = ADsOpenObject(L"LDAP://rootDSE",
pwszUsername,
pwszPassword,
ADS_SECURE_AUTHENTICATION,
IID_IADs,
(LPVOID*)&padsRoot1);
hr = ADsGetObject(L"LDAP://rootDSE",
IID_IADs,
(LPVOID*)&padsRoot2);
Для работы с поставщиком WinNT: можно передать lpszUsername в качестве одной из следующих строк:
- Имя учетной записи пользователя, то есть jeffsmith.
- Имя пользователя в стиле Windows, то есть Fabrikam\jeffsmith.
- Имя учетной записи пользователя, например jeffsmith. Чтобы использовать само имя пользователя, необходимо задать только флаг ADS_SECURE_AUTHENTICATION в параметре dwReserved .
- Путь пользователя из предыдущей версии Windows, например Fabrikam\jeffsmith.
- Различающееся имя, например "CN=Jeff Smith,OU=Sales,DC=Fabrikam,DC=Com". Чтобы использовать DN, параметр dwReserved должен быть равен нулю или должен содержать флаг ADS_USE_SSL .
- Имя участника-пользователя (UPN), например "[email protected]". Чтобы использовать имя участника-пользователя, назначьте соответствующее значение имени участника-пользователя для атрибута userPrincipalName целевого объекта пользователя.
В следующем примере кода показано, как выполнить привязку к объекту службы каталогов с помощью запрошенных учетных данных пользователя.
IADs *pObject;
LPWSTR szUsername = NULL;
LPWSTR szPassword = NULL
HRESULT hr;
// Insert code to securely retrieve the user name and password.
hr = ADsOpenObject(L"LDAP://CN=Jeff,DC=Fabrikam,DC=com",
"jeffsmith",
"etercespot",
ADS_SECURE_AUTHENTICATION,
IID_IADs,
(void**) &pObject);
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista |
Минимальная версия сервера | Windows Server 2008 |
Целевая платформа | Windows |
Header | adshlp.h |
Библиотека | Activeds.lib |
DLL | Activeds.dll |