Spring Security/Конфигурирование с помощью пространства имён: различия между версиями

Содержимое удалено Содержимое добавлено
Строка 70:
 
=== Минимальная <http> конфигурация ===
Все что нужно чтобы начала работать веб-безопасность, это написать следующие строки:
 
<source lang="xml">
<http auto-config='true'>
<intercept-url pattern="/**" access="ROLE_USER" />
</http>
</source>
Которые говорят о том, что мы хотим, чтобы в нашем приложение все URL-адреса были защищенными, для доступа к ним требуется роль <code>ROLE_USER</code>. Элемент <code><http></code> является родительским для всей функциональности связанной с веб доступом в пространстве имен security. Элемент <code><intercept-url></code> задает шаблон, с которым сравниваются URL-адресов входящих запросов, для шаблона используется синтаксис в стиле Ant path. Атрибут <code>access</code> определяет требования к правам доступа для запросов, совпадающих с данным шаблоном для доступа просит соответствующие заданной модели. В конфигурации по умолчанию, это как правило список ролей, разделенных запятыми, пользователь должен обладать одной из них, чтобы иметь возможность выполнить запрос. Префикс "ROLE_" является маркером, который показывает что нужно выполнить простое сравнение с полномочиями пользователя. Иными словами, будет использоваться выполняться обычная проверка, основанная на ролях пользователей. Контроль доступа в Spring Security не ограничивается использованием простых ролей (отсюда использования префикса, чтобы различать различные типы атрибутов безопасности). Позже мы увидим, как может меняться их интерпретация <ref name="[2]">The interpretation of the comma-separated values in the access attribute depends on the implementation of the AccessDecisionManager which is used. In Spring Security 3.0, the attribute can also be populated with an EL expression.</ref>.
 
<blockquote>
'''''Примечание:'''''
Вы можете использовать несколько элементов <code><intercept-url></code> для задания различных требований контроля доступа для различных наборов URL-адресов, но они будут обрабатываться в том порядке как они заданы в файле и будет использовано первое совпадение. Так что вы должны размещать наиболее важные шаблоны в самом начале списка. Вы также можете добавить атрибут <code>method</code> , чтобы ограничить совпадение конкретным видом HTTP запроса (GET, POST, PUT и т. д.). Если запрос соответствует нескольким шаблонам, то совпадение с конкретным типом запроса будет иметь приоритет над порядком расположения.
</blockquote>
 
Чтобы добавить нескольких пользователей, можно задать тестовые данные прямо в пространстве имен:
 
<source lang="xml">
<authentication-manager>
<authentication-provider>
<user-service>
<user name="jimi" password="jimispassword" authorities="ROLE_USER, ROLE_ADMIN" />
<user name="bob" password="bobspassword" authorities="ROLE_USER" />
</user-service>
</authentication-provider>
</authentication-manager>
</source>
 
В приведенной выше конфигурации, определены два пользователя, их пароли и роли в приложении (которые будут использоваться для контроля доступа). Кроме того, можно загрузить информацию о пользователе из стандартного файла свойств с использованием атрибута <code>properties</code> для тега <code>user-service</code>. См. раздел «Аутентификация in-memory» для более подробной информации о формате файла. Использование элемента <code><authentication-provider></code> означает, что это информация о пользователях будет использоваться менеджером аутентификации для обработки запросов аутентификации. Может иметься несколько элементов <code><authentication-provider></code> для задания нескольких источник аутентификационной информации, и каждый из них будет опрашиваться по очереди.
 
С этого момента вы можете запустить ваше приложение и получите запрос для выполнения аутентификации (логина). Попробуйте выполнить это или поэкспериментируйте с "учебным" приложением, которое поставляется вместе с проектом. Приведенная выше конфигурация, по факту добавляет не сильно много сервисов, потому что мы использовали атрибут <code>auto-config</code>. Например, автоматически включается обработка логина на основе веб-форм.
 
==== Что делает включение auto-config? ====
Атрибут <code>auto-config</code>, который мы уже использовали, это просто сокращенный синтаксис:
<source lang="xml">
<http>
<form-login />
<http-basic />
<logout />
</http>
</source>
Эти элементы отвечают соответственно за установку логина на основе веб-формы, базовый логин и выход из приложения <ref name="[3]">In versions prior to 3.0, this list also included remember-me functionality. This could cause some confusing errors with some configurations and was removed in 3.0. In 3.0, the addition of an AnonymousAuthenticationFilter is part of the default <http> configuration, so the <anonymous /> element is added regardless of whether auto-config is enabled.</ref>. Каждый из них имеет атрибуты, которые могут быть использованы для изменения их поведения.
 
==== Базовый вход в систему и вход на основе веб-форм ====
 
= Примечания =