ASP.NET вопрос аутентификации - PullRequest
0 голосов
/ 08 июня 2011

У меня есть следующий код на странице aspx:

   protected void Page_Load(object sender, EventArgs e)
    {
        if (User.Identity.IsAuthenticated)
            lblAuthentication.Text = 
            "Authenticated user: " + User.Identity.Name;
        else
            lblAuthentication.Text = 
            "User not authenticated. Anonymous access ";

        lblWindowsIdentity.Text = 
            "Windows identity: " + WindowsIdentity.GetCurrent().Name;

    }   // Page_Load()

Параметры web.config следующие:

    <authentication mode="Windows" />

    <authorization>
        <allow users="*" />
    </authorization>

При входе в систему как Боба, который является администратором, я получаю следующий вывод

Authenticated user: Bob-PC\Bob
Windows identity: Bob-PC\Bob

Мне показывает дополнительный код:

    Administrator: True 
    User: True 
    Guest: False 
    PowerUser: False 
    AccountOperator: False 
    SystemOperator: False 

Затем я переключаю пользователя (Windows Vista), захожу как Гость, захожу на тот же сайт и получаю тот же вывод ???

Authenticated user: Bob-PC\Bob
Windows identity: Bob-PC\Bob

    Administrator: True 
    User: True 
    Guest: False 
    PowerUser: False 
    AccountOperator: False 
    SystemOperator: False 

Почему я получаю один и тот же вывод для разных пользователей?

Ответы [ 2 ]

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

Поскольку веб-сайт работает в контексте Bob-PC \ Bob, а не в качестве пользователя, в который вы вошли.Звонки, которые вы делаете, относятся к процессу веб-сайта (а не к тому, что происходит за пределами веб-сайта [остальные окна]).

Если вы используете IIS, вы можете изменить идентификатор, под которым рабочий процесс запускаетсяизменение свойств пула приложений, в котором размещается веб-сайт ....

ПРИМЕЧАНИЕ: вы можете использовать олицетворение в .net, чтобы заставить IIS работать в контексте пользователя, просматривающего страницу.И это способ защитить приложение, работающее в локальной сети, например, с работающей сетью Windows.Но для того, чтобы это работало, вы должны использовать IE, так как другие браузеры не передают учетные данные аутентификации домена).

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

WindowsIdentity.GetCurrent (). Имя - это идентификатор, под которым работает поток IIS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...