Если аутентификационный билет также содержит информацию о ролях, то почему ...? - PullRequest
3 голосов
/ 20 мая 2009

Q1. Причина, по которой собственный UrlAuthorizationModule не понимает роли, связана с тем, что информация о ролях хранится в управляемом объекте, реализующем интерфейс IPrincipal , которому не принадлежат собственные модули не имеет доступа к.

A) Но если собственный UrlAuthorizationModule понимает билет проверки подлинности и, следовательно, может работать в сочетании с FormsAuthenticationModule , то почему он не может работать и с модулем ролей?

А именно, не содержит ли этот билет информацию о ролях, в которых участвует пользователь? Если это так, то UrlAuthorizationModule может получить всю информацию о ролях из заявки и, следовательно, не должен иметь доступа к IPrincipal объекту?!


Q2 Следующая статья http://www.asp.net/learn/security/tutorial-11-vb.aspx претензий:

Если анонимный пользователь посещает сайт, ни FormsAuthenticationModule , ни RoleManagerModule не создают основной объект.


A) Если приведенное выше утверждение верно, то следующий код не вызовет исключения, поскольку свойство User будет содержать нулевую ссылку:

        if (User.Identity.IsAuthenticated)
            Label1.Text = "user is authenticated";
        else Label1.Text = "user is not authenticated";

Label1 отображает « Пользователь не аутентифицирован », что предполагает, что свойству User назначен объект, реализующий IPrincipal , даже если пользователь не авторизован ?!


Thanx

1 Ответ

2 голосов
/ 22 мая 2009

Относительно Q1: Что если для CacheRolesInCookie будет установлено значение false, то для определения ролей будет недостаточно информации.

Относительно Q2: цитата из http://msdn.microsoft.com/en-us/library/aa302376.aspx

"Активированный модуль аутентификации отвечает за создание объекта IPrincipal и его сохранение в свойстве HttpContext.User. Это жизненно важно, поскольку нижестоящие модули авторизации используют этот объект IPrincipal для принятия решений об авторизации. В отсутствие аутентификации (например, когда в IIS включен анонимный доступ, а ASP.NET настроен), существует специальный ненастроенный модуль, который помещает анонимного участника по умолчанию в HttpContext. Пользовательская собственность. В результате HttpContext.User всегда не равен нулю после аутентификации. "

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