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

Содержимое удалено Содержимое добавлено
Строка 250:
 
=== Обнаружение таймаута ===
 
Вы можете настроить Spring Security так, чтобы автоматически обнаруживать что присланный ID сессии является не корректным и перенаправлять пользователя на соответствующий URL. Это достигается с помощью элемента <code>session-management</code>:
 
<source lang="xml">
<http>
...
<session-management invalid-session-url="/sessionTimeout.htm" />
</http>
</source>
 
=== Управление параллельными сессиями ===
Если вы хотите ввести ограничения на способность одного пользователя войти в приложение, то Spring Security поддерживает эту возможность "из коробки" с помощью следующего простого дополнения. Прежде всего, необходимо добавить следующий слушатель в файл <code>web.xml</code>, чтобы Spring Security получал информацию о событиях в течение жизненного цикла сессии:
 
<source lang="xml">
<listener>
<listener-class>
org.springframework.security.web.session.HttpSessionEventPublisher
</listener-class>
</listener>
</source>
 
Затем добавить следующие строки в контекст приложения:
 
<source lang="xml">
<http>
...
<session-management>
<concurrency-control max-sessions="1" />
</session-management>
</http>
</source>
 
Это предотвратить возможность многократного входа в систему одного пользователя — второй вход в систему приведет к тому, что предыдущий вход будет считаться недействительным. Вам может потребоваться предотвратить возможность выполнить второй вход в систему, в этом случае вы можете использовать:
 
<source lang="xml">
<http>
...
<session-management>
<concurrency-control max-sessions="1" error-if-maximum-exceeded="true" />
</session-management>
</http>
</source>
 
Попытка выполнить второй вход в систему будет отклонена. Под «отклонена» мы понимает, что пользователь будет отправлен на страницу <code>authentication-failure-url</code>, если используется аутентификация с помощью веб-форм. Если попытка выполнить повторную аутентификацию будет предпринята с помощью не интерактивного механизма, такого например, как «запомни меня», то клиенту будет отправлена ошибка 402 «не авторизован». Если вместо сообщения об ошибке вы хотите использовать собственную страницу для показа ошибок, то используйте атрибут <code>session-authentication-error-url</code> элемента <code>session-management</code>.
 
Если вы используете собственный фильтр аутентификации для входя в систему с помощью веб-форм, то вам придется явно настроить поддержку управления параллельными сессиями. Дополнительная информация содержится в главе «Управление сессиями».
 
=== Защита от атак «Исправление сессии» ===
Существует потенциальная опасность атаки «исправление сессии», когда злоумышленник создает сессию, а потом побуждает другого (легального) пользователя войти в систему с той же сессией (например, отправив ему ссылку содержащую идентификатор сессии в качестве параметра). Spring Security автоматически защищает от этих атак, путем создания новой сессии при входе пользователя. Если вам не нужна эта защита или она конфликтует с другим требованиями, вы можете управлять поведением защиты, используя атрибут <code>session-fixation-protection</code> элемента <code><session-management></code>, который имеет три опции
 
* migrateSession — создает новую сессию и копирует в нее атрибуты из существующей сессии. Это поведение по умолчанию.
* none — ничего не делает. Останется оригинальная сессия
* newSession — создает новую «чистую» сессию без копирования в нее данных из существующей сессии.
 
== Поддержка OpenID ==
 
= Примечания =