在我的WebApi项目中,我正在模拟域用户,但仍然得到Access Denied
。模拟代码非常简单:
SafeAccessTokenHandle token;
bool returnValue = LogonUser(usernmae, domain, password, (int)logonType, (int)logonProvider, out token);
if (returnValue == false)
{
int ret = Marshal.GetLastWin32Error();
throw new Win32Exception(ret);
}
using (token)
{
WindowsIdentity.RunImpersonated(token, () => actionToExecute());
}
logonType
是NEW_CREDENTIALS,而logonProvider
是WINNT50。我在这里和其他地方都读过,使用此登录类型只会给模拟用户一个令牌,并且该线程仍在主体身份上下文中运行。
我正在使用Process Monitor
检查为什么我仍然拒绝访问。而且我仍然看到访问网络共享的用户是IIS_APPPOOL\websitename
。
是否有一些API可以检查并确保模拟的用户实际上已被模拟?