- 论坛徽章:
- 0
|
各位朋友,请教一个linux下域用户的验证问题。
在linux环境下,有一些域用户及其密码信息,想到windows的域服务器上去验证这些域用户的密码的正确性。
在windows上我是如下做的,但在linux上,没找到合适的方法,LDAP看了半天,没找到方法
BOOL CCommonFun::CheckUserPasswordInDomain(CString strAccountName, CString strPassword, CString strDomain /*= ""*/)
{
HRESULT hr;
if (strDomain.GetLength() == 0)
{
HRESULT hr;
IADsADSystemInfo *pSys;
hr = CoCreateInstance(CLSID_ADSystemInfo,
NULL,
CLSCTX_INPROC_SERVER,
IID_IADsADSystemInfo,
(void**)&pSys);
BSTR bstr;
if (SUCCEEDED(hr) && SUCCEEDED(pSys->get_DomainDNSName(&bstr)))
{
strDomain = bstr;
SysFreeString(bstr);
}
else
strDomain = "rootDSE";
if(pSys)
pSys->Release();
}
CString str, str1, str2;
IADs *pADs = NULL;
BSTR bstrUrl, bstrName, bstrPass;
str="LDAP://"+ strDomain;
bstrUrl = str.AllocSysString();
str1 = strDomain+"\\"+strAccountName;
bstrName = str1.AllocSysString();
str2 = strPassword;
bstrPass = str2.AllocSysString();
hr = ADsOpenObject( bstrUrl, bstrName, bstrPass, ADS_SECURE_AUTHENTICATION, IID_IADs, (void**)&pADs);
SysFreeString( bstrUrl );
SysFreeString( bstrName );
SysFreeString( bstrPass );
if ( hr != S_OK || NULL == pADs)
{
CCommonFun::WriteFileLog("CheckUserPasswordInDomain hr = %X",hr);
return FALSE;
}
if (pADs)
{
pADs->Release();
pADs = NULL;
}
return TRUE;
} |
|