Является Авторизовать атрибутом в.NET ASP MVC, используемая для Аутентификации, а также Авторизации?

Какую версию Fiddler вы используете?

Fiddler автоматически подключается к прокси вашей организации, и все текущие версии Fiddler поддерживают передачу аутентификационной информации между клиентом и прокси-сервером аутентификации.

Как вы генерируете HTTP-запросы? Каковы точные заголовки ответа HTTP?

19
задан Joseph 9 June 2009 в 14:05
поделиться

3 ответа

Authorize attribute can be used to check to see whether the user is logged in. It can also be used to check if the user is a member of a specific role and has a specific name.

It essentially does the same thing handled by section in web.config when using Web forms.

It doesn't specify the authentication method. It's handled by section in web.config just like Web forms.

EDIT (clarification about authentication and authorization):

Authentication is identity verification. That is, you check to see who the user is. This can be performed by checking a user name and password, checking your Windows authentication token, scanning retina, voice identification or whatever else.

Authorization is the act of limiting access to a specific resource to users that satisfy a certain criteria. To be able to authorize a user to a resource, you should know the rights the user have. To check that, you should know who the user is in the first place. So the user have to be authenticated.

Essentially an empty [Authorize] attribute does authorization, not authentication. It doesn't check who you are. It just checks if the one who you verified to be does have access to the resource or not. However, its authorization criteria is "anyone successfully authenticated." You can specify a different criteria. So, indeed it's doing authorization, not authentication.

27
ответ дан 30 November 2019 в 03:43
поделиться

Авторизация действительно проверяет, что пользователь аутентифицирован, иначе он не сможет определить роли для пользователя или какой пользователь (кроме анонимного) является текущим пользователем. То есть для авторизации, если анонимный доступ не разрешен, вы должны сначала пройти аутентификацию. Ниже приведен соответствующий фрагмент из метода AuthorizeCore в RTM-версии (из http://www.codeplex.com/aspnet ).

// This method must be thread-safe since it is called by the thread-safe OnCacheAuthorization() method.
protected virtual bool AuthorizeCore(HttpContextBase httpContext) {
    if (httpContext == null) {
        throw new ArgumentNullException("httpContext");
    }

    IPrincipal user = httpContext.User;
    if (!user.Identity.IsAuthenticated) {
        return false;
    }

    ...

Если AuthorizeCore возвращает false в OnAuthorization, то AuthorizationContext.Result будет установите новый HttpUnauthorizedResult, что приведет к перенаправлению пользователя на страницу входа (в FormsAuthentication) или ошибке.

ИЗМЕНИТЬ : после прочтения ваших комментариев к другим ответам я бы сказал, что вы упускаете суть . Технически это только авторизация. Один уровень авторизации, минимальный, заключается в том, что вам необходимо пройти аутентификацию для выполнения действия. Вы получаете это, если не указываете пользователей или роли для атрибута Authorize. Разрешены любые пользователи или роли, если они аутентифицированы. Указывая пользователей и / или роли, которые действуют как фильтры, вы сужаете область действия, и пользователю необходимо не только пройти аутентификацию (чтобы вы могли проверить членство в имени / роли), но и пройти квалификацию на основе фильтра.

5
ответ дан 30 November 2019 в 03:43
поделиться

Аутентификация и авторизация - две разные задачи.

Аутентификация проверяет, является ли пользователь тем, кем он является, почти всегда выполняется в большинстве веб-приложений, подтверждая, что он / она обладает некоторыми знаниями (например, паролем), которые должен знать только он / она.

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

Поскольку мы можем получить роли человека только после входа в систему, можно использовать атрибут Authorize для проверки аутентификации.

Взгляните на это сообщение в блоге и посмотрите, как автор реализует настраиваемые атрибуты авторизации и аутентификации:

Защита действий вашего контроллера

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

3
ответ дан 30 November 2019 в 03:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: