好,
如果我理解正確的話你的問題,我知道這是可能做到這一點做的直接API調用。 Advapi32.dll中的LogonUser就是答案。下面的代碼段爲我工作
public class ActiveDirectoryHelper
{
[DllImport("advapi32.dll", SetLastError = true)]
private static extern bool LogonUser(
string lpszUsername,
string lpszDomain,
string lpszPassword,
int dwLogonType,
int dwLogonProvider,
out IntPtr phToken
);
[DllImport("kernel32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool CloseHandle(IntPtr hObject);
public static bool Authenticate(string userName, string password, string domain)
{
IntPtr token;
LogonUser(userName, domain, password, 2, 0, out token);
bool isAuthenticated = token != IntPtr.Zero;
CloseHandle(token);
return isAuthenticated;
}
public static IntPtr GetAuthenticationHandle(string userName, string password, string domain)
{
IntPtr token;
LogonUser(userName, domain, password, 2, 0, out token);
return token;
}
}
當使用令牌訪問資源時,是否可以使用令牌並將驗證留在Windows上? –
在我的情況下,我使用自定義套接字客戶端/服務器解決方案,我想使用Windows身份驗證來驗證用戶。因此,我需要傳輸一個令牌或類似的服務器進行身份驗證,但我不明白如何。 MSDN不是很有幫助。 – jgauffin
客戶端和服務器在同一個域上嗎?登錄到Windows時,客戶端是否對域進行身份驗證? –