Windows VC++ 中的身份验证
Windows authentication in VC++
我正在尝试找到一个简单的解决方案来验证 Windows 中的用户。我想用MFC框架来实现。
我用谷歌搜索了一下,发现我需要使用以下 Win32 API 函数:
LogonUser(L"LocalServer", L"NT AUTHORITY", NULL, LOGON32_LOGON_SERVICE, LOGON32_PROVIDER_DEFAULT, &hToken)
但我不知道如何让它发挥作用。根据 MSDN 文档,它 returns 失败时为零。
此外,在搜索此内容时,我遇到了术语 Impersonation。如果有人能解释一下就太好了。
有人可以指出一篇很好的文章或资源来解释这个主题。也很高兴看到一个工作示例。
提前致谢。
以下是在 Windows 中检查用户安全凭证的方法:
BOOL Logon(const CString& sLogin, const CString& sPassword)
{
HANDLE hToken = INVALID_HANDLE_VALUE;
CString sDomain;
CString sUser;
int nPos = sLogin.Find(_T("\"));
if (nPos != -1)
{
sDomain = sLogin.Mid(0, nPos);
sUser = sLogin.Mid(nPos + 1, sLogin.GetLength() - nPos - 1);
}
if (!sDomain.IsEmpty())
{
if(!::LogonUser(sUser, sDomain, sPassword, LOGON32_LOGON_NEW_CREDENTIALS, LOGON32_PROVIDER_DEFAULT, &hToken))
return FALSE;
}
else
{
if (!::LogonUser(sLogin, _T("."), sPassword, LOGON32_LOGON_NEW_CREDENTIALS, LOGON32_PROVIDER_DEFAULT, &hToken))
return FALSE;
}
if(!::ImpersonateLoggedOnUser(hToken))
return FALSE;
return TRUE;
}
我正在尝试找到一个简单的解决方案来验证 Windows 中的用户。我想用MFC框架来实现。
我用谷歌搜索了一下,发现我需要使用以下 Win32 API 函数:
LogonUser(L"LocalServer", L"NT AUTHORITY", NULL, LOGON32_LOGON_SERVICE, LOGON32_PROVIDER_DEFAULT, &hToken)
但我不知道如何让它发挥作用。根据 MSDN 文档,它 returns 失败时为零。
此外,在搜索此内容时,我遇到了术语 Impersonation。如果有人能解释一下就太好了。
有人可以指出一篇很好的文章或资源来解释这个主题。也很高兴看到一个工作示例。
提前致谢。
以下是在 Windows 中检查用户安全凭证的方法:
BOOL Logon(const CString& sLogin, const CString& sPassword)
{
HANDLE hToken = INVALID_HANDLE_VALUE;
CString sDomain;
CString sUser;
int nPos = sLogin.Find(_T("\"));
if (nPos != -1)
{
sDomain = sLogin.Mid(0, nPos);
sUser = sLogin.Mid(nPos + 1, sLogin.GetLength() - nPos - 1);
}
if (!sDomain.IsEmpty())
{
if(!::LogonUser(sUser, sDomain, sPassword, LOGON32_LOGON_NEW_CREDENTIALS, LOGON32_PROVIDER_DEFAULT, &hToken))
return FALSE;
}
else
{
if (!::LogonUser(sLogin, _T("."), sPassword, LOGON32_LOGON_NEW_CREDENTIALS, LOGON32_PROVIDER_DEFAULT, &hToken))
return FALSE;
}
if(!::ImpersonateLoggedOnUser(hToken))
return FALSE;
return TRUE;
}