我试图在Windows C ++客户端和java服务器之间进行SASL身份验证。在客户端,我正在做:
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
我知道InitializeSecurityContext的kerberos实现应该联系ApacheDS kdc并要求一张票,所以我认为这里要解决的第一个问题是:inizialize函数如何发现kdc服务器的主机名和端口(这些是localhost:6088顺便说一下)?
我尝试使用ksetup:
ksetup /AddKdc MYDOMAIN.ORG localhost:6088
但没有运气。