Spring Security/Ключевые сервисы Spring Security: различия между версиями

Содержимое удалено Содержимое добавлено
Новая страница: «Эта статья представляет собой перевод Spring Security Reference Documentation, Ben Alex, Luke Taylor 3.0.2.RELEASE, Глава 6, К...»
 
Строка 23:
</bean>
</source>
 
В приведенном выше примере имеется три провайдера. Они будут использоваться при попытке проведения аутентификации в том порядке, в каком они указаны в списке (что подразумевается при использовании List), причем каждый провайдер может попытаться либо выполнить аутентификацию, либо вернет <code>null</code>. Если все реализации вернут <code>null</code>, то <code>ProviderManager</code> поднимет <code>ProviderNotFoundException</code>. Если вам интересно получить дополнительную информацию о цепочке провайдеров, то обратитесь к описанию <code>ProviderManager</code> в Javadocs.
 
Ссылка на <code>ProviderManager</code> встраивается в механизмы аутентификации, такие как фильтр обработки веб-формы аутентификации и он будет вызываться для обработки аутентификационных запросов. Провайдеры которые вам потребуется иногда будут взаимозаменяемы для механизмов аутентификации, а иногда будут зависеть от конкретного механизма аутентификации. Например, <code>DaoAuthenticationProvider</code> и <code>LdapAuthenticationProvider</code> совместимы с любым механизмом, который отправляет в запросе имя пользователя/пароль, и следовательно аутентификационный запрос будет работать как с использованием веб-формы или базовой HTTP аутентификации. С другой стороны, некоторые механизмы аутентификации создают такие объекты запроса аутентификации, которые могут быть понятны только одному типу <code>AuthenticationProvider</code>. Примером может служить JA-SIG CAS, который использует понятие сервисного тикета и таким образом может пройти аутентификацию только с помощью <code>CasAuthenticationProvider</code>. Вы не должны слишком беспокоиться по этому поводу, потому что если вы забудете зарегистрировать подходящий провайдер, то просто получите <code>ProviderNotFoundException</code> при попытке выполнить аутентификацию.