Jan 23, 2010 01:18
Инструменты: Java 1.5, Spring Security 3.0.0, MySQL 5.1
Преамбула:
Те, кто свое приложение начинает строить на базе Spring,
наверняка не обходят вниманием Spring Security.
Spring Security поддерживает интеграцию аутентификации со многими технологиями.
Если планируете использовать СУБД для хранения информации о пользователях и их ролей,
то используйте JDBC реализацию UserDetailsService.
Варианты реализации:
Spring Security предлагает два варианта использования JDBC реализации UserDetailsService.
Вариант 1:
Используются только 2 таблицы - users и authorities
(см. Appendix A. Security Database Schema из Spring Security: Reference Documentation).
Таблица users содержит username, password, enabled.
Таблица authorities связывает пользователя с ролью.
Такой вариант подойдет для простых систем, с небольшим количеством ролей.
Вариант 2:
Расширяется таблицами groups, group_authorities, group_members.
Предоставляет роли посредством групп. Этот вариант более гибок
и его в большинстве случаев следует использовать.
userDetailsManager"
class="org.springframework.security.provisioning.JdbcUserDetailsManager">
dataSource" ref="dataSource" />
enableAuthorities" value="true" />
enableGroups" value="true" />
Spring Security допускает использование обоих вариантов одновременно,
но обязательно один из вариантов должен быть включен.
Совет:
В приложении предоставлены скрипты DDL для HSQL и PostgreSQL - модифицируйте их под свою СУБД.
Не поддавайтесь искушению расширить, скажем, таблицу users, или использовать данные таблиц через свои объекты Hibernate.
Пользуйтесь интерфейсом, предоставляемым самим Spring Security. Если потребуется расширение, создайте wrapper.
P.S:
Те, кто вел разработку на Spring Security 3.0.0.M.x, при переходе на 3.0.0.RELEASE будьте готовы к мелким изменениям в API.
spring,
java,
security,
mysql