asp.net - ASP.NET 身份模拟失败的域管理员
问题描述
我有 asp.net 网站并尝试访问服务器中的共享文件夹,当我在身份模拟上使用我的用户名和密码时,它工作正常并让我检查登录用户对文件夹的权限但是如果我尝试服务帐户是域然后管理员还会给出“尝试执行未经授权的操作”。在 DirectorySecurity dirSec = Directory.GetAccessControl(folder);
<identity impersonate="true" userName="DomainUser" password="Password"/>
当我登录到该服务帐户时,它具有对所有这些文件夹的完全控制访问权限。
public string GetFolderPermissions(string folder, string user) {
string permissionShort = string.Empty;
string executingUser = user;
NTAccount acc = new NTAccount(executingUser);
SecurityIdentifier secId = acc.Translate(typeof(SecurityIdentifier)) as SecurityIdentifier;
DirectorySecurity dirSec = Directory.GetAccessControl(folder);
AuthorizationRuleCollection authRules = dirSec.GetAccessRules(true, true, typeof(SecurityIdentifier));
foreach(FileSystemAccessRule ar in authRules) {
if(secId.CompareTo(ar.IdentityReference as SecurityIdentifier) == 0) {
var fileSystemRights = ar.FileSystemRights;
permissionShort += ((ar.FileSystemRights & FileSystemRights.FullControl) == FileSystemRights.FullControl) ? "F" : "-";
permissionShort += ((ar.FileSystemRights & FileSystemRights.Write) == FileSystemRights.Write) ? "W" : "-";
permissionShort += ((ar.FileSystemRights & FileSystemRights.Read) == FileSystemRights.Read) ? "R" : "-";
permissionShort += ((ar.FileSystemRights & FileSystemRights.ReadAndExecute) == FileSystemRights.ReadAndExecute) ? "A" : "-";
permissionShort += ((ar.FileSystemRights & FileSystemRights.ListDirectory) == FileSystemRights.ListDirectory) ? "L" : "-";
permissionShort += ((ar.FileSystemRights & FileSystemRights.Modify) == FileSystemRights.Modify) ? "M" : "-";
permissionShort += ((ar.FileSystemRights & FileSystemRights.ExecuteFile) == FileSystemRights.ExecuteFile) ? "E" : "-";
permissionShort += "\n";
}
}
return permissionShort;
}
我不明白。
解决方案
问题与服务帐户无关,它是登录用户仅具有读取权限的文件夹之一,因此无法检查权限。我不需要使用模拟,因为我使用服务帐户作为应用程序池默认帐户。
推荐阅读
- react-native - 在 Mac 上设置 getstream.io 反应本机演示的问题
- android - Android PackageInstaller 未安装 APK
- c++ - 3Sum 超过时间限制 LeetCode
- r - 如何从此数据框中提取数据?
- docker - 适用于 Windows 的 Docker 桌面 - 单个命令窗口
- flutter - Flutter 应用程序的发布版本比调试慢
- asp.net-core - 如何从 asp.net 核心中的约定中删除控制器
- linux - 统计PowerShell中的字符数、单词数和行数
- python - 使用多个标头转换数据框
- batch-file - 在 SSIS 执行过程任务中将字符串拆分为多个存在的批处理文件脚本