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

Содержимое удалено Содержимое добавлено
Строка 475:
 
= AccessDecisionManager по умолчанию =
 
В этом разделе предполагается, что вы уже имеете некоторые знания о базовой архитектуре управления доступом в Spring Security. Если у вас их нет, то вы можете пропустить его и вернуться к нему позже, содержание этого раздела имеет значение для тех, кому необходимо выполнять дополнительные настройки, чтобы получить более сложную систему безопасности, чем просто основанную на ролях пользователей.
 
Когда вы используете конфигурирование с помощью пространства имен, автоматически регистрируется экземпляр класса по умолчанию <code>AccessDecisionManager</code> создается и может использоваться для принятия решения при попытках вызова методов и доступа к URL, основываясь на ваших объявлениях в <code>intercept-url</code> и <code>protect-pointcut</code> (или в аннотациях, если вы используете защиту методов с помощью аннотаций).
 
Стратегия по умолчанию, это использовать <code>AffirmativeBased</code> <code>AccessDecisionManager</code> с <code>RoleVoter</code> и <code>AuthenticatedVoter</code>. Более подробно об этом можно прочитать в главе «Авторизация».
 
== Настройка AccessDecisionManager ==
Основный интерфейс, который предоставляет в Spring Security услуги аутентификации, это <code>AuthenticationManager</code>. Обычно это экземпляр класса <code>ProviderManager</code>, с которым вы уже можете быть знакомы, если использовали фреймворк ранее. Если нет, то мы рассмотрим его позднее в главе «Технический обзор». Экземпляр бина регистрируется с помощью элемента пространства имен <code>authentication-manager</code>. Вы не можете использовать собственный экземпляр <code>AuthenticationManager</code> если вы пользуетесь системой безопасности методом или HTTP с помощью пространства имен, но это не проблема если у вас полный контроль над используемыми <code>AuthenticationProvider</code>'ами.
 
Вы можете захотеть зарегистрировать дополнительные бины <code>AuthenticationProvider</code> для <code>ProviderManager</code> и вы можете сделать это используя элемент <code><authentication-provider></code> с атрибутом <code>ref</code>, где значение атрибута это имя бина провайдера, который вы хотите добавить. Например:
 
<source lang="xml">
<authentication-manager>
<authentication-provider ref="casAuthenticationProvider"/>
</authentication-manager>
 
<bean id="casAuthenticationProvider"
class="org.springframework.security.cas.authentication.CasAuthenticationProvider">
...
</bean>
</source>
 
Другим общим требованием является то, что другой компонент в контексте может потребовать ссылку на <code>AuthenticationManager</code>. Вы можете легко зарегистрировать псевдоним для <code>AuthenticationManager</code> и использовать это имя в других местах контекста приложения.
 
<source lang="xml">
<security:authentication-manager alias="authenticationManager">
...
</security:authentication-manager>
 
<bean id="customizedFormLoginFilter"
class="com.somecompany.security.web.CustomFormLoginFilter">
<property name="authenticationManager" ref="authenticationManager"/>
...
</bean>
</source>
 
= Примечания =