Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 拒绝访问模拟当前用户访问网络文件夹_C#_Asp.net_.net_Impersonation_Delegation - Fatal编程技术网

C# 拒绝访问模拟当前用户访问网络文件夹

C# 拒绝访问模拟当前用户访问网络文件夹,c#,asp.net,.net,impersonation,delegation,C#,Asp.net,.net,Impersonation,Delegation,正在尝试列出特定文件夹中的目录和文件。此文件夹将取决于通过Windows身份验证(NTLM)登录并从Active Directory(homedirectory属性)检索的当前用户(Page.user) 我正在使用一个域用户访问广告和检索文件夹位置,这很好 失败的是使用System.IO.DirectoryInfo.GetDirectories()检索子文件夹,即使使用模拟也是如此 以下是我用于模拟的代码: System.Security.Principal.WindowsImpersonati

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

我正在使用一个域用户访问广告和检索文件夹位置,这很好

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

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

System.Security.Principal.WindowsImpersonationContext impersonationContext;
impersonationContext =  ((System.Security.Principal.WindowsIdentity)User.Identity).Impersonate();
我已检查被模拟的用户是否有权访问该文件夹


从我目前发现的情况来看,似乎我需要设置委派或Kerberos身份验证,这是真的吗?这些是实现这一目标的唯一途径吗?模拟还不够吗?

模拟允许网站服务帐户模拟(假装)该计算机上的另一个用户。因此,可以查询广告以查看您(或模拟用户)拥有哪些权限

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

如果客户机正在从另一台机器(通常是Web服务器)连接网站,那么从客户机到Web服务器再到UNC文件服务器有一个“双跳”


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

你在以前的投递中检查过这个吗。。?