好,
如果我理解正确的话你的问题,我知道这是可能做到这一点做的直接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时,客户端是否对域进行身份验证? –