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

Содержимое удалено Содержимое добавлено
Строка 305:
 
== Поддержка OpenID ==
Пространство имен поддерживает использование входа в систему с помощью OpenID, вместо или совместно со входом в систему с помощью веб-формы, с помощью небольшого изменения конфигурации:
 
<source lang="xml">
<http>
<intercept-url pattern="/**" access="ROLE_USER" />
<openid-login />
</http>
</source>
 
Затем вы должны зарегистрировать у себя OpenID провайдера (такого например, как myopenid.com), и добавить информацию о пользователе в in-memory <code><user-service></code>:
 
<source lang="xml"> <user name="http://jimi.hendrix.myopenid.com/" authorities="ROLE_USER" /></source>
 
Теперь вы можете войти в систему, используя сайт myopenid.com сайт для аутентификации. Кроме того, для работы с OpenID можно выбрать конкретный бин <code>UserDetailsService</code>, установив атрибут <code>user-service-ref</code> элемента <code>openid-login</code>. Для дополнительной информации см. предыдущий раздел об аутентификационных провайдерах. Обратите внимание, что в приведенной выше конфигурации, мы опустили атрибут <code>password</code>, так как этот набор данных пользователя используется только для загрузки полномочий пользователя. Случайный пароль генерируется внутри системы, предохраняя от случайного использования пользовательских данных как источника аутентификации в другом месте конфигурации.
 
=== Обмен атрибутами ===
Для OpenID поддерживается обмен атрибутами. Как пример, следующая конфигурация будет пытаться получить значения электронной почты и полного имени пользователя из провайдера OpenID и использовать их в своем приложении:
 
<source lang="xml">
<openid-login>
<attribute-exchange>
<openid-attribute name="email" type="http://axschema.org/contact/email" required="true" />
<openid-attribute name="name" type="http://axschema.org/namePerson" />
</attribute-exchange>
</openid-login>
</source>
«Тип» каждого OpenID атрибута это URI, заданный определенной схемой, в нашем случае это http://axschema.org/. Если для успешной аутентификации какой-то атрибут должен быть получен в обязательном порядке, то тогда можно установить атрибут <code>required</code>. Поддерживаемая схема и набор возможных атрибутов зависят от вашего OpenID провайдера. Значения атрибутов возвращаются как часть процесса аутентификации и впоследствии могут быть доступными с помощью следующего кода:
 
<source lang="java">
OpenIDAuthenticationToken token = (OpenIDAuthenticationToken)SecurityContextHolder.getContext().getAuthentication();
List<OpenIDAttribute> attributes = token.getAttributes();
</source>
 
<code>OpenIDAttribute</code> содержит: тип атрибута и запрашиваемое значение (или значения, в случае если атрибут допускает множество значений). Мы сможет увидеть больше примеров использования класса <code>SecurityContextHolder</code> когда будет рассматривать ключевые компоненты Spring Security в главе «Технический обзор».
 
== Добавление собственных фильтров ==
 
= Примечания =