Как я могу выдать себя за зарегистрированного пользователя и получить доступ к unc папкам? - PullRequest
2 голосов
/ 08 июля 2011

У меня проблемы с подражанием вошедшему в систему пользователю и доступу к unc-файлам. Я пробовал использовать этот пример кода:

using System.Security.Principal;
...
// Obtain the authenticated user's Identity
WindowsIdentity winId = (WindowsIdentity)HttpContext.Current.User.Identity;
WindowsImpersonationContext ctx = null;
try
{  
    // Start impersonating  
    ctx = winId.Impersonate();  
    // Now impersonating  
    // Access resources using the identity of the authenticated user
}
// Prevent exceptions from propagating
catch{}
finally
{  
    // Revert impersonation  
    if (ctx != null)    
        ctx.Undo();
}
// Back to running under the default ASP.NET process identity

Если я пытаюсь получить доступ к файлу локально, где в комментарии говорится Доступ к ресурсам с использованием идентификатора аутентифицированного пользователя , он работает точно так же, как и должен. Однако если я попытаюсь сделать то же самое с файлом на файловом сервере где-нибудь, используя UNC, например \\ ServerName \ Share \ FileName.txt, не имеет значения, что у олицетворенной учетной записи достаточно прав. Приложение выдает исключение, сообщающее, что учетной записи ASP.NET не хватает прав.

Я также пытался использовать неуправляемый код для выполнения олицетворения, и тогда это работает! Локальный файл или UNC, не имеет значения, работает как шарм!

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

Кто-нибудь знает, почему приложение ведет себя так? Это какой-то параметр конфигурации, который мне нужно установить?

1 Ответ

0 голосов
/ 08 июля 2011

Веб-приложение работает с определенными идентичность, эта идентичность основана на учетная запись пользователя на локальной машине или домен.

Приложение использует эту личность когда он обращается к ресурсам на диске или Сервисы.

Если у учетной записи нет прав на ресурс, веб-приложение будет не сможет использовать ресурс.

Олицетворение - это то, где сеть приложение предполагает другое идентичность по умолчанию

Олицетворение может быть настроено на используется для веб-приложения на запуск, добавив тег в файл web.config. олицетворение также может быть реализован динамически в код, чтобы его можно было включить и выкл при необходимости.

С Идентификация и олицетворение ASP.NET Different Impersonation

Так что проверьте ваш web.config и IIS Configuration и убедитесь, что вы выдавали себя за правильного пользователя.

...