访问被拒绝冒充当前用户访问网络文件夹

时间:2012-12-19 15:59:04

标签: c# asp.net .net impersonation delegation

尝试列出特定文件夹中的目录和文件。此文件夹将取决于通过Windows身份验证(NTLM)登录的当前用户(Page.User),并从Active Directory(homedirectory属性)中检索。

我正在使用域用户访问AD并检索文件夹位置,这样可以正常工作。

即使假冒,也会使用System.IO.DirectoryInfo.GetDirectories()检索子文件夹。

以下是我用于模仿的代码:

System.Security.Principal.WindowsImpersonationContext impersonationContext;
impersonationContext =  ((System.Security.Principal.WindowsIdentity)User.Identity).Impersonate();

我已检查过被模拟的用户是否可以访问该文件夹。

从我到目前为止发现,似乎我需要设置委派或Kerberos身份验证,这是真的吗?这些是实现这一目标的唯一方法吗?模仿不应该足够吗?

1 个答案:

答案 0 :(得分:2)

模拟允许网站服务帐户冒充(伪装)该计算机上的其他用户 。因此,查询AD以查看您(或模仿用户)拥有的权限。

请求访问另一台计算机上的UNC共享是要求另一台计算机接受该网站服务帐户代表被模拟的用户行事。这是委托。另一台机器不检查用户凭据本身,而是将该检查委托给网络服务器。

如果客户端正在从另一台计算机连接网站(通常是网络服务器的情况),那么从客户端到网络服务器到UNC文件服务器都有“双跳”。

我建议您需要配置Kerberos(通过SetSPN实用程序)并查看为网站服务帐户启用委派权限(适用于AD用户和计算机)。如果您在设置时遇到问题,我衷心推荐一种名为DeleConfig的工具。