Я пытаюсь сделать аутентификацию SASL между клиентом Windows C ++ и сервером Java. На стороне клиента я делаю:
AcquireCredentialsHandle(NULL, "Kerberos", SECPKG_CRED_OUTBOUND, NULL,
&credentials, NULL, NULL, &hCred, &tsExpiry);
scRet = InitializeSecurityContext(&hCred, NULL, targetName,
ISC_REQ_ALLOCATE_MEMORY, 0,
SECURITY_NATIVE_DREP, NULL, 0,
hContext, &OutBuffer,
&dwSSPIOutFlags, &tsExpiry);
с:
credentials = ("myuser","mypassword", "MYDOMAIN.ORG")
targetName = "myservice/node0"
домен не имеет отношения к клиентскому домену windows.
Результат, который я получил на данный момент:
scRet = SEC_E_NO_AUTHENTICATING_AUTHORITY
Я знаю, что реализация kerberos для InitializeSecurityContext должна связаться с ApacheDS kdc и запросить билет, поэтому я думаю, что первая проблема, которую необходимо решить, это: как функция inizialize может обнаружить имя хоста и порт сервера kdc (которые являются localhost: 6088 Кстати)?
Я попытался с помощью ksetup:
ksetup /AddKdc MYDOMAIN.ORG localhost:6088
но без удачи.
Задача ещё не решена.
Других решений пока нет …