ssl — доступ к AD LDS (ADAM) с использованием ADSI (C ++) и StartTLS

Мне нужно подключиться к экземпляру AD LDS с помощью StartTLS и получить список пользователей оттуда. К сожалению, это должно быть сделано в унаследованном приложении C ++.
Я установил тестовый AD LDS на компьютере под управлением Windows 2008 R2 (работающем в сетевой службе), похоже, что я правильно установил SSL на нем и могу получить к нему доступ (используя Simple Auth + StartTLS) с моего клиентского компьютера с помощью Apache Directory Studio или Ldap Admin.

Код в C ++ вызывает

hr = ADsOpenObject(
szPath, strUserName, strPassword, m_authentication,
IID_IADs, (void**)&m_pObject);

(https://msdn.microsoft.com/en-us/library/aa772238(v=vs.85).aspx)

где szPath — это LDAP: // IP: 10386 / CN = пользователи, DC = продукт, DC = локальный; strUserName: CN = admin, CN = Пользователи, DC = Продукт, DC = локальный; m_authentication — это ADS_AUTHENTICATION_ENUM (https://msdn.microsoft.com/en-us/library/aa772247%28v=vs.85%29.aspx?f=255&MSPPError = -2147217396)

Я пробую разные комбинации ADS_SECURE_AUTHENTICATION, ADS_USE_ENCRYPTION и ADS_USE_SSL, которые должны работать, в соответствии с примерами Microsoft.

Пока что ADS_USE_ENCRYPTION и ADS_USE_SSL дают наиболее многообещающую ошибку

00002028: LdapErr: DSID-0C0901FB, comment: The server requires binds to turn on integrity checking if SSL\TLS are not already active on the connection, data 0, v1db1
A more secure authentication method is required for this server.

ADS_SECURE_AUTHENTICATION + ADS_USE_SSL + ADS_USE_ENCRYPTION дать

The user name or password is incorrect.

И журналы сервера дают 2 события Failed Auth:
Компьютер попытался проверить учетные данные для учетной записи.

Authentication Package: MICROSOFT_AUTHENTICATION_PACKAGE_V1_0
Logon Account:  CN=admin,CN=Users,DC=Product,DC=local
Source Workstation: <MachineName>
Error Code: 0xc0000064

А также

An account failed to log on.
Subject:
Security ID:        NULL SID
Account Name:       -
Account Domain:     -
Logon ID:       0x0

Logon Type:         3

Account For Which Logon Failed:
Security ID:        NULL SID
Account Name:       CN=admin,CN=Users,DC=Product,DC=local
Account Domain:

Failure Information:
Failure Reason:     Unknown user name or bad password.
Status:         0xc000006d
Sub Status:     0xc0000064

Process Information:
Caller Process ID:  0x0
Caller Process Name:    -

Network Information:
Workstation Name:   <MachineName>
Source Network Address: IP
Source Port:        PortNum

Detailed Authentication Information:
Logon Process:      NtLmSsp
Authentication Package: NTLM
Transited Services: -
Package Name (NTLM only):   -
Key Length:     0

как будто он пытается аутентифицировать пользователя на локальном компьютере или на глобальном AD, а не на моем тестовом AD LDS.

Есть ли способ заставить его аутентифицировать пользователя по сравнению с моей тестовой AD LDS?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector