Spring Security/Ключевые сервисы Spring Security: различия между версиями
Содержимое удалено Содержимое добавлено
Нет описания правки |
|||
Строка 9:
<code>AuthenticationManager</code> это просто интерфейс, поэтому реализация может быть какой угодно, в зависимости от нашего выбора, но как это работает на практике? Что делать, если нам нужно использовать несколько баз данных с аутентификационной информацией, или сочетание различных сервисов аутентификации, таких как база данных и сервер LDAP?
Реализация по умолчанию в Spring Security называется <code>ProviderManager</code> и вместо того, чтобы самостоятельно обрабатывать аутентификационный запрос, он делегирует это списку настроенных <code>AuthenticationProvider</code>'ов, каждый из которых в свою очередь запрашивается, может ли он выполнить аутентификацию. Каждый провайдер либо сгенерирует исключение, либо вернет полностью заполненный объект <code>Authentication</code>. Помните наших хороших друзей, <code>UserDetails</code> и <code>UserDetailsService</code>? Если нет, то вернитесь к предыдущей главе
Если вы используете конфигурирование с помощью пространства имен, то экземпляр <code>ProviderManager</code> создается и поддерживается автоматически, и вы только добавляете провайдеров аутентификации с помощью элементов пространства имен(см. Главу «Пространство имен»). В этом случае, вы не должны объявлять bean для <code>ProviderManager</code> в контексте приложения. Однако, если вы не используете пространство имен, то вы должны объявить его следующим образом:
|