ASP. NET личность олицетворяет собой неудачного администратора домена - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть asp. net веб-сайт, и я пытаюсь получить доступ к общим папкам на серверах, когда я использую свое имя пользователя и пароль для подражания личности, он работает нормально и позволяет мне проверять вход в систему разрешенных пользователей, однако, если я пробую служебную учетную запись, которая является администратором домена, а затем выдает «Попытка выполнить несанкционированную операцию». on DirectorySecurity dirSe c = Directory.GetAccessControl (папка);

<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;
    }

I не понимаю

1 Ответ

0 голосов
/ 22 апреля 2020

Проблема не была связана с учетной записью службы. Это была одна из папок, вошедших в систему только у пользователя, которая имеет доступ только для чтения, поэтому она не может проверить разрешение. Мне не нужно было использовать олицетворение, поскольку я использую учетную запись службы в качестве учетной записи по умолчанию для пула приложений.

...