10

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

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

System.IO.DirectoryInfo.GetDirectories()失败的是即使使用模拟检索子文件夹。

这是我用于模拟的代码:

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

我已检查被模拟的用户是否有权访问该文件夹。

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

4

1 回答 1

2

模拟允许网站服务帐户模拟(假装是)该计算机上的另一个用户。因此,查询 AD 以查看您(或被冒充的用户)拥有的权限是允许的。

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

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

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

于 2012-12-19T16:34:13.583 回答